当输入只有finishOnKey时,如何防止Twilio Gather挂断?

时间:2018-05-16 19:56:38

标签: twilio twilio-api twiml

我们有一个简单的案例,用户可以拨打我们的电话号码,在某些情况下需要输入PIN码,然后输入井号,进行身份验证并继续。在这种情况下,英镑符号被定义为我们的finishOnKey

如果用户输入PIN,一切都很完美。如果它有效,它们继续前进;如果不是,它会阻止它们。

但是,如果用户仅在没有任何先前输入的情况下击中英镑,则呼叫会挂断。

  • 这不会引起任何例外。
  • 我们的代码中没有任何其他地方列出的英镑符号作为挂断键。
  • 事实上,如果我将finishOnKey重新定义为星号,则行为仍然存在 - 如果用户只键入星号(但重要的是,它不再挂在英镑符号上),它会挂起。 / LI>

这让我相信,无论是内置于Twilio还是我的代码中可能缺少某些东西,但我无法想象。这是Twilio的预期行为,和/或如何防止这种行为?我们希望系统能够像用户输入无效的PIN一样做出反应。

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

来自<Gather> documentation on the action attribute

  

如果&#39;超时&#39;在呼叫者输入任何数字之前,或者如果呼叫者进入“完成”键,则会到达。在输入任何其他数字之前,Twilio不会向&#39;动作提出请求。 URL,而是继续使用<Gather>之后的动词继续处理当前的TwiML文档。

我认为您没有任何跟随<Gather>的TwiML,因为您希望它始终提交到action网址。我建议您<Say>向用户发送消息,然后<Redirect>返回相同的网址,有点像这样:

<Response>
  <Gather finishOnKey="#" action="https://example.com/gather_response">
    <Say>Please enter the PIN</Say>
  </Gather>
  <Say>We did not receive a PIN, please try again.</Say>
  <Redirect>https://example.com/gather</Redirect>
</Response>

如果有帮助,请告诉我。