我正在尝试完成一项有趣的任务。在使用VoiceXML时,我希望将呼叫者呼叫到一个号码,然后转移到号码#1。如果呼叫者未连接(无应答),则更改目的地号码,然后尝试将呼叫者连接到第二个号码。
支持技术人员向我提供了一些信息:
最好的选择是在JavaScript中定义一个数字列表,如果传输不成功,则弹出下一个列表,然后重复传输(这意味着传输的'dest'将是一个变量)。 / p>
但我不知道该如何解决这个问题,到目前为止,我无法找到任何可用于此的参考点。这可以通过使用PHP实现吗?
如何向VoiceXML添加JavaScript,允许我在传输标记上设置超时变量,然后在未连接调用者的情况下循环显示数字?
答案 0 :(得分:1)
假设您使用符合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>