У меня есть интересная задача, которую я пытаюсь выполнить. При использовании VoiceXML я хотел бы, чтобы звонящий звонил на номер, а затем был переведен на номер №1. Если вызывающий абонент не подключен (нет ответа), номер получателя изменяется, а затем вызывающий абонент пытается подключиться ко второму номеру.
Служба поддержки сообщила мне немного информации:
Лучшим вариантом было бы определить список чисел в JavaScript, если передача не удалась, выдвинуть следующий список и повторить передачу (что означает, что ‘dest’ для передачи будет переменной).
Но я не уверен, как это сделать, и до сих пор я не могу найти какие-либо ориентиры для этого. Может ли это быть достигнуто с помощью PHP, может быть?
Как я могу добавить JavaScript в VoiceXML, который позволил бы мне установить переменную тайм-аута для тега передачи, а затем переключаться между числами, если вызывающий абонент не подключен?
Предполагая, что вы используете платформу, совместимую с VoiceXML 2.1, вы должны использовать что-то вроде <transfer type="consultation" destexpr="myDestinationVariable" connecttimeout="20s" />
,
Тем не менее connecttimeout
Атрибут не может быть выражением JavaScript, он должен быть литералом времени. Поэтому вам нужно генерировать VoiceXML на лету (с помощью PHP или чего-то еще), если время ожидания не является постоянным.
Если у вас может быть постоянное время ожидания, вы можете сделать что-то вроде (не проверено):
<?xml version="1.0" encoding="utf-8"?>
<vxml version="2.1" xml:lang="en-US" xmlns="http://www.w3.org/2001/vxml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<var name="destinations" expr="['5555551111', '5555551112', '5555551113']" />
<var name="currentDestination" expr="destinations.shift()" />
<form id="myForm">
<transfer name="transferResult" type="consultation" cond="currentDestination!=undefined" destexpr="currentDestination"connecttimeout="20s">
<filled>
<if cond="transferResult=='noanswer'">
<assign name="currentDestination" expr="destinations.shift()" />
<clear />
</if>
</filled>
<catch event="connection.disconnect.transfer">
<!-- transfer OK -->
</catch>
</transfer>
<block>
<!-- No more numbers to try -->
</block>
</form>
</vxml>
Других решений пока нет …