Как предотвратить зависание Twilio Gather, когда на вход ТОЛЬКО FinOnKey? - PullRequest
0 голосов
/ 16 мая 2018

У нас есть простой случай, когда пользователь позвонит по нашему номеру телефона, и в некоторых случаях потребуется ввести PIN-код, а затем знак фунта для аутентификации и продолжения.В этом случае знак фунта определяется как наш finishOnKey.

Все работает отлично, если пользователь вводит PIN-код.Если это действительно так, они идут дальшеесли это не так, он блокирует их.

Однако, если пользователь ТОЛЬКО нажимает фунт, без какого-либо предшествующего ввода, вызов зависает.

  • Это не вызывает никаких исключений.
  • В нашем коде нет ни одного знака фунта в качестве ключа зависания.
  • Фактически, если я переопределю finishOnKey для звездочки, поведение сохраняется - оно зависаетесли пользователь только набирает звездочку (хотя, что немаловажно, он больше не зависает на знаке фунта).

Это наводит меня на мысль, что либо это встроено в Twilio, либо, возможно, что-тоЯ пропал в нашем коде, но я не могу себе представить, что.Это намеренное поведение от Twilio, и / или как это можно предотвратить?Мы бы хотели, чтобы система просто реагировала так, как если бы пользователь ввел неправильный PIN-код.

1 Ответ

0 голосов
/ 24 мая 2018

Разработчик Twilio здесь.

Из документации <Gather> по атрибуту action :

Если «тайм-аут» достигнут до того, как вызывающий абонент вводит какие-либо цифры, или если вызывающий абонент вводит значение «finishOnKey» до ввода любых других цифр, Twilio не будет запрашивать URL-адрес «действия», а вместо этого продолжит обработку текущий документ TwiML с глаголом, следующим сразу за <Gather>.

Я предполагаю, что у вас нет TwiML, следующего за вашим <Gather>, поскольку вы ожидаете, что он всегда будет отправляться на URL action. Я рекомендую вам <Say> сообщение для пользователя и затем <Redirect> обратно на тот же URL, примерно так:

<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>

Дайте мне знать, если это поможет.

...