README
更新日志
2021-08-11
- 错误提示补充
- 阿里云sdk初始化参数修改。
- useOpenApiSdk 去掉
- autoAnswerCall 去掉
2021-06-25
增加二次拨号盘功能
2021-4-23
同步master功能
- 新增配置loginText 支持自定义配置签入按钮文案
- 新增配置monitor 支持配置是否弃用监听功能
- 新增配置afterCallRule 取值【0-99】或者【manual】默认手动触发
- fix:Notify默认hide、 销毁SDK功能
- 新增转手机号接听。
- 新增显示来电归属地,及通话计时器
- fix:不允许多次初始化。只有空闲、小休、话后处理状态可以签出
2021-2-19
新增监听功能
2021-3-12
新增手机接听、小休、销毁SDK功能
云呼叫中心
1、安装或引入文件
npm install easemob-cloudcallcenter 项目 或者 script标签引入js文件
2、初始化
初始化前必要的准备工作:
1.必须使用chrome浏览器,版本号为58以上。原因是云呼叫中心的通话是通过webRTC技术实现的,目前chrome浏览器对于webRTC技术的支持是最好的。为了保证您的通话质量及安全性,所以我们做出了这样的要求。
2.软电话SDK所嵌入的自有业务系统必须使用https协议。原因是chrome在47版本之后,禁止http协议获取系统麦克风权限,会造成无法正常通话。(初始化配置项 origin 域名配置为https协议开头的即可)
3.如果您是在iframe标签内使用软电话SDK,那么需要为iframe标签增加 allow="microphone" 属性,来允许iframe标签获取系统麦克风权限。
初始化SDK:
在页面添加id为“id_name”的容器
<div id="id_name"></div>
配置示例:
!!只能初始化(实例化)一次
HxCccSdk.callcenterInit({
dom:"id_name", //挂载元素id
name: "huanxin", //登录名
password: "psd", //密码
origin: "https://kefu.easemob.com", //域名 默认为"//kefu.easemob.com"
defaultVisible: true // 默认是否展示工具条,参数类型:Boolean,默认为true
phoneProtection: false //隐藏客户号码中间4位,座机号隐藏后4位,以*代替, 默认为false
});
3、sdk方法
监听工具条状态 在“ONINIT”时,表示初始化完成(SDK对象实例化完成),可执行首次签入(注册)
1.注册:HxCccSdk.onRegister()
检测当前是否符合云呼工具条初始化条件,若符合,则自动注册
2.签入:HxCccSdk.logIn()
签入(处于签出状态可调用),调用该方法实现上线操作
3.签出:HxCccSdk.logOut()
签出,调用该方法实现下线操作
4.拨打:HxCccSdk.onCall("被叫号码")
打电话
5.接听:HxCccSdk.answer()
接听电话,通过该方法可接听来电,建立通话连接。
6.挂机:HxCccSdk.hangUp()
挂断,通过该方法可结束通话
7.通话保持:HxCccSdk.callHold()
通话保持,通过该方法可使通话进行保持,客户端听到的是一段音乐,坐席端说话客户端无法听到。
8.通话取回:HxCccSdk.callRetrieve()
通话取回,通过该方法结束通话保持的状态,重新建立客户端和坐席端的通话
9.开始接听,恢复空闲状态:HxCccSdk.ready()
置空闲、通过该方法可变为空闲状态,空闲状态后可接听、拨打电话。
10.监听: HxCccSdk.onMonitor(monitordn)
监听功能,monitordn为被监听者的分机号
11.结束监听: HxCccSdk.stopMonitor()
结束监听功能,恢复空闲
12.二次拨号: HxCccSdk.sendDtmf(number: number)
4、监听当前工具条状态
window.addEventListener("message", function(msg){
if(msg.data.easemob){
var message = msg.data.easemob.kefu;
for(var key in message){
var type = key.toUpperCase();
var value = message[key];
switch (type) {
case "ONINIT":
console.log("工具条初始化")
break;
case "ONSTATUSCHANGE": //任何状态改变都会触发该函数,用户可在该函数内监听当前状态值的变化过程,状态code的含义请参考本文档状态对照表。
var code = value.code;
var lastCode = value.lastCode;
console.log("当前状态:"+code)
console.log("上一个状态:"+lastCode)
break;
case "ONERRORNOTIFY": //当有一些错误信息的时候触发,可以获取error信息
var error = value.error;
var errorMsgTip = error.errorMsgTip;
console.log(error.errorCode +"--"+errorMsgTip);
break;
case "ONCALLCOMING": //来电时触发,用户可以在该函数内获取参数信息, caller: 主叫号码, callee:被叫号码
var calee = value.calee;
var caller = value.caller;
console.log(calee,caller)
break;
default:
}
}
}
})
判断 window.workbench 可以知道是否已经存在工具条的实例
5、状态对照表
|状态码|注释|描述| | - | - | - | |-1|未注册|off| |0|注册中|off| |1|签出|off| |2|签入|logIn| |3|空闲|ready| |4|小休|break| |5|话后处理|other| |6|振铃|callComing| |8|拨号|dialingCall| |9|呼入通话|inCall| |10|呼出通话|inCall| |11|内部通话|inCall| |12|通话保持|inCall| |21|监听中|monitoring|
6、操作逻辑错误
以下参数格式为:errorCode:errorMsg/errorMsgTip
当出现as错误码和event签出时,都建议重新刷新页面登录。
{
// as返回的错误码
KEFU_003: '账号名/密码不正确',
KEFU_122: '您的账号已被禁用,请联系您的管理员',
101: '请使用chrome浏览器!',
102: '请使用58版本以上chrome浏览器',
103: '请切换为https协议!',
104: '您当前未属于任何技能组,请联系管理员为您添加',
105: '您所在的技能组没有外呼号码',
106: '您不在任何技能组中,请联系管理员进行添加',
107: '工具条已经初始化了,禁止再次调用',
108: '请设置挂载元素',
109: '云呼资质待审核',
110: '查询租户呼叫中心信息失败',
111: '请输入正确的电话号码',
112: '当前坐席状态未处于空闲或小休中,请空闲或小休时再回呼',
114: '没有可外呼的号码,请确定技能组是否绑定了外呼号码!',
115: '只有呼叫中心客服和全渠道客服可以使用云呼叫中心',
116: '话费余额小于50元(含)不允许外呼,请充值',
200: "注册中,请等待!"
6001: '管理员不存在',
6002: '管理员未登录',
6003: '技能ID不存在',
6004: '管理员ID不存在',
6005: '当前状态忙碌,请求失败,请刷新页面后重试',
6006: '当前状态忙碌,请求失败,请刷新页面后重试',
6007: '当前状态忙碌,请求失败,请刷新页面后重试',
6008: '当前状态不对',
7001: '后端服务任务请求不对',
7002: '您请求对应的电话已经不存在',
8020: '该账号有人正在使用且在通话中',
8021: '您的账号已在别处登录,如需登录请刷新页面', // 界面提醒,按钮不可点
8022: '需重新加载配置', // 这个配置如何展示
8001: '请检查声卡权限', // 提示设备异常的界面
8002: '请检查声卡权限', // 提示设备异常的界面
`以下为迁出的event事件:`
AB_normal: '软电话正常签出',
ASM_Private: '坐席管理服务连接超时,请检测网络连接情况', // '私协超时',
ASM_SIP: '语音服务连接超时,请检测网络连接情况', // 'SIP 30秒超时',
'ASM_Private&SIP': '坐席管理服务和语音服务连接超时,请检测网络连接情况', // '私协和SIP都超时',
ka_unregister: '您的账号已在别处登录,如需登录请刷新页面', // ka发送的unregister签出
KA_register: '您的账号已在别处登录,如需登录请刷新页面' // 'KA发送的register',
// WS连接缓慢
WSConnectSlowly: '当前WebScoket连接缓慢,请等待或刷新后重新上线',
// 坐席没有配置技能组
systemErrorNotInAnySkillGroup: '您尚未被加入到技能组中,暂时无法使用,请联系呼叫中心管理员添加',
}