Предотвратить таймауты распознавания речи IVR/VXML с длительным звуком предварительного распознавания?
Часть моего приложения VXML/GRXML IVR воспроизводит 2-3 минуты звука, а затем запускает настраиваемый контекстный Nuance OSDM через <subdialog>
потом как меню.
Это приводит к ошибке тайм-аута на распознавателе, так как OSDM ожидает 2-3 минуты запросов, а не начинает их прослушивать только после того, как запросы завершены.
Я помню, как исправлял подобную проблему довольно давно, но не помню, как я ее исправил.
Есть ли свойство VXML или OSDM для выборки или тайм-аута, которые я могу использовать, чтобы "заставить" распознаватель ждать, пока сами запросы OSDM не начнут воспроизводиться?
2 ответа
В VoiceXML подсказки на самом деле не воспроизводятся при выполнении элемента подсказки, они скорее ставятся в очередь.
Подсказки в очереди будут воспроизводиться только
- когда переводчик достигает состояния ожидания (например, распознавания), или
- когда интерпретатор выбирает ресурс, в то время как атрибут fetchaudio установлен на соответствующем элементе fetch.
Более подробная информация в спецификации VoiceXML 2.0, 4.1.8. Очередь запросов и сбор данных.
Как видите, нет директивы VoiceXML, которую можно использовать для явной очистки очереди подсказок. Хитрость заключается в том, чтобы указать fetchaudio где-то, чтобы удовлетворить #2.
Поэтому я бы предложил, чтобы вы принудительно воспроизводили очередь подсказок, указав fetchaudio
атрибут на subdialog
элемент. Поскольку вы действительно не хотите слышать fetchaudio, это может быть аудиофайл с молчанием 10 мс.
<block>
<prompt>
<audio src="audio/very_long_message.wav">
</prompt>
</block>
<subdialog src="osdm/custom" fetchaudio="audio/10ms_silence.wav"/>
...
</subdialog>
Обратите внимание, что пользователь не сможет войти в систему при запросе длинного префикса, но сможет сделать это во вспомогательном диалоге OSDM.
Учитывая, что вы заявили, что используете Nuance и OSDM, я отвечу за Nuance Recognizer 9 и Nuance Speech Server.
Обычно это происходит потому, что когда распознаватель не получает никаких запросов в течение определенного периода времени, он думает, что вызов завершен, и удаляет сеанс.
В NSSserver.cfg есть конфигурация (Конфигурация сервера речи Nuance):
server.mrcp1.rtsp.sessionTimeout VXIInteger 60000
или же
server.mrcp2.rtsp.sessionTimeout VXIInteger 60000
Я полагаю, что был бы компромисс для этого. Хотя вы можете удвоить или утроить это значение, это может означать, что ваша речевая лицензия будет связана дольше после завершения вызова. Я думаю, что значение, которое вы выбираете, зависит от вашей загрузки, длины приглашения и от того, как часто вы видите это.
Хотя мы все еще получаем случайный случай, обычно когда вызывающий абонент использует DTMF, мы значительно сократили количество экземпляров.