3、IVR 会议功能指南

3.1 示例说明

(1) 通过rest接口创建会议,也可以用3和4来实现创建会议;

(2) 会议创建成功后通过rest接口邀请加入会议;

(3) 使用IVR外呼或者呼入方式后提示用户:按1创建会议,按2加入会议;

(4) 用户按1后创建会议,会议创建成功后提示创建的会议id,播报完成后自动加入会议;

(5) 用户按2后提示用户输入8位会议id;

(6) 用户输入超时后提示用户加入失败重新输入8位会议id,用户再输入超时后放音提示挂机;

(7) 用户输入错误会议id后加入会议失败提示用户重新输入,只有输入正确后才能加入会议,否则需要用户自己挂机;

(8) 用户输入正确加入会议。

3.2 业务流程图

3.3 开发指南

(1) 调用rest接口创建会议接口

(2) 会议创建成功调用rest接口邀请加入会议

(3) 如果需要呼入或外呼的方式创建会议和邀请或有则调用IVR外呼接口发起rest请求/呼入接入号

(4) 呼叫成功云通讯平台会向客户创建应用时填写的ivr通知地址发送通知消息

(5) 第三方服务器获取到通知消息响应按键放音,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
    <Response>
        <Get action='firstget' numdigits='1' timeout='30'>
            <Play>confmenu.wav</Play>
        </Get>
        <Play>timeout.wav</Play>
        <Redirect tag='1'>gettimeout</Redirect>
    </Response>

说明:主命令为按键命令并且嵌套confmenu.wav的放音提示,在用户按键1就回调通知到'firstget'的地址,如果用户没有按键就会20秒超时后执行副命令,跳转通知gettimeout。

(6) 若用户按键超时播放timeout.wav语音,语音播放完或按键打断后业务流程重定向到Redirect指向的URL,重新执行按键放音的操作。

(7) 获取到通知消息继续3的流程提示用户按键,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
        	<Response>
        		<Get action='firstget' numdigits='1' timeout='30'>
        			<Play>confmenu.wav</Play>
        		</Get>
        		<Play>timeoutbye.wav</Play>
        		<Hangup/>
        	</Response>

说明:主命令为按键命令并且嵌套confmenu.wav的放音提示,在用户按键1就回调通知到'firstget'的地址,如果用户没有按键就会20秒超时后执行副命令,直接挂机。

(8) 用户按键完成向第三方服务器发送按键上报的通知

a)如果用户按1键,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
        <Response>
        	<CreateConf action='createconfok' maxmember='10' autojoin='false'/>
        </Response>
响应创建会议命令,创建会议成功后会通知到 'createconfok'地址

b) 如果用户按2键,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
        <Response>
        	<Get action='joinconfget' numdigits='8' timeout='30'>
          	<Play>confjoin.wav</Play>
          </Get>
          <Play>timeout.wav</Play>
        	<Redirect tag='2'>gettimeout</Redirect>
    		</Response>
获取按键命令,接收用户输入的会议ID,按键超时则跳转到gettimeout

c) 如果用户按其他键,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
    		<Response>
        	<Get action='firstget' numdigits='1' timeout='30'>
            <Play>confmenu.wav</Play>
        	</Get>
        	<Play>timeout.wav</Play>
        	<Redirect tag='1'>gettimeout</Redirect>
    		</Response>

(9) 收到用户按2键的通知,响应加入会议,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
    	<Response>
      	<JoinConf action='joinconfok' confid='$digits'/>
      	<Redirect>joinconffail</Redirect>
      </Response> 

说明:加入会议命令,加入会议成功会通知到 'joinconfok'

(10) 用户按1键成功创建会议给第三方服务器发创建成功的通知

(11) 获取到通知消息响应播放提示音并自动加入会议,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
    <Response>
    	<PlayMix type='40'>createconf.wav;$confid</PlayMix>
      <Redirect>autojoinconf</Redirect>
    </Response> 

说明:播放混合音命令播放会议ID,后跳转到 autojoinconf

(12) 语音文件播报完成定向到Redirect指向的URL:autojoinconf

(13) 第三方服务器获取不到通知响应加入会议,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
    <Response>
    	<JoinConf action='joinconfok' confid='$confid'/>
    	<Redirect>joinconffail</Redirect>
    </Response>

说明:加入会议命令

(14) 如果加入会议成功则向第三方服务器发送加入成功的通知消息

(15) 不需要后续流程,直接想用空命令即可,响应包体:

<Response>
		   <CmdNone/>
		</Response>

说明:不需要后续流程,响应空命令

(16) 如果加入会议失败则定向到Redirect指向的URL:joinconffail并重复5的流程,响应包体:

<?xml version='1.0' encoding='UTF-8'?>
    <Response>
    	<Get action='joinconfget' numdigits='8' timeout='30'>
    		<Play>confjoinfail.wav</Play>
      </Get>
      <Play>timeout.wav</Play>
      <Redirect tag='2'>gettimeout</Redirect>
    </Response> 

说明: 获取按键命令,接收用户输入的会议ID,按键超时则跳转到gettimeout

(17) 挂机后向第三方服务器发送挂机通知

(18) 挂机后响应空命令即可,响应包体:

<Response>
     <CmdNone/>
</Response>

说明:主命令为空命令,因为结束业务了不需要返回其他的IVR命令。

3.4 参考文档

(1) rest 会议管理接口文档

(2) IVR基础命令接口文档

(3) IVR基础通知消息接口文档

(4) IVR会议命令接口文档

(5) IVR 会议通知消息接口文档

文档更新时间:2016年9月7日