呼叫中心接口文档



1. 接口介绍

1.1 服务基地址

呼叫中心提供的 API 请求服务地址称之为服务基地址(下文中使用变量{BaseUrl}表示),{BaseUrl}为系统的登录地址, 可以是域名或者ip, 根据实际情况, 可能还需要加上目录. 如: http://120.1.1.1/admin/

实际提供的接口服务请求地址为"http://{BaseUrl}+[接口服务名]"。

1.2 接入认证

业务提供的 API 均采用加密认证方式。

此种认证方式下,将根据私有的 AppSecret 生成加密码进行鉴权。鉴权通过后,语音平台处理该请求消息。

说明:

AppKey 和 AppSecret可以在管理后台进行配置

1.3 加密规则

  1. 获取所有的需要传递的参数,作为一个数组

  2. 将加密数组中所有的 key 转换成小写

  3. 排除参数列表中的 sign 和值为空的数据,即 sign 的值和空数据不参与加密

  4. 对参数数组进行排序,按照 key 的名称升序排列

  5. 遍历参数数组,将值进行拼接

  6. 在拼接后的字符串后面再连接私有的秘钥,拼接后的字符串表示为$string

  7. 采用 sha1 进行加密,规则 sha1($string . sha1($secret)), $string 代表拼接后的字符串,$secret 代表私有秘钥

  8. 将生成的 sign 转换为小写



2. 接口说明

2.1 接口类型

接口分为两种类型:

  1. 基于http请求方式,例如:点击拨号、电话转接、示忙示闲等接口。

  2. 基于事件回调方式,例如:来电弹屏、分机状态等功能。

米糠云第三方开发接口调用方式分为以下几种:

  • GET请求:向接口地址发送GET请求,等同于通过浏览器访问接口地址。

  • 加载JS方式:在BS系统中包含代码<script type="text/javascript" src="接口地址"></script>。

  • 新窗口打开:打开新窗口,新窗口地址为接口地址。

第三方开发接口的部分功能需要jQuery支持,第三方系统在加载接口的时候可以从自己的系统中加载jQuery,也可以从第三方开发接口中加载,第三方开发接口jQuery地址为:

http://{BaseUrl}modules/interface/statics/js/jquery-1.3.2.min.js

接口地址http://{BaseUrl}?m=interface&c=index&a=init



3. 推送通话记录数据(CDR)

每一次电话挂断之后呼叫中心都会产生本次通话的通话记录,包括主叫号码、被叫号码、通话时长、通话录音等重要的信息。通话记录数据可以推送到指定第三方系统中。

3.1. 配置第三方接口地址

登录系统--->管理--->系统设置--->回调接口地址。配置好回调接口地址,保存。

3.2. 通话记录数据格式说明

格式说明:

数据格式:json格式

接收方式: 数据流接收

字段 类型 默认 字段说明
action string cdr 事件名称:cdr表标通话记录事件
starttime date 0000-00-00 00:00:00 开始呼叫时间
source String 号码 主叫号码
destination string 号码 被叫号码
did string 号码 呼入外线号码,例如中继号码
answertime date 0000-00-00 00:00:00 接通时间
billableseconds int 00 实际通话时长,也是计费时长。单位:秒
recordfile string 录音文件名 录音文件名:日期-时分秒-主叫号-被叫号-唯一标识.mp3
disposition string 通话状态 呼叫状态, ANSWERED 表示接通,NO ANSWER 未接,FAILED 失败。
lastapp string 最后执行的 最后执行呼叫流程
uuid string 自定义标识 自定义呼叫标识,与3.4电话呼出中的"account"字段关联
uniqueid string 呼叫唯一标识 当前呼叫唯一标识。
mixuniqueid string 全局呼叫唯一标识 全局呼叫唯一标识
calltype string {out、in、internal} 呼叫类型,out呼出,in呼入,internal内部通话
duration int 00 通话时长= 振铃时长+应答时长,单位:秒
hangup int {Caller、Callee} 挂断方,Caller主叫挂断,Callee被叫挂断
server string 服务器IP 呼叫中心服务器IP,多服务器集群使用。
endtime date 0000-00-00 00:00:00 通话结束时间

数据格式返回例子:

待完善

3.3. 第三方接口要求返回数据

返回格式:json格式

返回状态:

成功返回{"status":200}

失败返回{"status":404}

注:第三方接口一定要返回状态,如出现失败,数据会再次推送。

3.4. 失败重推机制

当呼叫中心接口推出通话记录数据,没有接收到第三方接口返回成功状态,系统认为是推送失败。会间隔一段时间进行重推, 重推时间间隔可设置

通话记录数据推送失败,系统会再尝试推送,默认次数为3, 时间间隔为60s, 180s, 600s



4. 电话弹屏

3.2.1 弹屏原理说明

米糠云呼叫中心系统的弹屏是基于事件驱动的,当有电话呼入或者呼出的时候呼叫中心的服务器会产生一个弹屏的消息,客户端通过socket连接上呼叫中心的服务器之后,注册弹屏事件,当服务器产生弹屏消息时会主动推送到客户端。米糠云第三方开发手册的"电话弹屏"接口已经封装了对弹屏消息的处理,对接方只需加载弹屏的接口地址,并传入对应的参数,即可触发弹屏。

根据传入的pop_type参数可以控制是在电话开始振铃(RING)的时候开始弹屏,还是在电话接通(LINK)之后弹屏。另外根据传入的open_type参数可以控制是直接打开一个新窗口(当open_type为1时),还是触发JS函数(当open_type为2时)。弹屏中其他的参数请参考3.1.2.

3.2.2 弹屏调用说明

功能描述:第三方系统加载弹屏接口后,当指定的分机通话(或振铃)时,系统将自动弹屏或进行JS回调。

接口地址:http://{BaseUrl}?m=interface&c=api&a=popscreen

调用方式:加载JS方式,需要jQuery支持,jQuery版本不得低于1.3.2。

接口参数:

  • extension:分机号码,指定要弹屏的分机号码,必填。无法监听多个分机,仅能监听一个分机的弹屏事件。

  • pop_url:弹屏地址,如果没有传递该参数,则使用接口配置页面设置的弹屏地址。

  • pop_type:弹屏时机,如果没有传递该参数,则使用接口配置页面设置的参数,有效值为RING(振铃时弹屏)、LINK(接通时弹屏)。

  • pop_out:呼入弹屏还是呼出弹屏,如果没有传递该参数,则使用接口配置页面设置的参数,有效值为ALL(呼入呼出都弹屏)、DialIn(仅呼入弹屏)、DialOut(仅呼出弹屏)。

  • open_type:弹屏方式,如果没有传递该参数,则使用接口配置页面设置的参数,有效值为1(弹出新窗口)、2(注册JS回调函数)。

  • mixcallback:JS回调函数名,如果没有传递该参数,则使用接口配置页面设置的参数,只有当弹屏方式为注册JS回调函数时才有效。弹屏时,若监听8001分机的呼入或者呼出弹屏:则会在触发时将JSON字符串'{"Event":"Popscreen","Poptime":"Ring","Callerid":"8001","CallerIDName":"","CID":"39434087","Calleeid":"13684910272","CalleeIDName":"","Recordfile":"20200525-104111-9001-13684910272-1590374471.195.wav","Uniqueid":"1590374471.195","DateTime":"2020-05-25 10:41:11","Server":"localhost","Method":"Dialout"}'将作为参数传递给JS回调函数。

  • 返回值:弹屏或JS回调,参数说明如下:

  • Callerid:主叫号码

  • Calleeid:被叫号码

  • RecordFile:本次通话的录音文件名

  • Uniqueid:唯一标识,是一个流水号

  • DateTime:日期时间

  • Method:呼入还是呼出,Dialout为呼出,Dialin为呼入

  • CID:出局CID号码,呼出弹屏具备此参数

  • DID:被叫号码,即公司的外线号码,呼入弹屏时具备此参数

3.2.3 弹屏接口演示页面

呼叫中心提供弹屏演示页面,该演示界面是弹屏接口调用的实例,弹屏演示界面的参数是通过接口配置页面进行配置的,实现的效果与向弹屏接口传递参数时一致。

弹屏演示界面,测试弹屏时extension参数是必需的:

3.2.4 转接弹屏参数说明

备注:座席系统D18以上版本、座席系统后台管理中心D23以上版本适用。

当转接的时候产生的弹屏消息中,主叫号码Callerid和被叫号码Calleeid均为呼叫中心内部分机,此时在弹屏消息中增加了MixExtVar参数,该参数值包含外线客户的手机号码。MixExtVar的值由多个字段组成,每个字段用"|"连接,例如:MixExtVar: XFRCallerID=15323736837|AutocallCustomfield=42900419870301095X。其中XFRCallerID是转接时的真实主叫号码。

3.2.5弹屏中获取主动外呼自定义字段说明

备注:座席系统D18以上版本、座席系统后台管理中心D23以上版本适用。

自动外呼应用到某些特殊的应用场景的时候,除了需要将手机号码在弹屏中显示出来,可能还需要将当次呼叫的订单号、客户的身份证等信息在弹屏中显示出来。在向主动外呼任务中添加数据时指定自定义字段参数(座席系统D18以上版本具备该选项),此时在弹屏消息中增加了MixExtVar参数,该参数值将包含自定义字段的值。MixExtVar的值由多个字段组成,每个字段用"|"连接,例如:MixExtVar: XFRCallerID=15323736837|AutocallCustomfield=429004198703010950。其中AutocallCustomfield是弹屏自定字段的值。

3.2.6 弹屏参数配置

在调用呼叫中心接口时,可以向接口传递参数,也可以在"接口参数配置页面"直接配置弹屏参数,实现的效果是相同的,在实际调用接口的过程中,建议直接向接口传递参数,避免其他人为误操作修改了弹屏参数造成系统弹屏功能异常。

主要参数说明如下:

  • 弹屏时机:用于控制弹屏的时间点。振铃时弹屏是指电话开始响铃就触发弹屏。接通时弹屏是指电话接通时触发弹屏。

  • 呼入弹屏:用于控制用户呼入的时候是否需要弹屏。

  • 呼出弹屏:用于控制座席呼出的时候是否需要弹屏。

  • 弹屏方式:是指呼叫中心产生弹屏事件之后,是如何触发弹屏的。弹出新窗口是在新的窗口中打开弹屏页面。注册JS回调函数是指触发一个JS函数,函数名称可以在界面配置,函数体可以自定义。

  • 弹屏地址:当弹屏方式为"弹出新窗口"时有效。

  • js回调函数:当弹屏方式为"注册JS回调函数"时有效。

接口参数配置页面如下:



5. 获取分机状态事件

推送分机状态事件数据。可以送到第三方服务端,也可以由客户端进行订阅。提供两种集成方案:

3.3.1 分机状态推送到服务端

第三方业务系统提供接收分机状态的事件接口,再由第三方系统服务端分发到客户端。

  1. 配置分机状态的事件接收接口。

登录系统--->管理--->系统设置。在"分机状态接推送地址"配置分机状态推送接口,"保存"。再拨打电话,即可实时接收到分机状态数据。如下:

待完善
  1. 分机状态事件的数据格式说明:

数据格式: json方式

接收方式: 数据流接收

字段 类型 说明 注释
event string 事件名称 分机状态事件:ExtensionStatus
exten string 分机号码 座席分机号码
status int 分机状态 取值:-1:不存在 0:空闲 1:通话中 2:忙 4:未注册 8:振铃中 16:保持中

实际数据实例:

  1. 第三方系统接口返回的状态。

不要求返回状态。

注:此方式要求第三方系统有客户端到服务端订阅机制。

3.3.2 分机状态由客户端订阅

加载分机状态接口,由客户端订阅分机状态的事件。

接口地址:http://{BaseUrl}?m=interface&c=api&a=command

调用方式:加载JS方式,需要jQuery支持,jQuery版本不得低于1.3.2。

分机状态事件数据格式:

字段 类型 说明 注释
event string 事件名称 分机状态事件:ExtensionStatus
exten string 分机号码 座席分机号码
status int 分机状态 取值:-1:不存在 0:空闲 1:通话中 2:忙 4:未注册 8:振铃中 16:保持中

返回值:当呼叫中心产生事件时,接口自动调用客户自定义的JS函数mixOnCallback,并将事件信息字符串作为参数传递给JS函数mixOnCallback。

其它说明:当接口加载完毕时,接口自动调用客户自定义的JS函数mixOnInit,订阅分机状态事件:

mixCommand("proxyaction: addcaptureevent\r\nevent: extensionstatus\r\nexten: 8004");

当用户没有自定义函数mixOnInit和mixOnCallback时,接口将不作出任何响应。

使用实例:

<!DOCTYPE html>
<html>
<head>
	<title>测试</title>
	<script type="text/javascript" src="http://www.mixcall.cn/admin/modules/interface/statics/js/jquery-1.3.2.min.js"></script>
	<script type="text/javascript" src="http://www.mixcall.cn/admin/?m=interface&c=api&a=command"></script>
	<script type="text/javascript">
		function mixOnInit(){
			$('#tip').html("接口加载完成");
			// 发送注册信息
			// 注册获取分机状态事件
			mixCommand("proxyaction: addcaptureevent\r\nevent: extensionstatus\r\nexten: 8004");
			// 注册来电遇阻事件
		}

		function mixOnCallback(str){
			$("#msg").append("<div>" + str + "</div>");
		}
	</script>
</head>
<body>
	<div id="tip">接口正在加载....</div>
	<div id="msg"></div>
	<script type="text/javascript">mixOnInit();</script>
</body>
</html>



6. 电话呼出

功能描述:该接口被调用时,呼叫中心的分机先振铃,分机被接起后,呼叫中心开始呼叫另一个分机或呼叫外线号码。

接口地址:http://{BaseUrl}?m=interface&c=api&a=dial

调用方式:GET请求

接口参数:

  • extension:主叫号码,必须为分机号码,必填。

  • extensionDst:被叫号码,可以为分机号码或外线号码,必填。

  • account:自定义标识,在通话记录中可以体现,可选项。

  • callerid:设置出局CID,可选项。

  • 返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}

其中

  • result:表示操作状态,1为操作成功,0为操作失败。

  • data:保存操作结果返回的数据信息,当result为1时,data里面保存本次操作返回的正确数据信息。

  • error:保存接口调用的错误码,当前接口版本中返回值全部为0,具体意义将在后续版本中陆续体现。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=dial&extension=7110&extensionDst=15323736837

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

其它说明:关于接口调用返回值格式,后面章节将不再重复说明。



7. 电话挂断

功能描述:当该接口被调用时,指定分机的通话将会被系统挂断。

接口地址:http://{BaseUrl}?m=interface&c=api&a=hangup

调用方式:GET请求

接口参数:

  • extension:要挂断通话的分机号码。

调用实例:http://{BaseUrl}?m=interface&c=api&a=hangup&extension=7110

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



8. 电话转接

功能描述:当A与B正在通话时(A与B至少有一个必须是呼叫中心分机),调用该接口可以让A、B两方中的一方电话挂断,让另一方去呼叫第三方C,从而实现A与C通话,或B与C通话。

接口地址:http://{BaseUrl}?m=interface&c=api&a=transfer

调用方式:GET请求

接口参数:

  • extension:要转接的分机号码。

  • extensionDst:转接的目的地号码,可以是分机,也可以是外线号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=transfer&extension=6203&extensionDst=7203

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



9. 手机拨打手机接口

功能描述:调用该接口可以实现手机mobile拨打手机mobileDst。当有类似以下的应用场景时可以使用该接口,某房地产销售公司的APP或者官方网站上,客户输入自己的手机号码之后点击呼叫按钮系统会先呼通房产经纪人手机号码,然后再呼叫客户的手机号码。

接口地址:http://{BaseUrl}?m=interface&c=api&a=mobiletransfer

调用方式:GET请求

接口参数:

  • mobile:主叫手机号码。

  • mobileDst:需要拨打的手机号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=mobiletransfer&mobile=13800000000&mobileDst=18911111111

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



10. 电话监听

功能描述:当A与B正在通话时,调用该接口时可以让系统向第三方C发起呼叫,第三方C接听电话后可以听到A与B通话的信息,但A与B是感觉不到的。根据参数的不同(option为w时),还能实现A、B双通,A、C双通,B、C单通,即C能听到B讲话,B不能听到C讲话。

接口地址:http://{BaseUrl}?m=interface&c=api&a=chanspy

调用方式:GET请求

接口参数:

  • extension:要监听的分机号码。

  • extensionDst:被监听的分机号码。

  • option:b为监听,w为密语。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=chanspy&extension=6203&extensionDst=7203&option=b

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



11. 电话拦截

功能描述:当呼叫中心分机A正在振铃时,调用该接口时系统会向B发起呼叫,B接起电话后与A进行通话,从而实现电话拦截的功能。当不指定拦截的分机时,系统将随机拦截一个振铃的通话。

接口地址:http://{BaseUrl}?m=interface&c=api&a=pickup

调用方式:GET请求

接口参数:

  • extension:要拦截的分机号码。

  • extensionDst:被拦截的分机号码,可以为空,为空时随机拦截一个振铃的电话。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=pickup&extension=7203&extensionDst=6203

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



12. 通话保持

功能描述:将当前分机未保持的通话进行保持(通话保持时,双方均进入听等待音乐的模式,无法通话),或对已保持的通话进行恢复(与被保持方继续通话)。

接口地址:http://{BaseUrl}?m=interface&c=api&a=hold

调用方式:GET请求

接口参数:

  • extension:要保持/恢复的分机号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=hold&extension=7203

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



13. 多方通话

功能描述:进行多方通话

接口地址:http://{BaseUrl}?m=interface&c=api&a=conference

调用方式:GET请求

接口参数:

  • extension:要加入多方通话的分机号码,多个号码之间使用英文逗号分隔。

  • number:要加入多方通话的外线号码,外地手机号码前面需要加0,注意呼叫中心系统呼出路由规则,多个号码之间使用英文逗号分隔。

  • room:电话会议的房间号码,如果不填写则由系统自动创建。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=conference&extension=6203&number=15323736837

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 操作成功
{
    "result": "1",
    "data": "201510211700042903",
    "error": 0
}
// data的值为会议房间号码。

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



14. 踢出电话会议成员

功能描述:根据会议房间号踢出电话会议成员

接口地址:http://{BaseUrl}?m=interface&c=api&a=kickConference

调用方式:GET请求

接口参数:

  • extension:需要剔除的电话会议成员。

  • room:电话会议的房间号码,调用多方通话接口返回的房间号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=kickConference&extension=6203&room=201508102036362592

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



15. 分机示忙/示闲

功能描述:将分机进行示忙、示闲操作。当分机A不方便接听电话时可以设置为示忙,那么有达到A分机的电话将被告知A正在通话中。分机示忙将导致此分机的电话无法呼入,但不会影响电话呼出。示闲与分机示忙是一个相反的状态。

接口地址:http://{BaseUrl}?m=interface&c=api&a=setdnd

调用方式:GET请求

接口参数:

  • extension:要操作的分机号码。

  • dnd:为-1时表示分机示闲,其它非空值为示忙,建议使用数字表示。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=setdnd&extension=6203&dnd=-1

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



16. 获取示忙状态

功能描述:获取分机的示忙状态。

接口地址:http://{BaseUrl}?m=interface&c=api&a=getdnd

调用方式:GET请求

接口参数:

  • extension:要操作的分机号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=getdnd&extension=6203

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 操作成功
{
    "result": "1",
    "data": "1",
    "error": 0
}
// data的值为-1表示分机示闲,否则分机为示忙状态

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}
// data的值不具参考意义。



17. 启用/禁用呼叫等待

功能描述:开启或禁用呼叫等待功能。

接口地址:http://{BaseUrl}?m=interface&c=api&a=callwait

调用方式:GET请求

接口参数:

  • extension:要操作的分机号码。

  • status: 1表示启用呼叫等待功能,0表示禁用呼叫等待功能。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=getdnd&extension=6203&status=1

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



18. 发送DTMF信号

功能描述:向与分机通话的另一方发送DTMF信号。

接口地址:http://{BaseUrl}?m=interface&c=api&a=senddtmf

调用方式:GET请求

接口参数:

  • extension:向与该分机通话的另一通道发送DTMF信号。

  • digits: 要发送的数据,如123456。

  • interval:各个字符发送的时间间隔,单位为毫秒,默认值为500。

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



19. 获取分机状态

功能描述:获取分机的状态。

接口地址:http://{BaseUrl}?m=interface&c=api&a=extenstatus

调用方式:GET请求

接口参数:

  • extension:分机号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=extenstatus&extension=6203

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

// 操作成功
{
    "result": "1",
    "data": "0",
    "error": 0
}
//data的值及其意义如下:-1:不存在。0:空闲。1:通话中。2:忙。 4:未注册8:振铃中。16:保持中。

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



20. 获取队列信息

功能描述:获取指定队列或所有队列的详细信息。

接口地址:http://{BaseUrl}?m=interface&c=api&a=queueinfo

调用方式:GET请求

接口参数:

  • queue:队列号码,不传递该参数时将获取所有队列信息。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=queueinfo&queue=90

返回值:

// 成功
{
    "result": "1",
    "data": {
        "90": {
            "queue": "90",
            "name": "sales",
            "ringtype": "记忆振铃",
            "max": "unlimited",
            "wait": "0",
            "maxwaittime": "00:00",
            "maxwaittimetag": "0",
            "holdtime": "3",
            "weight": "0",
            "abandoned": "3",
            "completed": "3",
            "servicelevel": "60",
            "servicelevelperf": "100.0%",
            "agents": {
                "6103": {
                    "exten": "6103",
                    "dnd": "-1",
                    "status": "0"
                },
                "6106": {
                    "exten": "6106",
                    "dnd": "-1",
                    "status": "0"
                },
                "6107": {
                    "exten": "6107",
                    "dnd": "-1",
                    "status": "0"
                }
            }
        }
    },
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}

成功的参数说明:

Array
(
    [90] => Array						----队列号码
        (
            [queue] => 90				----队列号码
            [name] => sales				----队列名称
            [ringtype] => 记忆振铃			----振铃策略
            [max] => unlimited			----最大等待人数
            [wait] => 0					----当前等待人数
            [maxwaittime] => 00:00			----当前等待人数
            [maxwaittimetag] => 0			----队列中是否有人在等待
            [holdtime] => 3				----平均等待时间
            [weight] => 0				----队列权重
            [abandoned] => 3				----未接来电
            [completed] => 3               ----已接来电
            [servicelevel] => 60			----服务级别时间
            [servicelevelperf] => 100.0%      ----服务级别时间内接通率
            [agents] => Array				----表示里面为队列成员信息
                (
                    [6103] => Array		----队列成员分机号码
                        (
                            [exten] => 6103	----分机号码
                            [dnd] => -1	----示忙状态,-1为示闲,其余为示忙
                            [status] => 0	----分机状态,0为空闲
                        )

                    [6107] => Array
                        (
                            [exten] => 6107
                            [dnd] => -1
                            [status] => 0
                        )

                    [6106] => Array
                        (
                            [exten] => 6106
                            [dnd] => -1
                            [status] => 0
                        )

                )

        )

)



21. 获取示忙列表

功能描述:获取分机示忙类型列表。

接口地址:http://{BaseUrl}?m=interface&c=api&a=busytypelist

调用方式:GET请求

接口参数:无

返回值:

// 操作成功
{
    "result": "1",
    "data": {
        "1": "下班",
        "2": "开会",
        "3": "休息"
    },
    "error": 0
}

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



22. 获取队列列表

功能描述:获取呼叫中心队列列表。

接口地址:http://{BaseUrl}?m=interface&c=api&a=queuelist

调用方式:GET请求

接口参数:无

返回值:

// 操作成功
{
    "result": "1",
    "data": {
        "90": "销售咨询",
        "91": "技术支持",
        "92": "投诉建议",
        "93": "人工服务"
    },
    "error": 0
}

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



23. 获取IVR列表

功能描述:获取呼叫中心IVR列表。

接口地址:http://{BaseUrl}?m=interface&c=api&a=ivrlist

调用方式:GET请求

接口参数:无

返回值:

// 操作成功
{
    "result": "1",
    "data": {
        "13": "WelcomeTop",
        "20": "FTwlecome",
        "21": "FT11",
        "24": "Unnamed"
    },
    "error": 0
}

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



24. 获取放音列表

功能描述:获取呼叫中心放音列表。

接口地址:http://{BaseUrl}?m=interface&c=api&a=annlist

调用方式:GET请求

接口参数:无

返回值:

// 操作成功
{
    "result": "1",
    "data": {
        "3": "test",
        "4": "中山联通",
        "5": "silence0",
        "6": "lc",
        "7": "xzm",
        "8": "FT1",
        "9": "FT2",
        "10": "FT3",
        "11": "上海测试"
    },
    "error": 0
}

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



25. 添加黑名单

功能描述:添加黑名单号码,添加进来的号码将无法呼入到呼叫中心。

接口地址:http://{BaseUrl}?m=interface&c=api&a=addblacklist

调用方式:GET请求

接口参数:

  • extension:要添加的黑名单号码,必须为外线号码,多个号码之间使用英文逗号分隔。

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



26. 删除黑名单

功能描述:将号码从黑名单中删除。

接口地址:http://{BaseUrl}?m=interface&c=api&a=delblacklist

调用方式:GET请求

接口参数:

  • extension:要删除的黑名单号码,必须为外线号码,多个号码之间使用英文逗号分隔。

返回值:

// 成功
{
    "result": "1",
    "data": "",
    "error": 0
}

// 失败
{
    "result": "0",
    "data": "",
    "error": 0
}



27. 获取黑名单列表

功能描述:获取呼叫中心黑名单列表。

接口地址:http://{BaseUrl}?m=interface&c=api&a=getblacklist

调用方式:GET请求

接口参数:无

返回值:

// 操作成功
{
    "result": "1",
    "data": "1351111111,1361111111",
    "error": 0
}
// data值为呼叫中心黑名单列表,多个号码之间使用英文逗号分隔

// 操作失败
{
    "result": "0",
    "data": "",
    "error": 0
}



28. 通话录音播放

功能描述:播放呼叫中心通话录音文件。

接口地址:http://{BaseUrl}?m=interface&c=api&a=record_play

调用方式:打开新窗口,新窗口地址为接口地址。

接口参数:

  • recording:录音文件绝对路径。

  • calldate:呼叫时间。

  • callerid:主叫号码。

  • dst:被叫号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=record_play&recording=/var/spool/asterisk/monitor/20150722-095943-7210-10086-1437530383.9679.WAV

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

说明:呼叫中心录音文件默认存放在目录:/var/spool/asterisk/monitor/,如果第三方调用录音播放接口时需要加上该存放地址。

返回值:在新窗口播放通话录音文件。



29. 通话录音下载

功能描述:下载呼叫中心通话录音文件。

接口地址:http://{BaseUrl}?m=interface&c=api&a=record_download

调用方式:打开新窗口,新窗口地址为接口地址。

接口参数:

  • filename:录音文件绝对路径。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=record_download&filename=/var/spool/asterisk/monitor/20150722-095943-7210-10086-1437530383.9679.WAV

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

说明:呼叫中心录音文件默认存放在目录:/var/spool/asterisk/monitor/,如果第三方调用录音下载接口需要加上该存放地址。

返回值:下载录音文件。



30. 录音上传接口

功能描述:支持通过form表单上传通话录音,一次可以上传多个文件,file域命名类似file1,file2...等,单个文件大小不超过1M

接口地址:http://{BaseUrl}?m=interface&c=api&a=uploadRecord

调用方式:form表单的action值

接口参数:无

返回值:

{
    "result": "1",
    "data": [
        "16"
    ],
    "error": 0
}

// 11:文件类型错误
// 12:上传错误
// 13:文件已经存在
// 14:上传失败,文件名称含有中文
// 16:上传成功



31. 移动座席登陆

功能描述:移动座席登陆

接口地址:http://{BaseUrl}?m=interface&c=api&a=mixUserLogin

调用方式:GET请求

接口参数:

  • user:分机号码。

  • device:设备号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=mixUserLogin&user=6203&device=1001

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

{
    "result": "1",
    "data": {
        "op": "login",
        "rev": "8008:7003",
        "status": 4,
        "content": "登陆成功"
    },
    "error": 0
}



32. 移动座席退出

功能描述:移动座席退出

接口地址:http://{BaseUrl}?m=interface&c=api&a=mixUserLogout

调用方式:GET请求

接口参数:

  • user:分机号码。

调用实例:

http://{BaseUrl}?m=interface&c=api&a=mixUserLogout&user=6203

调试说明:注册呼叫中心的分机之后,可以直接在浏览器的地址栏中运行接口测试接口,测试接口运行效果。如下:

待完善

返回值:

{
    "result": "1",
    "data": {
        "rev": "8008",
        "status": 3,
        "content": "登陆成功"
    },
    "error": 0
}



33. 座席登陆队列

功能描述:座席登陆队列

接口地址:http://{BaseUrl}?m=interface&c=api&a=singhead_command&method=queueadd

调用方式:GET请求

接口参数:

  • variable:接口参数,参数之间使用英文逗号分隔,例如90,Local/8001@from-queue/n,其中90要队列号码,8001分机要登陆队列的分机号码

返回值:

{
    "Response": "Success",
    "Message": "Added interface to queue"
}



34. 座席退出队列

功能描述:座席退出队列

接口地址: http://{BaseUrl}?m=interface&c=api&a=singhead_command&method=queueremove

调用方式:GET请求

接口参数:

  • variable: 接口参数,参数之间使用英文逗号分隔,例如90,Local/8001@from-queue/n,其中90要队列号码,8001

返回值:

{
    "Response": "Success",
    "Message": "Removed interface from queue"
}



35. 呼叫中心集成接口

呼叫中心控制面板将电话控制功能集成在一个面板上,在与呼叫中心进行对接时,如果需要使用呼叫中心的电话控制功能(呼叫、挂断、转接、抢接、通话保持、示忙示闲、三方通话等),可以直接调用该接口。详细参考"36.控制面板"。



36. 控制面板

功能描述:控制面板实现分机示忙/示闲,通话保持,电话挂断,电话呼出,电话转接,电话拦截功能以及实时显示分机状态。第三方系统只要包含控制面板接口,就可以显示控制面板及使用控制面板上的功能。

接口地址:http://{BaseUrl}?m=interface&c=api&a=panel,需要jQuery支持,jQuery版本需要在1.3.2以上。

调用方式:加载JS方式。

接口参数:

  • extension:控制面板分机号码

  • left:控制面板距离浏览器左侧边距

返回值:第三方BS系统中显示控制面板。

对接效果:



37. 座席监控

功能描述:实时监控呼叫中心座席状态,如分机状态、示忙状态,在权限允许的情况下还可以对相关座席进行电话控制操作,如示忙、强拆、密语等。

接口地址:http://{BaseUrl}?m=interface&c=api&a=agentmonitor

调用方式:加载JS方式。

接口参数:

  • extension:分机号码,说明当前监控座席监控界面的分机。

  • exturl:座席分机列表地址,为可选参数,如果不填则使用接口配置页面设置的参数。

  • height:座席监控高度,为可选参数,如果不填则使用接口配置页面设置的参数。

返回值:第三方BS系统中显示座席监控页面。

对接效果:

对接说明:

1、第三方系统中以加载JS方式加载以下代码:

http://{BaseUrl}?m=interface&c=api&a=agentmonitor&extension=6205&height=200exturl=http://www.abc.com

2、地址http://www.abc.com需要按照如下格式返回接口能够识别的xml数据:

<?xml version='1.0' encoding='utf-8'?>
<config>
	<agent>
		<node exten='8001' agent='张三'/>
		<node exten='8002' agent='李四'/>
		………………
	</agent>
	<auth>
		<node name='dndon' 		value='0' 	desc='示忙' />
		<node name='dndoff' 	value='1' 	desc='示闲' />
		<node name='dial' 		value='1' 	desc='呼叫' />
		<node name='transout' 	value='1' 	desc='转接' />
		<node name='transin' 	value='1' 	desc='强插' />
		<node name='hangup' 	value='1' 	desc='强拆' />
		<node name='chanspyb' 	value='1' 	desc='监听' />
		<node name='chanspyw' 	value='1' 	desc='密语' />
		<node name='chanspyw2' 	value='0' 	desc='求助' />
	</auth>
</config>

结构说明:

1、<agent>............</agent>之间的部分说明了当前extension需要监控的座席。exten是座席的分机号码,agent是座席的姓名。

2、<auth>............</auth>之间的部分说明了当前extension能够监控的权限范围,总共有如上所述的9种权限,name是权限的名称,value为1说明具有该权限,为0说明不具有该权限,desc是显示的名称。

3、实际测试中将http://www.mixcall.cn/替换为呼叫中心的IP地址。实际测试中http://www.abc.com需要是呼叫中心能够访问的地址。

4、演示实例请参考开发手册包中的附件文件夹《3.35座席监控演示实例》。



38. 队列监控

功能描述:实时监控队列里面的排队情况,查看队列详细信息及一些统计数据。

接口地址:http://{BaseUrl}?m=interface&c=api&a=queuemonitor

调用方式:加载JS方式。

接口参数:

  • extension:分机号码。

  • exturl:座席分机列表地址,为可选参数,如果不填则使用接口配置页面设置的参数。

  • height:座席监控高度,为可选参数,如果不填则使用接口配置页面设置的参数。

返回值:第三方BS系统中显示队列监控页面。

对接效果:



39. 获取数据接口

功能描述:获取呼叫中心数据,如通话记录、客户评价、语音留言等.

接口地址:http://{BaseUrl}?m=interface&c=api&a=getmsg

调用方式:GET请求

接口参数:

  • count: 获取数据的数量,最大值为10000。

返回值:

{
    "result": "1",
    "data": {
        "total": 12,
        "msg": [
            {
                "Event": "Cdr",
                "Privilege": "cdr,all",
                "AccountCode": "",
                "Source": "8001",
                "Destination": "8002",
                "DestinationContext": "from-internal",
                "CallerID": "\"8001\" <8001>",
                "Channel": "SIP/8001-000001d1",
                "DestinationChannel": "Local/8003@from-internal-0000b24f;1",
                "LastApplication": "Congestion",
                "LastData": "10",
                "StartTime": "2015-03-31 11:08:02",
                "AnswerTime": "",
                "EndTime": "2015-03-31 11:08:04",
                "Duration": "2",
                "BillableSeconds": "0",
                "Disposition": "FAILED",
                "AMAFlags": "DOCUMENTATION",
                "UniqueID": "1427771282.91759",
                "UserField": "INTERNAL_IN8002-8001-20150331-110802-1427771282.91759.WAV",
                "Server": "localhost",
                "Hangup": "Callee"
            },
            {
                "Event": "Cdr",
                "Privilege": "cdr,all",
                "AccountCode": "",
                "Source": "8001",
                "Destination": "8003",
                "DestinationContext": "from-internal",
                "CallerID": "\"8001\" <8001>",
                "Channel": "Local/8003@from-internal-0000b24f;2",
                "DestinationChannel": "",
                "LastApplication": "Congestion",
                "LastData": "10",
                "StartTime": "2015-03-31 11:08:04",
                "AnswerTime": "",
                "EndTime": "2015-03-31 11:08:04",
                "Duration": "0",
                "BillableSeconds": "0",
                "Disposition": "FAILED",
                "AMAFlags": "DOCUMENTATION",
                "UniqueID": "1427771284.91761",
                "UserField": "INTERNAL_IN8003-8001-20150331-110804-1427771284.91761.WAV",
                "Server": "localhost",
                "Hangup": "Caller"
            },
            {
                "Event": "Cdr",
                "Privilege": "cdr,all",
                "AccountCode": "",
                "Source": "8001",
                "Destination": "8002",
                "DestinationContext": "from-internal",
                "CallerID": "\"8001\" <8001>",
                "Channel": "SIP/8001-000001d0",
                "DestinationChannel": "Local/8003@from-internal-0000b24e;1",
                "LastApplication": "Congestion",
                "LastData": "10",
                "StartTime": "2015-03-31 11:07:54",
                "AnswerTime": "",
                "EndTime": "2015-03-31 11:07:57",
                "Duration": "3",
                "BillableSeconds": "0",
                "Disposition": "FAILED",
                "AMAFlags": "DOCUMENTATION",
                "UniqueID": "1427771274.91756",
                "UserField": "INTERNAL_IN8002-8001-20150331-110754-1427771274.91756.WAV",
                "Server": "localhost",
                "Hangup": "Callee"
            }
        ]
    },
    "error": 0
}

jso结构如下:

字段说明:

  • total: 12表示呼叫中心还剩下12条数据可供第三方系统获取,当total为0时表示呼叫中心数据全部被第三方系统获取完毕,第三方系统可以等待一段时间后再调用获取数据的接口,这样可以减轻呼叫中心服务器的压力。

  • msg:具体的数据。包括通话记录信息、服务评价信息、示忙示闲信息等。根据Event的值不同,分为不同的数据类型。

1、当Event为Cdr的时候说明该条数据是通话记录,通话记录的主要字段说明如下:

  • Source:主叫号码(长度80 字符)

  • Destination:被叫号码(长度80 字符)

  • DestinationContext:目的地context(执行的上下文)(长度80 字符)

  • CallerID:主叫认息(长度80 字符)

  • Channel:主叫通道(长度80 字符)

  • DestinationChannel:被叫通道(长度80 字符)

  • LastApplication:最后执行的应用(长度80 字符)

  • LastData:最后执行context(长度80 字符)

  • StartTime:呼叫开始的时间(0000-00-00 00:00:00)

  • Duration:整个呼叫的时间,从呼叫开始到结束,使用秒来计费(数据类型:整数)

  • BillableSeconds:整个呼叫通话的时间,从呼叫接通开始到结束,使用秒来计费(数据类型:整数)

  • Disposition:呼叫状态(接通-'ANSWERED',没有接通-'NO ANSWER',忙音-'BUSY',失败-'FAILED')

  • UniqueID:通话记录的唯一标识

  • UserField:录音文件名

  • Exten:电话呼出信元,即呼出电话时,cdr信息有此参数,表示分机号

  • Dname:被叫分机座席名称

  • Sname:主叫分机座席名称

  • CallType:呼叫类型,呼叫类型:internal内部通话;in呼入;out呼出

  • CID:出局CID,呼出时带此参数

  • DID:被叫号码,即公司的外线号码,呼入时带此参数

  • Hangup:挂断方,Caller表示主叫先挂断,Callee表示被叫先挂断

注意:其它一些参数目前用处不大,暂不作解释,呼叫中心作为保留参数。建议用户也写入表中,以备后用。

2、当Event为UserEvent的时候根据UserEvent取值不同具体又分为服务评价数据、示忙示闲数据。

①当UserEvent为MixComment时是服务评价数据,完整的数据结构如下:

字段说明如下:

  • CallerID: 主叫号码(长度20 字符)

  • CalleeID: 被叫号码(长度20 字符)

  • UniqueID: 呼叫中心产生的唯一标识,此值可以与通话记录中UniqueID关联(长度80 字符)

  • Key: 客户评价时输入的按键号,第二次才产生(长度2 字符或整型)

  • UserField: 录音文件名(长度200 字符)

注意:key对应的中文信息由第三方系统来自己定义维护,默认按键1、2、3,如1表示满意,2表示一般,3表示差。

②当UserEvent为MixDnd时是服务评价数据,完整的数据结构如下:

字段说明如下:

  • Exten:示忙示闲分机。

  • DND:示忙示闲类型,当DND为"-1"时,说明是示闲,其他状态时为示忙。