后台接收事件

外呼型通话记录举例

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

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;

}
}
}

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

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