Предотвратить таймауты распознавания речи IVR/VXML с длительным звуком предварительного распознавания?

Часть моего приложения VXML/GRXML IVR воспроизводит 2-3 минуты звука, а затем запускает настраиваемый контекстный Nuance OSDM через <subdialog>потом как меню.

Это приводит к ошибке тайм-аута на распознавателе, так как OSDM ожидает 2-3 минуты запросов, а не начинает их прослушивать только после того, как запросы завершены.

Я помню, как исправлял подобную проблему довольно давно, но не помню, как я ее исправил.

Есть ли свойство VXML или OSDM для выборки или тайм-аута, которые я могу использовать, чтобы "заставить" распознаватель ждать, пока сами запросы OSDM не начнут воспроизводиться?

2 ответа

Решение

В VoiceXML подсказки на самом деле не воспроизводятся при выполнении элемента подсказки, они скорее ставятся в очередь.

Подсказки в очереди будут воспроизводиться только

  1. когда переводчик достигает состояния ожидания (например, распознавания), или
  2. когда интерпретатор выбирает ресурс, в то время как атрибут 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, мы значительно сократили количество экземпляров.

Другие вопросы по тегам