2015-09-02 4 views
0

Как вставлять varible в VXML. Рассмотрим следующий пример VXML,Как concat varible в 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} = {некоторая строка} + {некоторая переменная = значение}, я хочу, чтобы, как это, Есть url3 получить concating два значения.

ответ

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"/> 
+0

скажите, пожалуйста, как получить

+0

Я думаю, что я смущен вашей просьбой. Если вы хотите, чтобы входное значение находилось в URL-адресе, замените мое использование servleName именем поля, dtmf, поскольку оно будет установлено на входное значение. Вы уже предоставляете входные данные как часть аргументов запроса. –

+0

Спасибо, что я хочу, но хочу немного узнать о конкретных двух ** переменных vxml **. –

1

предыдущий ответ правильный, но позвольте мне добавить еще одну или две строки который показывает, как использовать namelist и field.

<field name="dtmf"> 

Это имя немного confusing.You're, определяющий имя переменной, и «» 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» установлен в число, и «действие» установлено на строку. Вы также можете сделать это вместо того, чтобы, если вам нужно:

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

поле «ответ» будет заполнена автоматически значением, выбранный пользователем. Вы также можете использовать так называемые «теневые переменные», если хотите, и отправить их; см. VoiceXML spechttp://www.w3.org/TR/2004/REC-voicexml20-20040316/#dml2.3.1.

Наконец, как говорит Джим,

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

Надеется, что это помогает.

+0

Спасибо, Это мне более полезно. –