4.11 语音菜单
语音菜单(menu)是 一种虚拟通话终端,通过播放语音提示和检测用户按键来实现一些自助服务的功能。比如:你拨打10086等客服电话时听到的"IVR语音导航"、语音验证码等。
基本原理
当一个呼叫和menu接通后,
播放语音文件: menu 向通话方播放提前录制好的提示音,比如:“欢迎致电XXX,查询余额请按1,业务办理请按2,停复机管理请按3,人工服务请按0”;
检测和汇报按键: 通话方听到提示音后,输入按键信息,menu检测到按键信息将其汇报给应用服务器。
做出响应: 应用服务器收到按键信息后,根据具体业务情况判断处理,并向OM发送对应的API,比如:将通话方跳转到下一个menu或转到分机进行人工服务。
三大特点
- 播放语音:可以向通话方自动播放一段提前录制好的语音内容,而不用人为参与。
- 检查和汇报按键:可以将通话方输入的按键内容(DTMF事件消息)汇报给开发者开发的应用服务器,应用服务器根据按键内容对该呼叫进行 菜单之间的跳转、转人工、信息录入等。
- 可同时复用:menu是虚拟的,所以一个菜单可以同时处理很多个呼叫,各个呼叫相互之间不受任何影响。比如来电A转接到 菜单 1后,菜单 1向A播放语音并检查A按键,此时如果来电B也转接到菜单1,菜单1又向B从头开始播放语音并检查B的按键;
应用场景
- 语音外呼:menu对外发起呼叫,实现自动语音外呼、批量外呼等;
- 内部转接:对呼叫进行内部转接,从一个菜单跳转到其它菜单、分机组、分机等,实现多级IVR(来电语音导航)、客服质量评分等;
- 呼分机:菜单呼叫分机,实现自动语音叫醒、语音通知等;
- 来/去电转语音信箱:客户听语音,按键,实现语音导航。
配置
使用menu之前需要先进行配置。menu只能通过API进行配置,OM的管理页面上并没有相应的配置项。
语音菜单的身份标识符(id)的有效范围为1~50。
配置的API
<?xml version="1.0" encoding="utf-8" ?>
<Control attribute="Assign">
<menu id="1">
<voicefile>welcome</voicefile>
<repeat>3</repeat>
<infolength>5</infolength>
<exit>#</exit>
</menu>
</Control>
如需同时配置多个语音文件,则每个语音文件之间用加号隔开即可,如:welcome.pcm+connect.pcm,语音文件的播放顺序为从左到右。 如:
<?xml version="1.0" encoding="utf-8" ?>
<Control attribute="Assign">
<menu id="1">
<voicefile> welcome.pcm+connect.pcm </voicefile>
</menu>
</Control>
也可以用数字加语音文件,如
<?xml version="1.0" encoding="utf-8" ?>
<Control attribute="Assign">
<menu id="1">
<voicefile> 200+welcome.pcm </voicefile>
</menu>
</Control>
参数说明
一个菜单的配置由三大部分构成:1)身份标识符 2)语音文件及其播放规则 3)按键汇报规则。
1. 身份标识符(id):使用菜单之前,您需要先进行配置,一台OM最多可配置50个菜单,一个id标示一个菜单,id有效范围为1~50,您必须在该有效范围内配置。
2. 语音文件及其播放规则
- 文件名称(voicefile):想要向通话方默认播放的语音文件名称(该文件需要提前上传到OM);
- 循环播放次数(repeat):想要该文件循环播放的次数。
3. 按键汇报规则
- 单次汇报按键的最大长度(infolength):通话方在该菜单下输入的按键达到指定个数后,OM一次性将这些按键信息汇报给应用服务器,而不必通话方按键一次OM就汇报一次;
- 输入结束符(exit):通话方在该菜单下输入了表示已输入完毕的某个指定符号(如:#)后,OM立刻将之前检查到的按键一次性汇报给应用服务器,而不必等到通话方输入长度达到infolength。
语音文件的播放说明:
何时开始播放:
呼叫接通时:菜单发起的呼叫,如:执行完“菜单外呼”和“菜单呼分机”的API请求后,需要等待被叫方接通后,OM才开始自动播放该菜单的语音文件;
呼叫转接到菜单时:已接通的呼叫,如:来电已经呼入到OM并且已经接通,此时执行“来电转菜单”的API请求,OM就立刻开始自动该菜单的播放语音文件。
何时停止播放:
完成配置的播放次数:当语音文件的播放次数满足该菜单配置的语音文件播放次数时,停止播放,并向应用服务器汇报语音文件播放完毕的事件消息(EndOfAnn);
按键打断:当语音播放过程中,通话方输入了按键时,停止播放;
通话中断:当通话方挂断,或呼叫被转接到其他终端,停止播放。
语音菜单相关接口
示例:配置、删除、查询、来电转menu、去电转menu、menu外呼、menu呼分机。
配置menu
<?xml version="1.0" encoding="utf-8" ?>
<Control attribute="Assign">
<menu id="1">
<voicefile>welcome</voicefile>
<repeat>3</repeat>
<infolength>5</infolength>
<exit>#</exit>
</menu>
</Control>
删除menu
将menu配置请清空,就表示删除该menu;
<?xml version="1.0" encoding="utf-8" ?>
<Control attribute="Assign">
<menu id="1">
<voicefile></voicefile>
</menu>
</Control>
查询menu
<?xml version="1.0" encoding="utf-8" ?>
<Control attribute="Query">
<menu id="1"/>
</Control>
来电转menu
<?xml version="1.0" encoding="utf-8" ?>
<Transfer attribute="Connect">
<visitor id="41" />
<menu id="1"/>
<voicefile>welcome</voicefile>
</Transfer>
去电转menu
<?xml version="1.0" encoding="utf-8" ?>
<Transfer attribute="Connect">
<outer id="14" />
<outer to="13012345678"/>
</Transfer>
menu呼分机
<?xml version="1.0" encoding="utf-8" ?>
<Transfer attribute="Connect">
<menu id="1"/>
<ext id="200"/>
</Transfer>
menu呼外部电话
<?xml version="1.0" encoding="utf-8" ?>
<Transfer attribute="Connect">
<menu id="1"/>
<outer to="13012345678"/>
</Transfer>