首页 > 解决方案 > 如何将语音流 websocket(目标是 Google Voice API)连接到 Twimlets 会议

问题描述

在我现有的应用程序中,我们使用https://www.twilio.com/labs/twimlets/conference功能:

var strURI = "http://twimlets.com/conference?Name=" + channelId.ToString() + "&Message=Welcome&Music=http://bter.com/radio/radio2.xml";
TwilioClient.Init(_twilioConfiguration.AccountSid, _twilioConfiguration.AuthToken);
var application = await ApplicationResource.CreateAsync(voiceUrl:new Uri(strURI), friendlyName: channelId.ToString());

然后,我的应用程序允许用户在他们的浏览器中加入一个特殊的音频会议桥以参与培训。它不涉及任何电话号码。

我们需要将流路由到 Google Speech to Text API,以便我们可以使用自定义字典。

在我找到并练习的例子中

twilio phone-numbers:update 14805551212 --voice-url http://b74c35a792ff.ngrok.io

似乎电话号码是在 Twilio 中配置的,因此在连接它时会打开一个到端点的 Web 套接字流(示例中很常见 ngrok 端点代理)。

在我的情况下,我希望以编程方式告诉动态创建的会议室向特定端点打开语音流(例如http://b74c35a792ff.ngrok.io)。

是否可以对 Twilio 进行 API 调用或可以添加到 twimlets.com/conference 的其他设置来实现此目的?

标签: websockettwiliotwilio-conference

解决方案


Twilio 开发人员布道者在这里。

当您在 Twilio 中使用语音 URL 设置电话号码时,它不会通过 Web 套接字连接。相反,当对 Twilio 号码进行电话呼叫时,它将向您提供的语音 URL发出 HTTP 请求,即webhook 。同样,当您通过 REST API 创建新调用并提供 URL 时,Twilio 将在调用连接时向该 URL 发出 HTTP 请求。

在这两种情况下,Twilio 都会向您的应用程序询问下一步操作的说明。这些指令是通过使用称为TwiML的 XML 子集响应 HTTP 请求来提供的。XML 元素和属性描述了 Twilio 在通话中接下来应该做什么,例如说出消息播放音频文件收集用户输入拨打另一个号码或加入会议

当您使用 Conference Twimlet 时,您提供的 URL 返回 TwiML 以将呼叫定向到会议。

Conference Twimlet 不提供任何方式从其中流式传输音频。实际上,除非您从字面上拨入会议本身,否则会议通常不会使获取音频变得容易。您可以设置将每个会议参与者的音频流式传输到您自己的 websocket 服务器,方法是在他们加入会议之前使用在重定向到会议 Twimlet 之前分叉他们的音频。<Start><Stream>

抱歉,这不是一个完整的答案,但希望对您有所帮助。


推荐阅读