2. 使用说明
2.1 签入/签出功能
2.1.1 工号密码方式签入
接口名称:
CallCenter.opLogin(operator,pwd,companyid,logintype,auto,logingroups,url[,client_type,server_type,sip_id])
功能:坐席上班(登录),建立与通话服务的连接
参数:
参数名 | 类型 | 描述 |
operator | 字符串 | 必选,坐席工号 |
pwd | 字符串 | 必选,帐号密码(md5加密) |
companyid | 数字 | 必选,企业编号 |
logintype | 字符串 | 必选,登录方式, ‘0’手机 ‘1’硬话机 ‘2’软话机(webcall&webrtc) |
auto | 数字 | 必选,是否智能外呼,0否,1是 |
logingroups | 字符串 | 可选,系统推荐采用空字符串 坐席所在技能组的技能组id,多个以英文逗号隔开,坐席将登录这些技能组,直到退出。并且将设置最后一个技能组id为任务技能组,直到退出。 如果传入空字符串,则系统默认登录全部坐席所在技能组,并且随时根据当前系统任务,来决定坐席的预测任务技能组,预测技能组会根据后续任务状态的变化而变化 |
url | 字符串 | 必选,登录使用的url |
client_type | 数字 | 2020.1.4.1以下版本 可选,登录方式为软话机时,客户端类型 1 webcall(默认),2 BrowserSDK SIP话机或手机登录可不传 2020.1.4.1以上版本 必选,登录方式为软话机时,客户端类型 1 webcall,2webrtc 注:webRTC方式登录需要添加语音标签 <audio id="localVideo" autoplay></audio> <audio id="remoteVideo" autoplay></audio> <audio id="ringingVideo" loop src="./plugins/beep.wav"></audio> <audio id="ringingBackVideo" src="./plugins/CalledHangup.wav"></audio> |
server_type | 数字 | 可选,服务类型:1默认,CCS;2 CTI |
sip_id | 数字 | 可选,登录时使用的SIP话机号码 |
返回值:无,需要监听 logon 事件获取响应
事件参数名 | 参数类型 | 参数说明 | |
type | string | 固定值 logon | |
systemtime | string | 系统当前时间 时间格式 yyyy-MM-dd HH:mm:ss | |
status | int | 状态码 0 登录成功 1 参数没有传,登录受到licence限制,无法登录,websocket链接断开 2 坐席账号因在其它设备登录被挤下线时,当前设备会收到 logon 事件,状态码为2 3 坐席被班长强制签出时,坐席会收到 logon 事件,状态码为3 | |
reason | string | 原因 |
示例:
- // 监听事件获取服务响应
- CallCenter.addEventListener("logon",function(json){
- // json 响应数据
- // {"reason":"上班成功","type":"logon","systemtime":"2019-07-12 09:50:40","status":0}
- });
- // 监听事件获取初始化的通话信息
- CallCenter.addEventListener("callinfo",function(json){
- // json 响应数据
- //{"totalservicetime":0,"cmdtype":1,"aftertime_today":0,"totaltimes":0,"totaltimes_today":0,"busytime_today":0,"type":"callinfo","avgtimes":0}
- });
- // webcall连接失败监听
- CallCenter.addEventListener("webcallError",function(){});
- // 登录有可能失败,登录失败可以通过监听事件来处理相应业务
- CallCenter.opLogin_callback=function(json){
- // json 响应数据,json.code 为响应码(详见1.3响应码)
- };
- // 提供工号和密码进行登录
- CallCenter.opLogin('8000','96e79218965eb72c92a549dd5a330112',1,1,0,'','http://demo.acloudcc.com:8898',1,1, '')
注意:
登录类型为2(WebCall软话机)时,必须安装WebCall.x.x.x.x.exe(支持所有可用WebSocket的浏览器),IE8、Firefox51及以下,Chrome41及以下,需要在安装WebCall时需要勾选“支持IE8浏览器”。
2.1.2 logintype登录方式时的差异
2.1.3 通话的流程都需要经过“摘机”
“摘机”的过程实质是与“软电话进行通信的过程”,整个摘机的过程如下
2.1.4 SIP方式登录
接口名称:CallCenter.sipLogin(sip_id,sip_pwd,companyid,logintype,auto,logingroups,url[,client_type,server_type])
功能:坐席上班(登录),建立与通话服务的连接
参数:
参数名 | 类型 | 描述 |
sip_id | 字符串 | SIP账号 |
sip_pwd | 字符串 | SIP密码 |
companyid | 数字 | 企业id |
logintype | 数字 | 登录方式,0手机1硬话机2软话机 |
auto | 数字 | 是否智能外呼,0否,1是 |
logingroups | 字符串 | 可选,当启用智能外呼,可传入该技能组编号 |
url | 字符串 | 登录使用的url |
client_type | 数字 | 可选,登录方式为软化机时,客户端类型1 webcall(默认),2 ocx |
server_type | 数字 | 可选,登录类型1(默认,ccs),2 CTI版本 |
返回值:无,需要监听 logon 事件获取响应。(同1.1 工号密码方式登录)
登录成功时,还可以监听 callinfo 事件获取初始化的通话信息(同1.1 工号密码方式登录)
- 示例:
- // 监听事件获取登录响应
- CallCenter.addEventListener("logon",function(json){
- // json 响应数据
- // {"reason":"上班成功","type":"logon","systemtime":"2019-07-12 09:50:40","status":0}
- });
- // 监听事件获取初始化的通话信息
- CallCenter.addEventListener("callinfo",function(json){
- // json 响应数据
- // {"totalservicetime":0,"cmdtype":1,"aftertime_today":0,"totaltimes":0,"totaltimes_today":0,"busytime_today":0,"type":"callinfo","avgtimes":0}
- });
- // 登录有可能失败,登录失败可以通过监听事件来处理相应业务
- CallCenter.sipLogin_callback=function(json){
- // json 响应数据,json.code 为响应码(详见1.3响应码)
- };
- // 提供SIP帐号和密码进行登录
- CallCenter.sipLogin("8715457046540003","f47f5b2g",1,2,0,'','http://demo.acloudcc.com:8898')
注意:无
2.1.5 下班/退出
接口名称:CallCenter.logout()
功能:执行登出动作
参数:无
返回值:无,需要监听logout时间获取响应
事件参数名 | 参数类型 | 参数说明 | 是否必填 |
reason | string | 原因 | 必填 |
status | int | 状态码 0 正常 非0 错误 | 必填 |
systemtime | string | 系统当前时间 时间格式 yyyy-MM-dd HH:mm:ss | 必填 |
type | string | 固定值 logout | 必填 |
示例:
- // 监听事件获取下班响应
- CallCenter.addEventListener("logout",function(json){
- // json 响应数据
- });
- // 坐席下班
- CallCenter.logout();
注意:无
2.1.6 注册登录失败事件回调
接口名称:opLogin_callback
功能:无
参数:无
返回值:无
示例:无
注意:无
说明:opLogin_callback事件回调会接受一个参数,为登录失败返回的数据。json.code为登录失败的状态码,不同的状态码代表不同的失败原因。详情如下: | ||
0000 | 正确 | |
0003 | 坐席不存在 | |
0009 | 验证非法 | |
1001 | 用户名格式错误 | |
1002 | 没有绑定SIP话机 | |
1003 | 没有绑定电话号码 | |
1004 | 用户名或密码错误 | |
1005 | 帐号被禁用 | |
1007 | 帐号不存在 | |
1008 | 没有绑定技能组 | |
3001 | 必填参数为空 | |
9001 | 任务ID为空 | |
9002 | 任务不存在 | |
9003 | 任务状态有误 | |
9005 | SIP话机不存在 | |
9012 | 坐席所在的公司不存在 | |
9013 | 坐席所在企业被禁用 | |
9014 | SIP话机被1001@test坐席签入,联系管理员 | |
9015 | 输入的字符串不是纯数字 | |
9016 | 当前号码已被工号1001@test坐席签入,请联系管理员 | |
9017 | 存在特殊字符,请检查 | |
示例 | CallCenter.opLogin_callback = function(json){ console.log(json.code); // 状态码 console.log(json.info); // 提示信息 } |
2.1.7 注册登录失败事件回调
接口名称:sipLogin_callback
功能:无
参数:无
返回值:无
示例:无
注意:无
说明:sipLogin_callback事件回调会接受一个参数,为登录失败返回的数据。json.code为登录失败的状态码,不同的状态码代表不同的失败原因。详情如下: | ||
0000 | 正确 | |
0009 | 验证非法 | |
1001 | 用户名格式错误 | |
1002 | 没有绑定SIP话机 | |
1003 | 没有绑定电话号码 | |
1004 | 用户名或密码错误 | |
1005 | 帐号被禁用 | |
1007 | 帐号不存在 | |
1008 | 没有绑定技能组 | |
3001 | 必填参数为空 | |
9001 | 任务ID为空 | |
9002 | 任务不存在 | |
9003 | 任务状态有误 | |
9005 | SIP话机不存在 | |
示例 |
|
2.2 基本通话功能
2.2.1 示闲
接口名称:CallCenter.free()
功能:把座席设置为空闲,此时来电可以被分配到该座席
参数:无
返回值:无,需要监听 agentidle 事件来获取结果。
事件参数名 | 参数类型 | 参数说明 | 是否必填 |
reason | string | 原因 | 必填 |
status | int | 状态码 0 正常 非0 错误 | 必填 |
type | string | 固定值 agentidle | 必填 |
示例:
- // 监听事件获取示闲响应
- CallCenter.addEventListener("agentidle",function(json){
- // json 响应数据
- // {"reason":"示闲成功.","type":"agentidle","status":0}
- });
- // 请求示闲
- CallCenter. free()
注意:
坐席在签入、话后,示忙状态下,可以调用示闲接口。
坐席长签预测外呼,话机未接通的情况下,是不允许示闲的
2.2.2 示忙
接口名称:CallCenter.busy([typeId])
功能:把座席设置为繁忙,此时来电无法被分配到该座席
参数:
参数名 | 类型 | 说明 |
TypeId | int | 可选,示忙类型,默认值为0,typeId在Admin自定义非空闲类型配置。 |
返回值:无,需要监听 agentbusy 事件来获取结果。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 agentbusy |
status | int | 状态码 0 正常 非0 错误 |
reason | string | 原因 |
agentkey | string | 当前坐席唯一标识 工号@企业缩写 |
示例:
- // 监听事件获取示忙响应
- CallCenter.addEventListener("agentbusy",function(json){
- // josn 响应数据
- });
- // 请求示忙
- CallCenter. busy(12)
注意:签入座席才能发起示忙操作。
2.2.3 外呼
接口名称: CallCenter.callout(obj[,event,preview,transmission_number, caseid,userData])
功能:进行外呼,所传参数在发送到服务器时,SDK会过滤非数字的特殊字符(@除外)
参数:
参数名 | 类型 | 描述 |
obj | 字符串 | 呼叫外线号码时为呼叫号码字符串 呼叫本企业座席时,格式:工号@企业简称 |
INPUT元素 | 传入INPUT元素时,第二个参数event传入一个键盘事件对象。 如果在此元素点击的按键为回车(Enter),将使用此元素的value进行外呼。 | |
event | KeyboardEvent | 可选。 第一个参数传字符串时该参数传空(null) 第一个参数传入INPUT元素时,判断按键是否为在dom元素敲了回车,回车时会执行外呼动作。 |
preview | string | 手拨外呼时传空字符串(””)。 预览外呼时传JSON字符串 { “taskid”:123, // 任务ID “contactid”:23, // 联系人ID “fieldid”:12, // 号码类型ID “p_uuid”:23, // 联系人唯一标识,对应uuid1 “pds_station_no”:23, // PDS站点号 “uuid”:’’, // 电话号码唯一标识,业务系统传空 “call_round”:1 // 呼叫轮次 } |
transmission_number | string | 可选,无值时传null或空字符串(""),如果允许透传,使用此参数传入透传号码 |
caseid | string | 可选,无值时传null,该参数依赖于CCS版本支持 |
userData | object | 数据 { userData:{}, // 定义随路数据 uuiData:””, // 定义UUI数据 autoAnswer:"intercom" // 亿联话机自动摘机 } |
返回值:无,需要监听 makecall 事件获取响应。
事件参数名 | 参数类型 | 参数说明 | 是否必填 |
type | string | 固定值 makecall | 必填 |
status | int | 状态码 0 正常 非0 错误 | 必填 |
reason | string | 原因 | 必填 |
callid | string | 发起呼叫成功,产生的通话唯一标识 | 选填 |
示例:
呼叫外线示例:
- // 监听事件获取响应
- CallCenter.addEventListener("makecall",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","reason":"Success",
- "type":"makecall","status":0}
- });
- // 监听外呼坐席振铃事件
- CallCenter.addEventListener("outringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","userdata":"*","caller":"*",
- "origcaller":"8715628449220015","called":"*","nowgroupid":802,
- "type":"outringing","followData":"*","timestamp":1562897471}
- });
- // 监听外呼坐席摘机事件
- CallCenter.addEventListener("outcall",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","number":"*","type":"outcall"}
- });
- // 监听外呼用户振铃事件
- CallCenter.addEventListener("calledringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","userdata":"*","caller":"*",
- "origcaller":"8715628449220015","called":"*","nowgroupid":802,
- "type":"calledringing","followData":"*","timestamp":1562897471}
- });
- // 监听外呼用户摘机事件
- CallCenter.addEventListener("answer",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","caller":"*","type":"answer","called":"*"}
- });
- // 发起外呼
- CallCenter.callout("13685647542",null,"",null,null,{
- userData:{caller:"854658754",called:"125468597"},
- uuiData:"1542587745887744",
- autoAnswer:"intercom" // 亿联话机自动摘机
- });
- // 空闲时发起外呼
- CallCenter.addEventListener("agentidle",function(json){
- CallCenter.callout("13385768675",null,"",null,null,{
- userData:{
- caller:"854658754",
- called:"125468597"
- },
- uuiData:"1542587745887744",
- autoAnswer:"intercom" // 亿联话机自动摘机
- });
- });
呼叫坐席示例:
- // 发起呼叫坐席监听呼叫坐席失败事件
- CallCenter.addEventListener("innercallout",function(json){
- // json 呼叫坐席失败响应数据
- });
- // 发起呼叫坐席监听外呼事件获取响应
- CallCenter.addEventListener("makecall",function(json){
- // json 响应数据
- });
- // 发起呼叫坐席监听外呼坐席振铃事件
- CallCenter.addEventListener("outringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","userdata":"*","caller":"*",
- //"origcaller":"8715628449220015","called":"*","nowgroupid":802,"type":"outringing",
- //"followData":"*","timestamp":1562897471}
- });
- // 发起呼叫坐席监听外呼坐席摘机事件
- CallCenter.addEventListener("outcall",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","number":"*","type":"outcall"}
- });
- // 发起呼叫坐席监听接听呼叫坐席振铃事件
- CallCenter.addEventListener("calledringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","userdata":"*","caller":"*",
- //"origcaller":"8715628449220015","called":"*","nowgroupid":802,
- //"type":"calledringing","followData":"*","timestamp":1562897471}
- });
- // 发起呼叫坐席监听接听呼叫坐席摘机事件
- CallCenter.addEventListener("answer",function(json){
- // json 响应数据
- // {"callid":"24542515792953347","caller":"*","type":"answer","called":"*"}
- });
- // 接听呼叫坐席监听振铃事件
- CallCenter.addEventListener("innerringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953348","userdata":"*","caller":"*",
- //"origcaller":"8715628449220015","called":"*","nowgroupid":802,"type":"innerringing",
- //"followData":"*","timestamp":1562897911}
- });
- // 接听呼叫坐席监听摘机事件
- CallCenter.addEventListener("innercall",function(json){
- // json 响应数据
- // {"callid":"24542515792953348","userdata":"*","caller":"*",
- //"origcaller":"8715628449220015","called":"*","nowgroupid":802,"type":"innercall",
- //"followData":"*","timestamp":1562897911}
- });
- // 空闲时发起外呼
- CallCenter.addEventListener("agentidle",function(json){
- // 监听事件获取响应
- CallCenter.addEventListener("idleagents",function(json){
- // json 为返回的数据
- // {"type":"idleagents","data":[{"groupname":"测试技能组","groupid":802,
- "agents":["1001@test","1002@test"]}],"cmdtype":1}
- // 迭代获取到的坐席,视图事件触发时调用外呼接口
- CallCenter.callout(json.data[i].agents[j],null,"",null,null,{});
- });
- });
- // 获取空闲坐席
- CallCenter.idleagents();
注意:
· preview 参数仅在预览外呼时传,传JSON字符串格式,非预览外呼时传空字符串
· transmission_number 参数可用于在发起呼叫时改变主叫外显号码
· caseid 参数为定制版参数,推荐传null
· 坐席处于空闲或忙碌状态(启用忙碌外呼)才能调用外呼接口,2.1.1.24_42版本开始,允许坐席签入、空闲、忙碌、话后调用外呼接口
· 如果签入类型(loginType)为手机(0),外呼接口不要传参数{autoAnswer:”intercom”}
2.2.4 接听
接口名称:acceptcall()
功能:收到事件呼入、呼出、咨询振铃、转接振铃、监听、拦截、强插,并且使用软话机、Yealink硬话机或CTI方式时,可以调用接听
参数:无
返回值:无
示例:CallCenter. acceptcall()
注意:集成SDK时,在outringing、inringing、consultinringing、transferinringing、monitorringing、interceptaltering、agentinsertringing、innerringing 事件中可调用该接口
返回值:无
2.2.5 保持
接口名称:CallCenter.mute()
功能:通话中使双方无法听到对方的声音
参数:无
返回值:无,需要监听 mute 事件获取响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 mute |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
dir | int | 呼叫方向 0呼入 1呼出 |
示例:
- // 监听事件获取保持响应
- CallCenter.addEventListener("mute",function(json){
- // json 响应数据
- });
- // 请求保持
- CallCenter.mute()
注意:保持必须在通话中操作
2.2.6 取消保持
接口名称:CallCenter.unmute()
功能:恢复通话
参数:无
返回值:无,需要监听 unmute 事件获取响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 unmute |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
dir | int | 呼叫方向 0呼入 1呼出 |
示例:
- // 监听事件获取取消保持响应
- CallCenter.addEventListener("unmute",function(json){
- // json 响应数据
- });
- // 请求取消保持
- CallCenter.unmute()
注意:取消保持必须在保持状态下操作
2.2.7 静音
接口名称:CallCenter.callmute()
功能:静音当前坐席
参数:无
返回值:无,需要监听 callmute事件获取响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 callmute |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
dir | int | 呼叫方向 0呼入 1呼出 |
示例:
- // 监听事件获取取消保持响应
- CallCenter.addEventListener("callmute",function(json){
- // json 响应数据
- });
- // 请求取消保持
- CallCenter.callmute()
注意:保持必须在通话中操作
2.2.8 取消静音
接口名称:CallCenter.callunmute()
功能:恢复通话
参数:无
返回值:无,需要监听 callunmute事件获取响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 callunmute |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
dir | int | 呼叫方向 0呼入 1呼出 |
示例:
- // 监听事件获取取消保持响应
- CallCenter.addEventListener("callunmute",function(json){
- // json 响应数据
- });
- // 请求取消保持
- CallCenter.callunmute()
注意:取消静音必须在静音状态下操作
2.2.9 按键
接口名称:CallCenter.sendDTMF(key[,role])
功能:按键
参数:
参数名 | 类型 | 描述 |
key | String | 可传值为”0”~”9”、”*”、”#” |
role | Int | 可选,不传默认为0 0 用户侧DTMF 1 第三方DTMF |
返回值:无,可以监听 senddtmf 事件获取发送DTMF结果。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 senddtmf |
cmdtype | Int | 固定值 1 |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
注意:仅在通话中可调用
不能一次发送多个按键,调用一次接口只能发送一个按键
示例:
- // 正确的按键
- CallCenter.sendDTMF("1");
- CallCenter.sendDTMF("*");
- CallCenter.sendDTMF("#");
- // 错误的按键
- CallCenter.sendDTMF("10");
- CallCenter.sendDTMF("05");
- CallCenter.sendDTMF("4#");
2.2.10 挂机
接口名称:CallCenter.cancelmakecall()
功能:取消当前持有的呼叫
参数: 无
返回值:无,需要监听cancelmakecall、after事件接收响应
挂机请求失败时,可以监听cancelmakecall 事件处理相应业务逻辑。cancelmakecall事件响应数据
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 cancelmakecall |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
挂机成功时,可以监听after事件处理相应业务逻辑。after事件响应数据
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 after |
timestamp | string | 通话创建时间unix时间戳 |
recordcode | string | 录音文件码 |
operator_name | string | 坐席姓名 |
operator_id | int | 服务坐席工号 |
hangupdir | int | 挂机方向 0平台挂机 1对端挂机 |
mediano | int | 录音文件站点号,用于拼接录音下载地址 |
filename | string | 录音文件全路径,用于拼接录音下载地址 |
end_time | stirng | 这一路通话结束时间 yyyy-MM-dd HH:mm:ss |
duration | int | 通话时长s,坐席先挂机和用户先挂机会有不同,精确计算坐席与客户通话时长使用duration = end_time - answer_time。 |
dir | int | 呼叫方向 0呼入 1呼出 |
devicetype | int | 设备类型 |
device | string | 当前设备唯一标识 |
custId.uuid2 | string | Crm_uuid2(Admin的uuid2) |
custId.uuid1 | string | Crm_uuid (Admin的uuid) |
custId.uuid | string | 联系人唯一标识 |
custId.taskId | int | 任务id |
custId.station | string | pds站点号 |
custId.relationship | string | 和主号码关系 |
custId.phone | string | 呼叫号码 |
custId.name | string | 联系人名称 |
custId.call_phone_name | String | 号码字段名称 |
custId.cid | int | 联系人id |
custId.callRound | int | 呼叫轮次 |
custId.callColumn | int | 号码归属列 |
custId.call_count | int | 小结呼叫次数 |
custId.calltype | Int | 1预览,2预测 |
custId.afterTime | string | 话后时间 |
custId | json | 预测外呼任务数据 |
causeMsg | string | 挂机原因描述(部分版本支持) |
cause | int | 挂机原因 |
callid | string | 通话唯一标识 |
caller | string | 主叫 |
called | string | 被叫 |
begin_time | string | 这一路通话开始时间 yyyy-MM-dd HH:mm:ss |
auto | boolean | 是否为预测外呼 |
answer_time | stirng | 这一路通话应答时间 yyyy-MM-dd HH:mm:ss |
altering_time | string | 这一路通话振铃时间 yyyy-MM-dd HH:mm:ss |
rstime | string | 这一路通话录音开始时间 yyyy-MM-dd HH:mm:ss |
callerArea | json | 主叫号码归属地 { “provice”:””, // 省 “ city”:”” // 市 } |
calledArea | json | 被叫号码归属地 { “provice”:””, // 省 “ city”:”” // 市 } |
agentFileName | string | 取坐席侧的录音 |
挂机成功时,还可以监听callinfo事件统计的通话信息:
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 callinfo |
totalservicetime | int | 本次登录总服务时长 |
totaltimes | int | 本次登录总服务次数 |
avgtimes | int | 本次登录平均服务时长 |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
totaltimes_today | int | 今天总服务次数 |
busytime_today | int | 今天忙碌时长 |
aftertime_today | int | 今天话后时长 |
示例:
- // 监听事件获取挂机响应
- CallCenter.addEventListener("cancelmakecall",function(json){
- // json 响应数据
- // {"reason":"挂机成功","type":"cancelmakecall","status":0}
- });
- // 监听事件获取通话信息
- CallCenter.addEventListener("callinfo",function(json){
- // json 响应数据
- // {"totalservicetime":127,"cmdtype":1,"aftertime_today":0,"totaltimes":1,"totaltimes_today":1,"busytime_today":33,"type":"callinfo","avgtimes":127}
- });
- // 系统挂机响应
- CallCenter.addEventListener("after",function(json){
- // json 响应数据
- // json.cause 挂机原因码,详见【附1:挂机原因说明】
- /* {
- "callid":"24542515792953347","answer_time":"2019-07-12 10:11:13","auto":false,"called":"*",
- "operator_id":"1000","altering_time":"2019-07-12 10:11:12","end_time":"2019-07-12 10:13:20",
- "begin_time":"2019-07-12 10:11:11","cause":0,"recordcode":"*","type":"after","dir":1,"devicetype":"1",
- "duration":127,"operator_name":"1000","caller":"*","filename":"*","hangupdir":0,"mediano":1,
- "device":"24543615304581125","timestamp":1562897471,"causeMsg":"呼叫正常结束"
- }*/
- });
- // 请求挂机
- CallCenter.cancelmakecall()
注意:
² 进入通话过程才能操作挂机接口,如:振铃、通话中等。
² 通过mediano、filename可以按规则(详见附录11.2)拼接录音文件地址,下载录音文件
² callerArea、calledArea、rstime在CCSDK2.1.1.24_42以上版本支持
附1:挂机原因说明
CauseCode | Description | CauseCode | Description | CauseCode | Description |
0 | 呼叫正常结束 | 11 | 自动应答机接听 | 21 | 黑名单号码 |
1 | 关机 | 12 | 主叫用户早释 | 22 | 用户不在 |
2 | 停机 | 13 | 系统异常 | 23 | 用户未登录 |
3 | 暂时无法接通 | 14 | 系统路由错误 | 24 | 用户不在服务区 |
4 | 用户忙 | 15 | 应用服务器无应答 | 25 | 认证失败 |
5 | 久叫不应, 无人接听 | 16 | 用户未注册 | 26 | 应答但无声音 |
6 | 呼叫限制 | 17 | 用户无响应 | 30 | 正在通话 |
7 | 网络忙 | 18 | 空号 | 31 | 来电提醒 |
8 | 用户拒接 | 19 | 一般错误 | 32 | 等待提示:(请不要挂机) |
9 | 呼叫被转移 | 20 | 目的号码错误 | 33 | 无应答 |
10 | 传真机接听 | 35 | 不在服务区 |
2.3 班长座席功能
2.3.1 强拆
接口名称:CallCenter.agentbreak(agentoperatorid)
功能:班长功能,强制拆除指定座席的当前通话,使座席进入话后状态
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 格式:工号 |
返回值:无,需监听agentbreak事件获取响应
属性 | 类型 | 说明 |
status | int | 状态 0失败 1成功 |
reason | string | 描述信息 |
type | String | 固定值agentbreak |
monitor | int | 0被监控座席1发起监控座席 |
agentkey | string | monitor是班长,则返回班长的工号@企业缩写 当monitor是座席,则返回的是座席的工号@企业缩写 |
示例:
- // 监听事件获取强拆响应
- CallCenter.addEventListener("agentbreak",function(json){
- // json 响应数据
- });
- // 请求强拆
- CallCenter.agentbreak("1001");
注意:
仅班长坐席有效
班长坐席只有在坐席通话时才能调用此接口拆除通话
2.3.2 强插
接口名称:agentinsert(agentoperatorid)
功能:班长功能,强制加入到指定座席的通话中
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 班长座席工号 |
返回值:无,需要监听agentinsert事件获取响应
属性 | 类型 | 说明 |
type | string | 固定值agentinsert |
status | int | 状态码0成功 非0失败 |
reason | string | 原因 |
monitor | int | 0被监控座席1发起监控座席 |
班长强插成功,会收到强插振铃 agentinsertringing、强插接听 agentinsertincall 事件
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值agentinsert |
callid | string | 通话唯一标识 |
timestamp | string | 通话创建unix时间戳 |
caller | string | 主叫 |
origcaller | string | 原主叫 |
called | string | 被叫 |
nowgroupid | int | 当前技能组id |
userdata | json | 平台随入数据 |
followData | json | 用户随入数据 |
uuiData | string | user to user data |
事件参数名 | 参数类型 | 参数说明 |
uuiData | string | user to user data |
userdata | json | 平台随入数据 |
type | string | 固定值 agentinsertincall |
timestamp | string | 通话创建unix时间戳 |
origcaller | string | 原主叫 |
nowgroupid | int | 当前技能组id |
followData | json | 用户随入数据 |
callid | string | 通话唯一标识 |
caller | string | 主叫 |
called | string | 被叫 |
班长座席在强插通话中状态开始录音,在班长侧录音
示例:
- // 监听事件获取强插响应
- CallCenter.addEventListener("agentinsert",function(json){
- // json 响应数据
- });
- // 监听强插振铃事件
- CallCenter.addEventListener("agentinsertringing",function(json){
- // json 响应数据
- });
- // 监听强插接听事件
- CallCenter.addEventListener("agentinsertincall",function(json){
- // json 响应数据
- });
- // 请求强拆
- CallCenter.agentinsert("1001");
注意:
仅班长坐席调用
班长坐席只有在空闲或忙碌时且坐席处理通话时才能调用此接口加入通话
强插挂机:
班长挂机,坐席和用户继续通话。
坐席挂机,班长挂机,坐席去坐席所在技能组客户评价。
用户挂机,坐席和班长同时挂机。
2.3.3 强制示忙
接口名称:CallCenter.forcebusy(agentoperatorid)
功能:班长功能,强制把指定座席设置为忙碌
参数:
参数名 | 类型 | 描述 |
agentoperatorid | String | 坐席工号 |
返回值:
属性 | 类型 | 说明 |
type | string | 固定值 forcebusy |
status | int | 状态码 0 成功 非0失败 |
reason | string | 原因 |
monitor | int | 0被监控坐席 1发起监控坐席 |
示例:
- // 监听事件获取强制示忙坐席响应
- CallCenter.addEventListener("forcebusy",function(json){
- // json 响应数据
- // json.monitor 身份标识,1 班长,0 坐席
- });
- // 请求强制示忙坐席
- CallCenter.forcebusy("1001");
注意:
仅班长坐席可用。
班长坐席只有在登录、空闲、话后时才能将指定坐席示忙。
2.3.4 强制示闲
接口名称:CallCenter.forceidle(agentoperatorid)
功能:班长功能。强制把指定座席设置为空闲
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 格式:工号 |
返回值:无,需监听forceidle事件接收响应
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 forceidle |
status | int | 状态码 0 成功 非0失败 |
reason | string | 原因 |
monitor | int | 0被监控坐席 1发起监控坐席 |
示例:
- // 监听事件获取强制示闲坐席响应
- CallCenter.addEventListener("forceidle",function(json){
- // json 响应数据
- // json.monitor 身份标识,1 班长,0 坐席
- });
- // 请求强制示闲坐席
- CallCenter.forceidle("1001");
注意:
仅班长坐席可用。
班长坐席只有在登录、忙碌、话后时可能将指定坐席强制示闲。
2.3.5 座席监控
1、开启座席监控
接口名称:CallCenter.monitoragent()
功能:开始接收所有座席的状态消息
参数:无
返回值:无,需要监听monitoragent事件来获取响应
事件参数名 | 参数类型 | 参数说明 |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
data | jsonarray | 排队信息 |
type | string | 固定值 monitoragent |
data是一个jsonarray 里面的元素是json,json的格式如下:
属性名称 | 属性描述 | 是否必填 |
worktype | int | 坐席上班选择的话机类型 0话机 1sip话机 2webcall |
taskgroupid | int | 坐席签入的任务技能组id |
status | string | 欧西当前状态 |
operatorid | int | 工号 |
operate_time | string | 坐席状态最后变更时间 yyyy-MM-dd HH:mm:ss |
nowgroupid | int | 坐席所在当前技能组id |
name | string | 坐席姓名 |
groupids | jsonarray | 坐席所在技能组id的jsonarray |
companyId | int | 企业id |
caller | string | 坐席当前通话的主叫 |
called | string | 坐席当前通话的被叫 |
busydescr | int | 忙碌类型,只有在status为busy的情况下才有用,值为admin配置的忙碌类型的id |
auto | Boolean | 是否是预测外呼 |
agentKey | string | 工号@企业缩写 |
示例:
- // 监听事件获取坐席监控响应
- CallCenter.addEventListener("monitoragent",function(json){
- // json 响应数据
- /* {"type":"monitoragent","data":[{"auto":false,"nowgroupid":802,"worktype":2,"agentKey":"1000@wucb","companyId":152,"groupids":[802],"name":"1000","taskgroupid":0,"operatorid":"1000","status":"free","operate_time":"2019-07-12 16:00:38"},{"auto":false,"nowgroupid":802,"worktype":2,"agentKey":"1001@wucb","companyId":152,"groupids":[802],"name":"1001","taskgroupid":0,"operatorid":"1001","status":"busy","operate_time":"2019-07-12 15:59:32"}],"cmdtype":1}
- });*/
- // 请求监控坐席
- CallCenter.monitoragent();
注意:仅班长座席调用
2、结束座席监控
接口名称:CallCenter.closeMonitorAgent()
功能:停止接收所有坐席的状态消息。
参数:无
返回值:无,需要监听 unmonitoragent 事件来获取响应
示例:
- // 监听事件获取坐席监控响应
- CallCenter.addEventListener("unmonitoragent",function(json){
- // json 响应数据
- // {"type":"unmonitoragent","reason":"取消班长监控成功","status":0}
- });
- // 请求监控坐席
- CallCenter.closeMonitorAgent();
3、监控事件
3.1班长坐席开启监控后,每当有坐席签入预测技能组时,会收到 agentbegingroup 事件
事件参数名 | 参数类型 | 参数说明 |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
data | jsonarray | 排队信息 |
type | string | 固定值 agentbegingroup |
data是一个JSON数组,数组元素如下:
属性名称 | 属性描述 | 是否必填 |
operatorid | int | 工号 |
status | string | 欧西当前状态 |
name | string | 坐席姓名 |
companyId | int | 企业id |
operate_time | string | 坐席状态最后变更时间 yyyy-MM-dd HH:mm:ss |
agentKey | string | 工号@企业缩写 |
groupids | jsonarray | 坐席所在技能组id的jsonarray |
caller | string | 坐席当前通话的主叫 |
called | string | 坐席当前通话的被叫 |
worktype | int | 坐席上班选择的话机类型 0话机 1sip话机 2webcall |
auto | Boolean | 是否是预测外呼 |
busydescr | int | 忙碌类型,只有在status为busy的情况下才有用,值为admin配置的忙碌类型的id |
nowgroupid | int | 坐席所在当前技能组id |
taskgroupid | int | 坐席签入的任务技能组id |
示例:
- // 监听智能外呼坐席签入智能外呼任务技能组事件
- CallCenter.addEventListener("agentbegingroup",function(json){
- // json 响应数据
- });
- // 请求监控坐席
- CallCenter.monitoragent();
3.2班长坐席开启监控后,每当有坐席签出预测技能组时,会收到 agentstopgroup 事件
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 agentstopgroup |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
data | jsonarray | 排队信息 |
data是一个JSON数组,数组元素如下:
属性名称 | 属性描述 | 是否必填 | |
operatorid | int | 工号 | 必填 |
status | string | 欧西当前状态 | 必填 |
name | string | 坐席姓名 | 必填 |
companyId | int | 企业id | 必填 |
operate_time | string | 坐席状态最后变更时间 yyyy-MM-dd HH:mm:ss | 必填 |
agentKey | string | 工号@企业缩写 | 必填 |
groupids | jsonarray | 坐席所在技能组id的jsonarray | 必填 |
caller | string | 坐席当前通话的主叫 | 选填 |
called | string | 坐席当前通话的被叫 | 选填 |
worktype | int | 坐席上班选择的话机类型 0话机 1sip话机 2webcall | 必填 |
auto | Boolean | 是否是预测外呼 | 必填 |
busydescr | int | 忙碌类型,只有在status为busy的情况下才有用,值为admin配置的忙碌类型的id | 选填 |
nowgroupid | int | 坐席所在当前技能组id | 必填 |
taskgroupid | int | 坐席签出的任务技能组id | 必填 |
示例:
- // 监听智能外呼坐席签入智能外呼任务技能组事件
- CallCenter.addEventListener("agentstopgroup",function(json){
- // json 响应数据
- });
- // 请求监控坐席
- CallCenter.monitoragent();
3.3班长座席开启监控后,会收到monitorqueue事件
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 monitorqueue |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
data | jsonarray | 排队信息 |
data是一个JSON数组,数组元素如下:
属性名称 | 属性描述 | 是否必填 |
autonum | int | 预测技能组排队数量 |
groupid | int | 技能组id |
num | int | 呼入技能组排队数 |
示例:
- // 监听智能外呼坐席签入智能外呼任务技能组事件
- CallCenter.addEventListener("monitorqueue",function(json){
- // json 响应数据
- });
- // 请求监控坐席
- CallCenter.monitoragent();
2.3.6 耳语
接口名称:CallCenter.whisper(agentoperatorid)
功能:耳语功能,辅助座席服务客户。
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 格式:工号 |
返回值:
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 monitor |
status | int | 状态码 0 成功 非0失败 |
reason | string | 原因 |
monitor | int | 0被监控坐席 1发起监控坐席 |
发起耳语成功之后,班长会受到振铃monitorringing和接听monitorincall事件
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 monitorringing |
callid | string | 通话唯一标识 |
timestamp | string | 通话创建unix时间戳 |
caller | string | 主叫 |
origcaller | string | 原主叫 |
called | string | 被叫 |
nowgroupid | int | 当前技能组id |
userdata | json | 平台随入数据 |
followData | json | 用户随入数据 |
uuiData | string | user to user data |
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值monitorincall |
callid | string | 通话唯一标识 |
timestamp | string | 通话创建unix时间戳 |
caller | string | 主叫 |
origcaller | string | 原主叫 |
called | string | 被叫 |
nowgroupid | int | 当前技能组id |
userdata | json | 平台随入数据 |
followData | json | 用户随入数据 |
uuiData | string | user to user data |
班长座席在监听通话中开始录音,在班长侧开始录音
示例:
- // 监听事件获取耳语响应
- CallCenter.addEventListener("monitor",function(json){
- // json 响应数据
- // json.monitor 身份标识,1 班长,0 坐席
- });
- // 监听耳语振铃事件
- CallCenter.addEventListener("monitorringing",function(json){
- // json 响应数据
- });
- // 监听耳语接听事件
- CallCenter.addEventListener("monitorincall",function(json){
- // json 响应数据
- });
- // 请求耳语
- CallCenter.whisper("1001");
注意:
耳语功能仅对班长座席有效
耳语时用户听不到班长与座席通话
班长座席在空闲或忙碌状态下,才能调用此接口进行耳语
2.3.7 座席辅导
接口名称:CallCenter.instructAgent(agentoperatorid)
功能:座席辅导功能,辅助座席服务客户。
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 格式:工号 |
返回值:无,需要监听coach事件接收响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 coach |
status | int | 状态码 0 成功 非0失败 |
reason | string | 原因 |
monitor | int | 0被监控坐席 1发起监控坐席 |
type | string | 固定值 coach |
发起班长辅导成功后,班长座席会收到coachringing、coachcall 事件
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 coachringing |
callid | string | 通话唯一标识 |
timestamp | string | 通话创建unix时间戳 |
caller | string | 主叫 |
origcaller | string | 原主叫 |
called | string | 被叫 |
nowgroupid | int | 当前技能组id |
userdata | json | 平台随入数据 |
followData | json | 用户随入数据 |
uuiData | string | user to user data |
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 coachcall |
callid | string | 通话唯一标识 |
called | string | 诶叫 |
caller | string | 主叫 |
status | int | 状态码 0成功 1失败 |
monitor | int | 0被监控坐席 1发起监控坐席 |
示例:
- // 监听事件获取坐席辅导响应
- CallCenter.addEventListener("coach",function(json){
- // json 响应数据
- // json.monitor 身份标识,1 班长,0 坐席
- });
- // 监听辅导振铃事件
- CallCenter.addEventListener("coachringing",function(json){
- // json 响应数据
- });
- // 监听辅导接听事件
- CallCenter.addEventListener("coachcall",function(json){
- // json 响应数据
- });
- // 请求坐席辅导
- CallCenter.instructAgent("1001");
注意:
座席辅导功能仅对班长座席有效
班长座席在空闲或忙碌状态下,才能调用此接口进行座席辅导
班长辅导中,班长可以和坐席说话,用户听不到班长声音。坐席说话,班长和用户都听得到。用户说话,班长和坐席都听得到。
2.3.8 座席辅导静音
接口名称:CallCenter.silence()
功能:座席辅导时静音用户,用户被静音后听不到班长与座席的通话。
参数:无
返回值:无,需要监听silence事件接收响应
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 silence |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
示例:
- // 监听事件获取静音用户响应
- CallCenter.addEventListener("silence",function(json){
- // json 响应数据
- });
- // 请求静音用户
- CallCenter.silence();
注意:
静音功能只能在座席辅导时调用
静音功能只能在座席侧调用
2.3.9 座席辅导取消静音
接口名称:CallCenter.unsilence()
功能:座席辅导时取消静音用户,用户取消静音后恢复与座席的通话。
参数:无
返回值:无,需要监听unsilence事件接收响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 unsilence |
status | int | 状态码 0 成功 非0失败 |
reason | stirng | 原因 |
示例:
- // 监听事件获取取消静音用户响应
- CallCenter.addEventListener("unsilence",function(json){
- // json 响应数据
- });
- // 请求取消静音用户
- CallCenter.unsilence();
注意:
取消静音功能只能在座席辅导时调用
取消静音功能只能在座席侧调用
2.3.10 座席辅导挂机
1、 用户挂机
当用户离开辅导后,班长和坐席可以继续通话。坐席会收到 leaveuser 事件,响应数据 json.status为0
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值leaveuser |
status | int | 固定值0 |
示例:
- // 监听坐席辅导用户挂机事件
- CallCenter.addEventListener("leaveuser",function(json){
- // json 响应数据
- if(json.status===0){
- // 用户挂机了
- }
- });
2、 座席挂机
坐席挂机时,班长挂机,如果设置有客户评价,用户去坐席所在技能组进行客户评价,否则用户挂机。
3、 班长挂机
班长挂机时,坐席和用户恢复之前的通话状态。
如果坐席辅导前是外呼,则会收到 answer 事件;如果是接听呼入电话,则会收到 incall 事件。
座席辅导时发起转接、咨询、咨询IVR、转接IVR
1、 转接、咨询、咨询IVR
坐席辅导中,坐席进行转接,咨询,咨询ivr流程时,班长会收到 after 事件,再执行相关流程。
2、 转接IVR
坐席辅导中,坐席进行转接IVR时,坐席会收到 leaveuser、after 事件,响应数据json.status为1
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 leaveuser |
status | int | 固定值 1 |
示例:
- // 监听坐席辅导中转接IVR事件
- CallCenter.addEventListener("leaveuser",function(json){
- // json 响应数据
- if(json.status===1){
- // 转接IVR
- }
- });
- // 监听话后事件
- CallCenter.addEventListener("after",function(json){
- // json 响应数据
- });
2.3.11 监听
接口名称:CallCenter.monitor(agentoperatorid)
功能:班长功能。监听指定座席
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 格式:工号 |
返回值:无,需要监听monitor事件获取响应
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 monitor |
status | int | 状态码 0 成功 非0失败 |
reason | string | 原因 |
monitor | int | 0被监控坐席 1发起监控坐席 |
事件参数名 | 参数类型 | 参数说明 |
发起监听成功之后,班长会收到振铃 monitorringing 和接听 monitorincall 事件
事件参数名 | 参数类型 | 参数说明 |
called | string | 被叫 |
caller | string | 主叫 |
callid | string | 通话唯一标识 |
followData | json | 用户随入数据 |
nowgroupid | int | 当前技能组id |
origcaller | string | 原主叫 |
timestamp | string | 通话创建unix时间戳 |
type | string | 固定值 monitorringing |
userdata | json | 平台随入数据 |
uuiData | string | user to user data |
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值monitorincall |
callid | string | 通话唯一标识 |
timestamp | string | 通话创建unix时间戳 |
caller | string | 主叫 |
origcaller | string | 原主叫 |
called | string | 被叫 |
nowgroupid | int | 当前技能组id |
userdata | json | 平台随入数据 |
followData | json | 用户随入数据 |
uuiData | string | user to user data |
示例:
- // 监听事件获取监听响应
- CallCenter.addEventListener("monitor",function(json){
- // json 响应数据
- });
- // 监听振铃事件
- CallCenter.addEventListener("monitorringing",function(json){
- // json 响应数据
- });
- // 监听接听事件
- CallCenter.addEventListener("monitorincall",function(json){
- // json 响应数据
- });
- // 请求监听
- CallCenter.monitor("1001");
注意:
仅班长坐席有效
班长坐席只有在空闲或忙碌时才能调用此接口执行监听
监听挂机:
用户挂机,坐席和班长同时挂机
坐席挂机,班长挂机,用户去坐席对应技能组进行客户评价
班长挂机,坐席和用户继续通话。
2.3.12 拦截
接口名称:CallCenter.agentinterceptcall(agentoperatorid)
功能:拦截
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 座席工号 |
返回值:无,需要监听 agentinterceptcall 事件接收响应。
返回事件如下:
成功,则坐席和班长都能收到成功消息。
失败,则班长收到失败消息。
事件参数名 | 参数类型 | 参数说明 |
monitor | int | 0被监控坐席 1发起监控坐席 |
reason | string | 原因 |
status | int | 状态码 0 成功 非0失败 |
type | string | 固定值 agentinterceptcall |
发起拦截成功,坐席状态变更为拦截。之后受到拦截振铃和拦截接听。坐席侧被拆线挂机。
振铃事件:
班长坐席状态变更为拦截振铃
事件参数名 | 参数类型 | 参数说明 |
called | string | 被叫 |
caller | string | 主叫 |
callid | string | 通话唯一标识 |
followData | json | 用户随入数据 |
nowgroupid | int | 当前技能组id |
origcaller | string | 原主叫 |
timestamp | string | 通话创建unix时间戳 |
type | string | 固定值 interceptaltering |
userdata | json | 平台随入数据 |
uuiData | string | user to user data |
接听事件
班长坐席状态变更为拦截接听
事件参数名 | 参数类型 | 参数说明 |
called | string | 被叫 |
caller | string | 主叫 |
callid | string | 通话唯一标识 |
followData | json | 用户随入数据 |
nowgroupid | int | 当前技能组id |
origcaller | string | 原主叫 |
timestamp | string | 通话创建unix时间戳 |
type | string | 固定值 interceptcall |
userdata | json | 平台随入数据 |
uuiData | string | user to user data |
班长拦截通话中,在班长侧开始录音。
示例:
- // 监听事件获取拦截响应
- CallCenter.addEventListener("agentinterceptcall",function(json){
- // json 响应数据
- // json.monitor 身份标识,1 班长,0 坐席
- });
- // 监听拦截振铃事件
- CallCenter.addEventLisnter("interceptaltering",function(json){
- // json 响应数据
- });
- // 监听拦截接听事件
- CallCenter.addEventListener("interceptcall",function(json){
- // json 响应数据
- });
- // 请求拦截
CallCenter.agentinterceptcall("1001");
注意:无
2.3.13 强制签出
接口名称:CallCener.forcelogout(agentoperatorid)
功能:班长功能,强制签出指定强制座席登出
参数:
参数名 | 类型 | 描述 |
agentoperatorid | 字符串 | 格式:工号 |
返回值:无,班长坐席需要监听 forcelogout 事件获取响应,普通坐席需要监听 logon 事件获取响应
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 forcelogout |
status | int | 状态码 0 成功 非0失败 |
reason | string | 原因 |
注意:
示例:
- // 班长坐席监听强制签出事件
- CallCenter.addEventListener("forcelogout",function(json){
- // json 响应数据
- });
- // 普通坐席侧监听强制签出事件
- CallCenter.addEventListener("logon",function(json){
- if(json.status==3){
- // 我被班长强制签出了
- }
- });
- // 班长坐席强制签出坐席
- CallCenter.forcelogout("1001");
2.4 转接咨询功能
2.4.1 转接
2.4.1.1 转接到号码
接口名称:CallCenter.transfercall(phone,null[ ,userdata])
功能:将当前通话转接到指定号码
参数:
参数名 | 类型 | 描述 |
phone | String | 必选,转接到号码 |
null | -- | 必选,传null |
userdata | Object | 可选,数据 { outCall:ture // 是否盲转外线,true盲转,false普通转 } |
返回值:无,需要监听transfercall事件获取响应。
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值transfercall |
status | int | 状态码0正常1非正常 |
reason | string | 转接失败的原因 |
dir | int | 呼叫方向0呼入1呼出 |
示例:
- // 监听转接失败事件获取响应
- CallCenter.addEventListener("transfercall",function(json){
- // json 响应数据
- });
- // 监听转接处理中事件
- CallCenter.addEventListener("transfering",function(json){
- // json 响应数据
- // {"type":"transfering"}
- });
- // 监听话后事件
- CallCenter.addEventListener("after",function(json){
- // json 响应数据
- });
- // 转接到指定号码
- CallCenter. transfercall(“1568245875” ,null,{
- outCall:true // 使用盲转
- });
注意:CTI模式下,userdata参数需要传字符串数据
2.4.1.2 转接到坐席
接口名称:CallCenter.transfercall(agentid,groupid[ ,userdata])
功能:将当前通话转接到指定座席
参数:
参数名 | 类型 | 描述 |
agented | String | 必选, 转接到座席,格式:工号@企业缩写 |
groupid | int | 必选,转接到坐席的技能组id |
userdata | Object | 可选,数据 { userData:{},定义随路数据 uuiData:’’//定义UUI数据 } |
返回值:无,需要监听transfercall事件获取响应
属性 | 类型 | 说明 |
type | string | 固定值transfercall |
status | int | 状态码0正常1非正常 |
reason | string | 原因 |
dir | int | 呼叫方向0呼入1呼出 |
示例:
- // 监听转接失败事件获取响应(转接方)
- CallCenter.addEventListener("transfercall",function(json){
- // json 响应数据
- // {"reason":"取消转接或转接失败","type":"transfercall","dir":1,"status":1}
- });
- // 监听转接处理中事件(转接方)
- CallCenter.addEventListener("transfering",function(json){
- // json 响应数据
- // {"type":"transfering"}
- });
- // 监听话后事件(转接方)
- CallCenter.addEventListener("after",function(json){
- // json 响应数据
- });
- // 监听转接振铃事件(被转接方)
- CallCenter.addEventListener("transferinringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953352","userdata":"*","caller":"*",
- "origcaller":"8715628449220015","called":"*","nowgroupid":802,
- "dir":1,"type":"transferinringing","followData":"*","timestamp":1562899218}
- });
- // 监听转接通话事件(被转接方)
- CallCenter.addEventListener("transferincall",function(json){
- // json 响应数据
- // {"callid":"24542515792953352","userdata":"*","caller":"*",
- "origcaller":"8715628449220015","called":"*","nowgroupid":802,
- "type":"transferincall","followData":"*","timestamp":1562899218}
- });
- // 转接到指定坐席
- CallCenter. transfercall(“1001@test” ,87,{
- userData:{}, // 随路数据
- uuiData: ”” // UUI数据
- });
注意:
- 被转接座席必须为非预测登录座席
- 被转接座席必须处于空闲状态
- CTI模式下,userdata参数需要传字符串数据
2.4.2 转接技能组
接口名称:CallCenter.transfergroup(groupid)
功能:将当前通话转接到指定技能组
参数:
参数名 | 类型 | 描述 |
groupid | number | 技能组ID |
返回值:无,需要监听 after 事件获取响应
示例:
- // 监听话后事件获取响应
- CallCenter.addEventListener("after",function(json){
- // json 响应数据
- });
- // 请求转接技能组
- CallCenter.transfergroup(8);
注意:
- 只有座席和用户建立通话后才能调用转接技能组接口
- 转接技能组后,转接座席可以收到after事件进入话后状态
2.4.3 转接IVR
接口名称:CallCenter.transferservice(filename[,num])
功能:将当前通话转接到指定IVR脚本
参数:
参数名 | 类型 | 必填 | 描述 |
filename | string | 是 | IVR流程文件名 |
num | int | 是 | IVR流程类型 1 转接,2 咨询 |
hangupaftertransfer | Boolean | 否 | 转接后是否挂机 |
isFlowname | Boolean | 否 | filename是否为文件名,默认值:false, true:filename传入为IVR流程名,即flowname |
返回值:无
示例:
- // 监听转接IVR失败事件获取响应
- CallCenter.addEventListener("transferservice",function(json){
- // json 响应数据
- });
- // 监听挂机事件
- CallCenter.addEventListener("cancelmakecall",function(json){
- // json 响应数据
- // {"reason":"挂机成功","type":"cancelmakecall","status":0}
- });
- CallCenter.addEventListenter("after",function(json){
- // json 响应数据
- });
- // 请求转接IVR,转接后直接挂机
- CallCenter.transferservice("a.xml",1,true);
- // 请求转接IVR,转接后不挂机
- CallCenter.transferservice("b.lua",1,false);
注意:无
2.4.4 咨询到号码
接口名称:CallCenter.agentconsult(phone,null[,userdata])
功能:咨询指定座席,被咨询的坐席需要是空闲状态
参数:
参数名 | 类型 | 描述 |
phone | String | 必选,咨询的号码 |
Null | -- | 必选,传null |
userdata | Object | 可选,数据 { userData:{}, // 定义随路数据 uuiData:”” // 定义UUI数据 } |
返回值:无,需要监听 agentconsult 事件获取响应
示例:
- // 监听咨询到号码事件获取响应
- CallCenter.addEventListener("agentconsult",function(json){
- // json 响应数据
- // {"reason":"Success","caller":"*","type":"agentconsult","status":0}
- });
- // 监听被咨方摘机事件
- CallCenter.addEventListener("consultationcalls",function(json){
- // json 响应数据
- // {"type":"consultationcalls"}
- });
- // 请求咨询到号码
- CallCenter.agentconsult("15864585965",null,{
- userData:{
- // 随路数据
- },
- uuiData:'1542587745887744'
- });
注意: CTI服务方式时,userdata参数需要传字符串
2.1.1.24_34以下版本,集成三方会话邀请功能时,需要通过 CallCenter.isLeaveConf() 判断是否为三方会话被咨询方退出,若是则调用 CallCenter.handle_agentconsult(phone,null[ ,userdata])执行邀请。2.1.1.24_36、3.0.1.0不需要判断,直接调用CallCenter.agentconsult(phone,null[,userdata])即可。
2.4.5 咨询到坐席/技能组
接口名称:CallCenter.agentconsult(agentid,groupid[ ,userdata])
功能:咨询指定座席,被咨询的坐席需要是空闲状态
参数:
参数名 | 类型 | 描述 |
agentid | String | 非必选,咨询的座席,格式:工号@企业缩写,若不传,则为转技能组 |
groupid | int | 必选,咨询坐席的技能组id |
userdata | Object | 可选,数据 { userData:{}, // 定义随路数据 uuiData:”” // 定义UUI数据 } |
返回值:无,需要监听 agentconsult 事件获取响应。
注意:
咨询坐席前要先获取空闲坐席,调用获取空闲坐席接口
CTI服务方式时,userdata参数需要传字符串
2.1.1.24_34以下版本,集成三方会话邀请功能时,需要通过 CallCenter.isLeaveConf() 判断是否为三方会话被咨询方退出,若是则调用 CallCenter.handle_agentconsult(agentid,groupid[ ,userdata])执行邀请。2.1.1.24_36、3.0.1.0不需要判断,直接调用CallCenter.agentconsult(agentid,groupid[,userdata])即可。
示例
- // 监听咨询到坐席事件获取响应(咨询方)
- CallCenter.addEventListener("agentconsult",function(json){
- // json 响应数据
- // {"reason":"Success","caller":"*","type":"agentconsult","status":0}
- });
- // 监听被咨询坐席摘机事件(咨询方)
- CallCenter.addEventListener("consultationcalls",function(json){
- // json 响应数据
- // {"type":"consultationcalls"}
- });
- // 监听咨询振铃事件(被咨询方)
- CallCenter.addEventListener("consultinringing",function(json){
- // json 响应数据
- // {"callid":"24542515792953355","userdata":"*","caller":"*","origcaller":"8715628449220015","called":"*","nowgroupid":802,"type":"consultinringing","followData":"*","timestamp":1562900332}
- });
- // 监听咨询摘机事件(被咨询方)
- CallCenter.addEventListener("consultincall",function(json){
- // json 响应数据
- // {"callid":"24542515792953355","userdata":"*","caller":"*","origcaller":"8715628449220015","called":"*","nowgroupid":802,"type":"consultincall","followData":"*","timestamp":1562900332}
- });
- // 监听事件获取响应
- CallCenter.addEventListener("idleagents",function(json){
- // json 为返回的数据
- // {"type":"idleagents","data":[{"groupname":"测试技能组","groupid":802,"agents":["1001@test","1002@test"]}],"cmdtype":1}
- // 根据视图层事件响应调用咨询接口
- CallCenter.agentconsult(json.data[i].agents[j],8,{
- userData:{
- // 随路数据
- },
- uuiData:'1542587745887744'
- });
- });
- // 获取空闲坐席
- CallCenter.idleagents();
2.4.6 咨询IVR
接口名称:CallCenter.consulationservice(filename[,groupid,userdata,num])
功能:将当前通话转接到指定IVR脚本
参数:
参数名 | 类型 | 描述 |
filename | 字符串 | IVR脚本文件 |
groupid | int | 可选参数,转接到的技能组id |
userdata | 字符串 | 可选参数,CTI服务方式时使用,随路数据 |
num | 字符串 | 可选参数,CTI服务方式时使用,咨询到的IVR号码 |
返回值:无,需要监听consulationservice
属性 | 类型 | 说明 |
status | int | 状态 0失败 1成功 |
reason | string | 描述信息 |
Type | String | 固定值consulationservice |
示例:
- // 监听咨询IVR事件获取响应
- CallCenter.addEventListener("consulationservice",function(json){
- // json 响应数据
- // {"reason":"咨询转接成功.","type":"consulationservice","status":0}
- });
- // 外呼咨询IVR结束监听 answer 事件
- CallCenter.addEventListener("answer",function(json){
- // json 响应数据
- // {"callid":"24542517012054016","caller":"*","type":"answer","called":"*"}
- });
- // 呼入咨询IVR结束监听 incall 事件
- CallCenter.addEventListener("incall",function(json){
- // json 响应数据
- // {"callid":"24542517012054017","caller":"*","called":"*","type":"incall"}
- });
- // 请求咨询IVR
- CallCenter.consulationservice("a.lua",8,{
- userData:{
- // 随路数据
- },
- uuiData:'1542587745887744'
- });
注意:无
2.4.7 结束咨询
接口名称:CallCenter.agentconsultback()
功能:取消当前的咨询
参数:无
返回值:无,需要监听agnentconsultback事件获取响应
属性 | 类型 | 说明 |
status | int | 状态 0失败 1成功 |
dir | Int | 呼叫方向0呼入1呼出 |
type | string | 固定值agentconsultback |
reason | string | 描述信息 |
示例:
- // 监听结束咨询事件
- CallCenter.addEventListener("agentconsultback",function(json){
- // json 响应数据
- // {"reason":"Success","type":"agentconsultback","dir":1,"status":0}
- });
- // 请求结束咨询
- CallCenter.agentconsultback();
注意:agentconsultback事件在咨询失败时也能接收到
2.4.8 咨询转接
接口名称:CallCenter.agentshift()
功能:咨询过程中,把当前通话转接到被咨询侧,当前座席挂机
参数:无
返回值:无,需要监听after事件获取响应。
属性 | 类型 | 说明 |
status | int | 状态 0失败 1成功 |
reason | string | 描述信息 |
示例:
- // 监听话后事件处理话后业务(转接方)
- CallCenter.addEventListener("after",function(json){
- // json 响应数据
- });
- // 监听咨询转接通话事件(被转接方)
- CallCenter.addEventListener("deviceChanged",function(json){
- // json 响应数据
- // {"callid":"24542515792953358","caller":"*","type":"deviceChanged","called":"*","dir":1,"cdrType":0}
- });
- // 请求咨询转接
- CallCenter.agentshift();
注意:座席必须处于咨询通话中时调用此接口进行咨询转接
2.4.9 三方通话
接口名称:CallCenter.tripartitetalk()
功能:客户和座席与被咨询侧建立三方通话
参数:无
返回值:无,需要监听 tripartitetalk 事件获取响应,监听 sanfangcall 事件获取三方通话建立响应。
示例:
- // 监听事件获取三方通话响应
- CallCenter.addEventListener("tripartitetalk",function(json){
- // json 响应数据
- // {"reason":"Success","type":"tripartitetalk","status":0}
- });
- // 监听三方通话中事件,各路通话都能收到 sanfangcall 事件,表示三方会话已建立
- CallCenter.addEventListener("sanfangcall",function(){
- // json 响应数据
- // {"type":"sanfangcall"}
- });
- // 请求三方通话
- CallCenter.tripartitetalk()
注意:
座席必须处于咨询通话中时调用此接口发起三方通话
各路通话都能收到sanfangcall事件,标识三方会话已建立
2.4.10 邀请加入三方
接口名称:CallCenter.handle_agentconsult(agentid[,groupid])
功能:建立三方通话后,如果被咨询方挂机,通过此接口再邀请被咨询者加入
参数:
参数名 | 类型 | 描述 |
agentid | 字符串 | 格式:工号@公司简称,或咨询的号码 |
groupid | int | 转接到的技能组id |
userdata | 字符串 | 随路数据,CTI服务方式时生效 |
返回值:无,需要监听agentconsult事件获取响应
示例:
- // 监听咨询到号码事件获取响应
- CallCenter.addEventListener("agentconsult",function(json){
- // json 响应数据
- });
- // 三方通话被邀请方挂机
- if(CallCenter.isLeaveConf()){
- // 邀请其它方加入三方
- CallCenter.handle_agentconsult("15864585965");
- }
注意:
- 集成开发时,此接口必须在收到 leaveconf 事件后,才能调用
- 调用此接口时,座席侧会保持三方状态
- 3.0.1.0以上版本,可以直接调用 CallCenter.agentconsult(agentid,groupid) 邀请其它方加入三方
2.4.11移除会议
接口名称:CallCenter.handle_leavemeeting(agentid)
功能:主坐席讲其他坐席移除会议
参数:agentid
返回值:无,需要监听 tripartitetalk 事件获取响应,监听 sanfangcall 事件获取三方通话建立响应。
示例:
注意:
座席必须处于咨询通话中时调用此接口发起三方通话
各路通话都能收到sanfangcall事件,标识三方会话已建立
2.5 自定义忙碌类型
2.5.1 添加自定义未就绪状态
接口名称:CallCenter.addBusyButton(typeId,showText)
功能:在当前工具栏增加按钮
参数:
参数名 | 类型 | 说明 |
typeId | Int | 未就绪状态码 |
showText | String | 未就绪状态文字 |
返回值:无
示例:CallCenter. addBusyButton(2,”小休”)
注意:部分版本定制接口,新版本自定义忙碌类型需要管理员在Admin中配置:
【配置】-【通话配置】-【座席忙碌类型】;
如果添加的未就绪状态typeId与原有的未就绪状态typeId相同,会覆盖原有的。
2.5.2 移除自定义忙碌按钮
接口名称:CallCenter.removeBusyButton(typeId)
功能:移除已经添加的未就绪状态
参数:
参数名 | 类型 | 说明 |
typeId | Int | 未就绪状态码 |
返回值:无
示例:
- // 移除未就绪状态
- CallCenter. removeBusyButton(2);
- // 或
- CallCenter.getBusyTypeMap().remove(2);
- 注意:部分版本定制接口,新版本自定义忙碌类型删除可以通过以下方式进行:
- CallCenter.getBusyTypeMap().remove(typedId)
2.6 号码加密
2.6.1 隐藏部分号码
接口名称:CallCenter.hidePhone()
功能:隐藏部分号码,手机号码隐藏中间4位,固话隐藏前面号码段
参数:无
返回值:无
示例:
- //显示完成号码
- CallCenter. hidePhone()
注意: 座席登录后调用
2.6.2 显示完整号码
接口名称:CallCenter.showPhone()
功能:显示完整号码,如果隐藏了部分号码,调用此函数恢复
参数:无
返回值:无
示例:
- // 显示完整号码
- CallCenter.showPhone()
注意:座席登录后调用
2.7 其它功能
2.7.1 事件提醒
接口名称:eventAlert(string)
功能:显示在工具条下方的提醒内容
参数:将以提醒的方式显示在工具条下方
返回值:CallCenter
示例:
- CallCenter.eventAlert("呼叫状态切换")
注意:无
2.7.2 获取座席所属技能组
接口名称:CallCenter.agentgroups()
功能:获取当前座席所属技能组
前置条件:调用此接口时座席必须处于登录状态。
参数:无
返回值:无,需要监听agentgroups事件获取响应。
属性 | 类型 | 说明 |
id | Number:Integer | 技能组ID |
name | String | 技能组名称 |
示例:
- // 监听事件获取响应
- CallCenter.addEventListener("agentgroups",function(json){
- // json 为返回的数据
- });
- // 获取坐席所属技能组
- CallCenter.agentgroups();
注意:调用此接口时座席必须处于登录状态
2.7.3 获取座席
接口名称:CallCenter.idleagents([type])
功能: 获取其他非通话状态(签入、空闲、忙碌、话后)的坐席
参数:
参数名 | 类型 | 描述 |
type | Number | 默认0,获取语音座席,1获取IM座席 |
返回值:无,需要监听idieagents
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 idleagents |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
data | jsonarray | 空闲坐席数据 |
data[i].groupid | int | 技能组id |
data[i].groupname | string | 技能组名称 |
data[i].agents | jsonarray | 非通话坐席的数组,与agentnames索引匹配 |
data[i].agents[j] | string | 非通话坐席,格式:坐席工号@企业缩写 |
data[i].agentnames | jsonarray | 非通话坐席名称,与agents索引匹配 |
Data[i].agentnames[j] | string | 非通话坐席名称 |
示例:
- // 监听事件获取响应
- CallCenter.addEventListener("idleagents",function(json){
- // json 为返回的数据
- // {"type":"idleagents","data":[{"groupname":"测试技能组","groupid":802,"agents":["1001@test","1002@test"]}],"cmdtype":1}
- });
- // 获取空闲坐席
- CallCenter.idleagents();
注意:无
2.7.4 获取指定座席状态
接口名称:getagentstate(agentid)
功能:获取指定座席状态,仅支持CTI方式登录
参数:
参数名 | 类型 | 描述 |
agented | 字符串 | 格式:工号 |
返回值:
属性 | 类型 | 说明 |
status | int | 状态 0失败 1成功 |
reason | string | 描述信息 |
示例:
- CallCenter. getagentstate(“1001”)
注意:无
2.7.5 获取预测外呼可用技能组
接口名称:CallCenter. availablegroup()
功能:获取预测外呼可用技能组
参数:无
返回值:预测外呼可用技能组
属性 | 类型 | 说明 |
status | int | 状态 0失败 1成功 |
reason | string | 描述信息 |
示例:
- //获取智能外呼可用技能组
- CallCenter. availablegroup()
注意:无
2.7.6 获取IVR列表
接口名称:CallCenter.getIVRFlowList()
功能:获取IVR列表
参数:无
返回值:IVR列表JSON数据
示例:
- //获取IVR列表
- CallCenter. getIVRFlowList()
注意:
1. 需要坐席签入成功后调用
2.7.7 拨号过滤
接口名称:call()
功能:增加电话条输入号码特殊符号校验(@除外),增加输入号码特殊符号校验接口CallCenter.Call( )
参数:无
返回值:布尔值(true/false)
示例:
- CallCenter. call()
注意:无
2.8 websocket功能
1、 建立连接
接口名称:CallCenter.onopen_callback
功能:定义服务连接建立成功后的回调
参数:无
返回值:无
示例:
- // 注册连接回调
- CallCenter.onopen_callback = function(){
- // 业务逻辑处理
- };
注意:无
2、 关闭连接
接口名称:CallCenter.onclose_callback
功能:定义服务连接关闭成功后的回调。
参数:无
返回值:无
示例:
- // 注册连接关闭回调
- CallCenter.onclose_callback = function(){
- // 业务逻辑处理
- };
注意:无
3、 连接失败
接口名称;CallCenter.onerror_callback
功能:定义服务连接失败后的回调。
参数:无
返回值:无
示例:
- // 注册连接失败回调
- CallCenter.onerror_callback = function(){
- // 业务逻辑处理
- };
注意:无
4、 重新连接
座席与服务端连接意外断开后,SDK会自动发起重连
命令参数名 | 参数类型 | 参数说明 |
cmd | string | 固定值 reconnection |
operatorid | int | 工号 |
abbreviate | string | 企业缩写 |
companyid | int | 企业id |
password | string | 加密后密码 |
worktype | int | 坐席三种话机选择 0手机 1sip话机 2webcall |
auto | int | 是否是预测登录 1 预测外呼登录 0 非预测外呼登录 |
logingroups | string | 不传,则平台自动签入所有技能组,预测任务技能组由任务信息自动分配;传,格式为技能组id,以英文逗号隔开。坐席这次登录只签入这个这几个技能组,任务技能组是传入的最后一个技能组id。建议不传 |
agentType | int | 长短签 1短签 2长签 |
重连参数错误,会收到logon事件
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 logon |
systemtime | string | 系统当前时间 时间格式 yyyy-MM-dd HH:mm:ss |
status | int | 状态码 0 正常 非0 错误 |
reason | string | 原因 |
事件参数名 | 参数类型 | 参数说明 |
重连成功或失败,会收到reconnection事件:
事件参数名 | 参数类型 | 参数说明 |
type | string | 固定值 reconnection |
status | int | 状态码 0 正常 非0 错误 |
reason | string | 原因 |
cmdtype | int | 固定值 1 表示电话条上时间不重新计时 |
事件参数名 | 参数类型 | 参数说明 |
重连成功之后,如果断开前坐席处于通话状态,则会收到断开前最后收到的业务事件:
- 外呼类型会收到 answer 事件
- 呼入类型会收到 incall 事件
- 转接类型会收到 transferincall 事件
- 咨询类型会收到 consultincall 事件
如果断开之前坐席为非通话状态, 则会收到 agentbusy 事件
事件参数名 | 参数类型 | 参数说明 | 是否必填 |
type | string | 固定值 agentbusy | 必填 |
status | int | 状态码 0 正常 非0 错误 | 必填 |
reason | string | 原因 | 必填 |