Свойство timeout собирательного глагола twilio предназначено для указания паузы в речи. Это приводит к нежелательному поведению.
В нашем приложении мы воспроизводим некоторый диалог, а затем ждем ответа с помощью команды collect.
Обычно в этом ответе есть некоторая задержка, и twilio ждет до указанного времени ожидания. Время ожидания по умолчанию составляет 5 секунд, которое в некоторых случаях может быть низким, поэтому мы увеличиваем его. Но это приводит к следующему поведению
--- ожидание запуска голоса, макс. 10 секунд --- голосовой пакет --- 10 секунд ожидания паузы ---
Таким образом, общее время ожиданияполучение ответа становится минимум 10 секунд, плюс время для начальной задержки и время, затрачиваемое на голосовой ответ
twiml.Response{
Say (response)
Gather ( 'input': 'speech', 'speechTimeout': speechTimeout, 'hints': "${keywords}", 'speechModel' : 'phone_call','action' : "${properties.baseUri}/api/twilio/voice-response", 'method' : 'Get')
Redirect ('method' : 'Get', "${properties.baseUri}/api/twilio/voice-response/timeout")
}
def res = writer
res
Мы устанавливаем значение тайм-аута динамически в зависимости от того, сколько задержки может быть для конкретного ответа.
Нам нужен способ указать время ожидания для первоначальной задержки при получении ответа или способ сказать, что ждать вечно, пока ответ не придет.
Пауза в речевом тайм-ауте должна быть независимой от этого начального времени задержки. При таком подходе аспект конца речи можно отделить от начальной задержки, когда речь даже не началась.
Неправильное использование этого значения задержки может привести к потере голосовых пакетов. Это делает использование «тайм-аута» не идеальным решением.
Буду признателен, если кто-нибудь предложит способ достижения этого.