easemob-cloudcallcenter

云呼叫中心

Usage no npm install needed!

<script type="module">
  import easemobCloudcallcenter from 'https://cdn.skypack.dev/easemob-cloudcallcenter';
</script>

README

云呼叫中心

1、安装或引入文件

npm install easemob-cloudcallcenter 项目 或者 script标签引入js文件

2、初始化

初始化前必要的准备工作:
1.必须使用chrome浏览器,版本号为58以上。原因是云呼叫中心的通话是通过webRTC技术实现的,目前chrome浏览器对于webRTC技术的支持是最好的。为了保证您的通话质量及安全性,所以我们做出了这样的要求。
2.软电话SDK所嵌入的自有业务系统必须使用https协议。原因是chrome在47版本之后,禁止http协议获取系统麦克风权限,会造成无法正常通话。
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方法

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()
置空闲、通过该方法可变为空闲状态,空闲状态后可接听、拨打电话。

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;
                    console.log("当前状态:"+code)
                    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:

            }
        }
    }
})

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|

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元(含)不允许外呼,请充值',

    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: '您尚未被加入到技能组中,暂时无法使用,请联系呼叫中心管理员添加',
}