将数据从VXML重新传输到Asterisk拨号方案

时间:2017-09-19 06:34:46

标签: asterisk sip voip vxml

如何在语音文件播放期间返回DTMF输入。     我正在从Asterisk拨号计划执行AGI,从vxml文件中我想返回收集的DTMF。     这是我的vxml

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<form id="top">
  <property name="inputmodes" value="dtmf"/>
  <field name="mydigits" type="digits?maxlength=1">
    <prompt>
      <audio type="audio/basic" src="http://127.0.0.1/soundfiles/mysound.wav"/>     
    </prompt>
    <grammar mode="dtmf" version="1.0">
    <rule id="digit" scope="public">
     <one-of>      
       <item> 1 </item>
       <item> 2 </item>
       <item> 3 </item>      
     </one-of>
    </rule>
    </grammar>    
  </field>
  <filled mode="any">    
    <return namelist="mydigits"/>
  </filled>
</form>
</vxml>

我从我的星号拨号计划中读到: -

;;this will call the local hosted vxml file above     
    exten => 1,n,Agi(agi://127.0.0.1/url=${vxmlurl})


;;try to read the data set at vxml file.    
exten => 1,n,Verbose(0, "got mydigits ${mydigits} !")

但除了Asterisk拨号计划变量之外,它没有任何其他内容。
我想念那里的什么?

2 个答案:

答案 0 :(得分:0)

你在使用Voximal吗? 如果要将值从Vox​​imal返回到Dialplan,最简单的方法是使用标签。 该值将通过变量VOXIMAL_RESULT传递到dialplan上下文通道。

答案 1 :(得分:0)

宾果。我能够通过exit元素传递它。

我能够从星号拨号计划中获得它。

我也在使用Voiceglue

在我的拨号计划中

exten => 1,n(PLAYAGI),Agi(agi://127.0.0.1/url=${vxmlurl})
exten => 1,n,Verbose(0, "got mydigits ${mydigits} !")

在我的vmxl mydigits中包含调用者输入的DTMF。

<exit namelist="mydigits"/>

vmxl解释器注意剩下的工作并将其设置为Asterisk变量,以便我可以作为普通变量访问 $ {mydigits}