双向流连接无法与 Gather 一起使用

问题描述 投票:0回答:1
stream twilio text-to-speech speech-to-text twilio-twiml
1个回答
0
投票

您所描述的 Stream 工作但 Gather 不工作的行为是您正在使用的 Twiml 的设计所致。 Twilio 按顺序处理 Twiml,直到“动词”完成后才继续处理。 Twiml 中的动词是“连接”和“聚集”。直播后您可以看到 Gather twiml:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Connect>
        <Stream url="wss://..."/>
    </Connect>
    <Gather speechTimeout="auto" speechModel="phone_call" enhanced="true" input="speech" action="/respond"/>
</Response>

另一种方法是仅使用 Gather Twiml,然后使用 Twilio REST API 来处理 Media Streams:

string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

TwilioClient.Init(accountSid, authToken);

var stream = StreamResource.Create(
    url: new Uri("wss://example.com/"),
    pathCallSid: "CAXXXXXXXXXXXXXXXXXXXXXXXXXXX"
);

您的应用程序需要从处于“收集”模式的调用中获取 pathCallSid,然后使用 Twilio REST API 启动该调用的媒体流。这种方法的一个问题是,Gather 似乎最适合通话的一小部分。

解决您提出的另一个问题:

完全通过流来完成吗

我在获取 StreamId、ConnectionId、CallId 时遇到问题 一个地方。

创建流时查看状态回调参数:

statusCallback 属性采用绝对或相对 URL 作为 价值。每当流启动或停止时,Twilio 都会生成一个 请求此网址

例如:

<Stream url="wss://..." statusCallback="http://yourapi.com..." />

发送到 statusCallback url 的参数包含 StreamSid 和 CallSid。

© www.soinside.com 2019 - 2024. All rights reserved.