Есть ли способ установить ограничение по времени для звонка в VXML? Например, если вызывающий заказывает интервал времени (скажем, 10 минут), через 10 минут можно ли добавить таймер в скрипт vxml, чтобы затем отбросить вызов или объявить, что вызов заканчивается? Основная функция, которую я ищу и, надеюсь, пример, это возможность установить ограничение по времени в vxml.
Вы не можете сделать это напрямую в VoiceXML, но вы можете использовать бесплатный стандарт CCXML для достижения этой цели. CCXML управляется событиями и может быть настроен как конечный автомат, который выполняет переход по событиям.
Вы можете настроить событие на тайм-аут после определенного периода.
<transition state="'init'" event="connection.CONNECTION_CONNECTED" name="evt">
<log expr="'ave liftoff.'"/>
<dialogstart src="'gimme.vxml'" dialogid="theDialog"type="'application/xml+vxml;platform=motorola'"/>
<assign name="state0" expr="'dialogActive'" />
<send event="'timeout'" target="session.id" delay="'20000'" />
</transition>
Элемент dialogstart запускает приложение VoiceXML. CCXML продолжает работать в фоновой обработке событий. Элемент send отправляет событие обратно в CCXML, и с помощью атрибута delay вы можете установить период времени. CCXML основан на веб-стандартах, поэтому вы можете динамически создавать XML-документ с соответствующим периодом задержки. Когда событие сработает, вы поймаете его в CCXML и закроете приложение VoiceXML.
<transition state="'dialogActive'" event="user.timeout">
<log expr="'A timeout occured'" />
<dialogterminate sessionid="theDialog" />
</transition>
Если ограничение по времени строгое, то ответ Кевина с CCXML — лучший выбор, поскольку он может прервать диалог. В противном случае вы можете программно проверять каждый переход формы или заполнение поля.