参考例子:http://docs.voxeo.com/ccxml/1.0-final/frame.jsp?page=createcall.htm
实现的功能(步骤或者是ccxml的执行顺序):先是进入ccxml,接着是进入到voicexml进行选择某个服务的对话,结束之后传递某个变量给ccxml,然后利用ccxml来进行转接电话
注意要点:
1、由voicexml传递的参数必须在ccxml和voicexml中都有声明
2、在voicexml中的参数声明是<var name="phoneNumber" expr="session.connection.ccxml.values.phoneNumber"/>
3、在ccxml中要有状态状态转移,在这个例子中使用的是initState变量,一步一步赋值,
4、在ccxml中要有event="connection.progressing"
5、在ccxml中的dest="'tel:+14087168081'"中的电话号码参照dest的规则
6、要拨的电话号码不能说中国大陆的,座机和手机都不支持(因为使用的voxeo),这里我只是用的美国的座机电话试的,800的电话不行
7、这不是标准的ccxml,这是基于voexo上的ccxml
8、查看log的日志也需要在voexo的网页上去查看
9、我是使用skype和google voice进行的测试
下面是ccxml(使用的是voxeo的东西)
<?xml version="1.0" encoding="UTF-8"?>
<ccxml version="1.0" xmlns:voxeo="http://community.voxeo.com/xmlns/ccxml">
<var name="inboundID"/>
<var name="outboundID"/>
<var name="initState" expr="'state1'" />
<var name="phoneNumber" expr="'defaultvalue'"/>
<eventprocessor statevariable="initState">
<transition state="state1" event="connection.alerting">
<log expr="'***** INBOUND CONNECTION ALERTING *****'"/>
<assign name="inboundID" expr="event$.connectionid" />
<accept connectionid="inboundID" />
<assign name="initState" expr="'state12'"/>
</transition>
<transition state="state12" event="connection.connected">
<assign name="initState" expr="'state2'"/>
<log expr="'***** voicexml excute *****'"/>
<dialogstart src="'Haitao3.vxml'" namelist="phoneNumber"/>
</transition>
<transition state="state2" event="dialog.exit">
<assign name="initState" expr="'state3'"/>
<log expr="'***** CONNECTION.CONNECTED: INBOUND *****'"/>
<if cond="event$.values.phoneNumber == 'others'">
<createcall dest="'tel:+14087168081'" callerid="'1112223333'" connectionid="outboundID" timeout="'30s'"/>
<else />
<exit/>
</if>
</transition>
<transition state="state3" event="connection.progressing">
<log expr="'***** CONNECTION.PROGRESSING *****'"/>
<assign name="initState" expr="'state4'"/>
</transition>
<transition state="state4" event="connection.connected">
<assign name="initState" expr="'state5'"/>
<log expr="'***** CONNECTION.CONNECTED: INBOUND *****'"/>
<join id1="inboundID" id2="outboundID" duplex="'full'"/>
</transition>
<transition state="state5" event="conference.joined">
<log expr="'***** CONFERENCE JOINED: INBOUND LEG TO OUTBOUND LEG *****'"/>
</transition>
<transition event="connection.disconnected">
<log expr="'***** CONNECTION.DISCONNECTED *****'"/>
<exit/>
</transition>
<transition event="error.*">
<log expr="'CRIKEY AN ERROR HAS OCCURED: (' + event$.reason + ')'"/>
<exit/>
</transition>
</eventprocessor>
</ccxml>
下面是voicexml,这里主要是有几个选项,基本上这里放的都是录音
<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0">
<var name="phoneNumber" expr="session.connection.ccxml.values.phoneNumber"/>
<menu dtmf="true">
<prompt>
<audio src="welcome.wav">
</audio>
<enumerate>
<audio src="main1.wav"></audio>
<audio src="main2.wav"></audio>
<audio src="main3.wav"></audio>
</enumerate>
</prompt>
<choice next="#Shopping">Shopping</choice>
<choice next="#complain">complain</choice>
<choice next="#others">others</choice>
<noinput> Please say one of <enumerate/>
</noinput>
<nomatch>
<audio src="notunderstand.wav"></audio>
<audio src="main1.wav"></audio>
<audio src="main2.wav"></audio>
<audio src="main3.wav"></audio>
</nomatch>
</menu>
<form id="Shopping">
<block>
<audio src="welcome.wav"></audio>
</block>
<record name="msg" beep="true" maxtime="5s" finalsilence="1000ms" dtmfterm="true" type="audio/x-wav">
<prompt timeout="5s">
<audio src="whatbuy.wav"></audio>
</prompt>
<noinput>
<audio src="tryagain.wav"></audio>
</noinput>
</record>
<block>
<prompt>
<audio src="whatbuy.wav"></audio>
<audio expr="msg"/>.
<audio src="goodbye.wav"></audio>
<exit namelist="phoneNumber"/>
</prompt>
</block>
</form>
<form id="complain">
<record name="msg" beep="true" maxtime="5s" finalsilence="1000ms" dtmfterm="true" type="audio/x-wav">
<prompt timeout="5s">
<audio src="whatcomplain.wav"></audio>
</prompt>
<noinput>
<audio src="tryagian.wav"></audio>
</noinput>
</record>
<block>
<prompt>
<audio src="takecomplain1.wav"></audio>
<audio expr="msg"/>
<audio src="takecomplain2.wav"></audio>.
<audio src="goodbye.wav"></audio>
<exit namelist="phoneNumber"/>
</prompt>
</block>
</form>
<form id="others">
<block>
<audio src="otherselect.wav"></audio>
<audio src="goodbye.wav"></audio>
<assign name="phoneNumber" expr="'others'"/>
<exit namelist="phoneNumber"/>
</block>
</form>
</vxml>
分享到:
相关推荐
深圳市华琛科技有限公司(www.letsvv.com)新近推出的融合通信SaaS平台是国内领先的基于VoiceXML,CCXML,ASR,TTS,VOIP等相关技术构建的系统。用户可免费注册,免费用VoiceXML开发测试自定义融合通信应用系统,为...
CCXML(Call Control eXtensible Markup Language)是由W3C 推出的用于呼叫...作为呼叫控制标准的CCXML 与作为呼叫流程控制标准的VoiceXML 互相弥补,协同工作,可以打造各种各样从简单到复杂的灵活多变的语音应用系统
CCXML Version 1_0d.pdf
CCXML,W3C文档,讲解详细,呼叫控制xml,内容包含了3个小的例子源码
CCXML是在Solaris和Windows平台上的MPS系列系统上实现的。 CCXML用于电话平台、对话框管理器、外部客户端和可以为CCXML文档服务的服务器的接口。 对于那些嵌入调用控件的对话框管理器
欢迎来到CCXML / VXML的精彩词
一个很从cc服务器监控svn的通用配置的例子,全部用变量设置
ccs的一个例子工程,包括头文件,lib,cmd,等文件
本资源只针对TMS320F2835。里面共有4个文件夹,common和headers是创建DSP工程用的。Hello DSP是创建好的工程模板。examples是TI官方的例程。
完整的TMS2810的C程序例子 用于DSP学习开发 TMS2810
如何在CCSv6中添加对simulator的支持呢?实现C6678 软件仿真可按照如下步骤进行: 因为CCSv6与CCSv5.5比较类似,所以可以将CCSv5.5的simlutor功能移植过来。 (1) 拷贝整个CCSv5.5的目录ccsv5\ccs_base\simulation ...
TMS320VC5509A 在线烧写代码进EEPROM 。AT25F系列EEPROM。 Easy5509开发板在线烧写bin代码,CCS4.24版本。XDS100V2下载器。整个工程文件,包括一键out转bin软件
本系统是基于单片机 MSP430F6638 的,以Boost型升压电路为主电路的开关稳压电源。由MSP430产生PWM波,经UCC27211驱动单MOSFET管对直流斩波,通过软件控制调节PWM波占空比改变输出电压使其30V~36V可调。...
CCS5.5从零新建工程详细的步骤,非常适合新手 ,例子使用的是TMS320F28034芯片。资源中包含说明文档和工程文件。
语音会议管理器使用VoiceXML和CCXML来控制语音识别,文本到语音以及电话会议服务的语音生物识别。 说出姓名或电话号码,VCM会将他们加入通话。 可以托管在公共服务器上
2020年TI杯江苏省大学生电子设计竞赛——赛题+C题报告和代码(省二),该小车是基于TI公司的MSP432P401R launchpad制作的电动爬坡小车,采用传统的PID控制算法。通过红外循迹模块,实现小车的循迹和停车。