如何在vxml中连接变量
How to concat varible in 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 get concating两个值。
变化:
<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"/>
前面的答案是正确的,但让我再添加一两行来说明如何使用 namelist
和 field
。
<field name="dtmf">
那个名字有点confusing.You定义一个变量名,"dtmf"在文档的其他地方使用;让我们将其称为 "response" 以避免出现问题。
<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" 设置为数字,"action" 设置为字符串。如果需要,您也可以这样做:
<var name="foo" expr="'scream'"/>
<var name="action" expr="foo"/>
字段 "response" 将自动填充用户选择的值。如果愿意,您也可以使用所谓的 "shadow variables" 并发送它们;见 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"/>
希望对您有所帮助。
如何在 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 get concating两个值。
变化:
<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"/>
前面的答案是正确的,但让我再添加一两行来说明如何使用 namelist
和 field
。
<field name="dtmf">
那个名字有点confusing.You定义一个变量名,"dtmf"在文档的其他地方使用;让我们将其称为 "response" 以避免出现问题。
<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" 设置为数字,"action" 设置为字符串。如果需要,您也可以这样做:
<var name="foo" expr="'scream'"/>
<var name="action" expr="foo"/>
字段 "response" 将自动填充用户选择的值。如果愿意,您也可以使用所谓的 "shadow variables" 并发送它们;见 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"/>
希望对您有所帮助。