Twilio 检测是否有人回答

Twilio Detecting if a Human Answered

我的用例如下:允许用户输入多个联系人。尝试第一个联系人,如果用户没有接听,则尝试第二个,依此类推

我 运行 遇到的问题是 Twilio 似乎没有可靠的方法来确定是否有人回答 phone。我尝试了三种不同的方法:

  1. IfMachine - 这工作相当可靠,但我已经在 phones 上进行了测试,导致它认为它是一个人。我真的需要 100% 的准确率。

  2. StatusCallbackEvents - 我将状态事件发布到 public 端点。我希望这里有一些有用的信息,但似乎没有。

  3. 手动确定 - 我认为 status/duration 的某些组合会起作用,但在人工或语音邮件应答的某些情况下,持续时间似乎相同。我的猜测是语音邮件正在接听,但 Twilio 认为它是一个人,所以它播放消息并获得与人类接听相同的持续时间。

  4. "Call Screening" AKA Reverse IfMachine - 我有这个工作,要求用户按下一个键,按下该键后会收到另一条消息。但是,用户按下该键的事实并没有记录在任何地方。不在响应对象或 StatusCallbackEvents 中。

目前我最大的希望是呼叫筛选将数据(用户按下该键的事实)保存在我可以访问的地方。

如果您不想依赖 Twilio 机器|人工检测,我相信拨号是最好的方法。

如果您使用的是 TwiML,您可以在 <gather> 标签上设置回调。

https://www.twilio.com/docs/api/twiml/gather

The <Gather> verb collects digits that a caller enters into his or her telephone keypad. When the caller is done entering data, Twilio submits that data to the provided 'action' URL

这里是 Twilio 开发人员布道师。

感谢西蒙的回答。我只是想提供更多细节。

<Gather> and get the digits that the user entered you do indeed need to set an action attribute 用于您的应用可以响应的 URL。

<Response>
  <Gather action="/is_human" numDigits="1">
    <Say>This is a call for a human! If you are a human, press 1.</Say>
  <Gather>

  <Say>Did not receive input</Say>
  <Hangup/>
</Response>

然后,您的操作将像 phone 对话中的其他 webhook 一样接收 HTTP 请求,但包含一个参数 Digits,其中将包含用户按下的数字。

如果这有帮助,请告诉我。