如何在vxml中连接变量

时间:2015-09-02 10:53:02

标签: vxml

如何在VXML中连接变量。请考虑以下示例VXML,

<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/2001/vxml" version="2.0" xsi:schemaLocation="http://www.w3.org/2001/vxml  http://www.w3.org/TR/voicexml20/vxml.xsd">
    <form>
        <block>
            <audio src="{url1}"/>
            <audio src="{url2}"/>
        </block>
        <field name="dtmf">
            <option dtmf="1" value="1"/>
            <option dtmf="2" value="2"/>
            <option dtmf="2" value="3"/>
            <filled>
                <submit next="{url3}" namelist="action toneId dtmf" method="get"/>
            </filled>
        </field>
        <noinput>
            <reprompt/>
        </noinput>
        <nomatch>
            <reprompt/>
        </nomatch>
    </form>
</vxml>

{url3} = {some string} + {some variable = value},我想得到这样的结果,有url3得到两个值的结论。

2 个答案:

答案 0 :(得分:1)

变化:

<submit next="{url3}" namelist="action toneId dtmf" method="get"/>

<submit expr="{some string} + {some variable=value}" namelist="action toneId dtmf" method="get"/>

或更具体的例子:

<submit expr="'http://yourserver.com/api/' + servletName" namelist="action toneId dtmf" method="get"/>

答案 1 :(得分:1)

上一个答案是正确的,但是我还要添加一两行,说明如何使用namelistfield

<field name="dtmf">

该名称有点令人困惑。您正在定义变量名称,并且“dtmf”在文档的其他位置使用;我们称之为“响应”,以避免出现问题。

<field name="response">

您允许使用选项,这很好:

<option dtmf="1" value="1"/>
<option dtmf="2" value="2"/>
<option dtmf="2" value="3"/>

当然,值可以是任何值,例如

<option dtmf="1" value="meat"/>
<option dtmf="2" value="fish"/>
<option dtmf="2" value="dairy"/>

我想在此指出上面的value 接受ECMAScript值;它只是纯文本,是VoiceXML的一个奇怪之处。

设置要发送的其他变量的值:

<var name="toneId" expr="12"/>
<var name="action" expr="'scream'"/>

并且expr 确实需要ECMAScript表达式。 “toneID”设置为Number,“action”设置为String。如果您需要,也可以这样做:

<var name="foo" expr="'scream'"/>
<var name="action" expr="foo"/> 

字段“响应”将自动填入用户选择的值。如果你愿意,你也可以使用所谓的“阴影变量”并发送它们;请参阅VoiceXML spec http://www.w3.org/TR/2004/REC-voicexml20-20040316/#dml2.3.1

最后,正如吉姆所说,

<submit expr="'http://example.com/api/' + servletName" namelist="action toneId response" method="get"/>

希望这有帮助。