使用 Twilio API 拨打电话时如何收集用户输入?

问题描述

我正在用 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。然后,您可以选择对这些结果执行任何您喜欢的操作,包括挂断电话或记录提交的数字。

告诉我这是否有帮助。