问题描述
我正在用 C# 开发一个简单的应用程序
- 使用 Twilio 触发呼叫
- 接听者接听电话按*,按*结束通话
- 如果用户按下 * 则提供完成状态,否则提供不同的状态。
我能够拨打电话但无法接收用户输入或状态,我尝试了 <html>
<head>
<Meta name="viewport" content="width=device-width">
</head>
<body>
<video controls="" autoplay="" name="media">
<source src="http://uk3.internet-radio.com:8405/live" type="audio/aac">
</video>
</body>
</html>
但这没有用,并且它始终提供已完成的状态。我没有从 Twilio 代码示例中得到太多帮助,有人可以重定向到正确的文章或提供代码来完成上述操作。
解决方法
这里是 Twilio 开发者布道者。
一旦呼叫成功接听,无论呼叫如何结束,最终达到的状态都是“完成”。您可以查看有关 Twilio call statuses in this documentation 的更多信息。您可以看到最终的通话状态可能是:
- 已完成:成功接听电话,然后结束
- 无人接听:Twilio 拨打了该号码,但在超时前无人接听
- 忙:Twilio 拨打了号码但收到忙音
- 已取消:拨打了该号码,但在接听之前使用 API 取消了呼叫
- 失败:运营商无法接通电话
如果您使用 <Gather>
获取用户输入,则应确保已将 action
attribute 设置为应用程序中的 URL。当用户按下一个数字时,该 URL 将收到一个新的 webhook 请求。例如:
<Response>
<Gather action="/gather_results" digits="1">
<Say>... your content goes here ...</Say>
</Gather>
</Response>
使用上述 TwiML,用户只需按 1 个键,即可将呼叫移至下一阶段和 webhook '/gather_results'。
对 /gather_results
端点的请求将包含一个带有 Digits
参数的正文。如果用户按下“*”,则请求正文将包含 Digits=*
,如果用户按下“1”,则它将包含 Digits=1
。然后,您可以选择对这些结果执行任何您喜欢的操作,包括挂断电话或记录提交的数字。
告诉我这是否有帮助。