easemob-cloudcallcenter

云呼叫中心

Usage no npm install needed!

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

README

更新日志

2021-08-11

  1. 错误提示补充
  2. 阿里云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: '您尚未被加入到技能组中,暂时无法使用,请联系呼叫中心管理员添加',
}