后台接收事件

外呼型通话记录举例

在这个示例中,我们将在服务端创建接收程序cdrlog用于记录呼叫记录,主要观察这些通话事件的规律,利用其去创建,更新通话数据。我们使用php+mysql实例代码举例,提供一种思路供开发者参阅。

  • 通话过程分析:
    1. 坐席席通过代码告诉CC我要给xxxx打电话;
    2. CC首先呼叫坐席的电话,此时坐席电话振铃;
    3. 坐席接起电话
    4. 当坐席接起电话时,CC才会向XXXX拨打电话,只有确认坐席可以正常通话时,客户才会被呼叫。
    5. (在坐席接起电话的同一时刻)客户电话振铃(通话开始,创建呼叫记录)
    6. 客户接听电话(通话应答,更新呼叫记录)
    7. 当有一方挂断电话时,整个通话就结束了(通话结束, 更新呼叫记录)
  • 情景分析:外呼是坐席主动给客户打电话,那么我们已知数据信息包括(这些已知信息会在坐席登录时获得)
    • 坐席工号$agentno
    • 坐席绑定的电话号码$agentphone
    • 团队标识$orgidentity
  • 事件观察:每个完整的通话是由多个事件组成,但是每个事件的sessionid都是相同的,也就是说sessionid是一通通话的标识。

source+event描述了当前通话的实际状态

这段代码逐条处理系统发出的事件,当收到振铃事件时,就创建一条新的呼叫记录,收到其它事件时就更新呼叫记录。

function cdr() {
if($data ['calltype'] == ‘dialout’){
	//如果是呼出事件
	 if($data['source'] == 'CALLEE' && $data['event'] == 'ringing'){
		//坐席外呼,客户开始振铃 ,此刻代表电话的开始,创建通话记录
	$src = (string)$agentphone; //电话发起方:坐席的电话
	$dst = (string)$data['activenum'];//被叫号码
	$starttime = $data['eventTime'];//事件时间就是通话的开始时间	
	$disposition = 'NOANSWER';//此刻是客户振铃,暂时等于未应答
	$target = 'DialOut';//标识通话记录是呼出
	$diallogid = $data['sessionid']; //此通通话的唯一标识
	$agentno;//坐席工号,标识是哪个坐席打的电话
		$orgidentity;//标识是哪个组织的电话记录
		If(!(SELECT * FROM 呼叫记录表 WHERE diallogid=$diallogid limit 1;)){
			//检查是否已经创建了这个通话的呼叫记录,如果没找到数据,说明可以创建呼叫记录,防止收到重复事件. 
			INSERT INTO 呼叫记录表 SET 以上变量;//将以上信息存入数据库
		}
}else if($data['source'] == 'CALLEE' && $data['event'] == 'answer'){
	//客户应答,更新呼叫记录
  $disposition = 'ANSWER';//应答了 更新成应答标识
  $answertime =$data['eventTime'];//通话应答时间
  UPDATE  呼叫记录表 SET 以上变量 WHERE diallogid=$diallogid limit 1;
}else if($data['source'] == 'CALLEE' && $data['event'] == 'hangup'){
	$endtime =$data['eventTime'];//双方通话结束时间
  UPDATE  呼叫记录表 SET 以上变量 WHERE diallogid=$diallogid limit 1;

}
}
}

  • 在cc上设置事件发送地址

接收团队事件,须在团队高级设置中填写“事件接收地址”⇒你的程序访问地址 登录服务器执行命令 /etc/init.d/asterccd restart

  • 处理话务事件

接收到的事件和通话实时事件获取中提供的数据是一样的,程序中可通过这些事件进行cdr记录。

zh/二次开发者指南/接口开发手册_v2.0/后台接收事件.txt · 最后更改: 2017/12/12 03:05 (外部编辑)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki