easemob-cloudcallcenter
v3.0.0-alpha.6
Published
云呼叫中心
Downloads
73
Readme
#软电话工具条集成 ###应用场景
您拥有自己的CRM系统,希望在CRM系统里实现一键拨打客户电话,或者希望将呼叫中心工作台嵌入CRM系统,实现客服人员直接在CRM系统里处理来电或拨打电话。
通过以下文档,您可以实现上述目的,下面的工作需要您公司的前端工程师来实施。
##服务器端准备工作
软电话SDK嵌入到了您的自有业务系统中,在初始化sdk时,需要您传入坐席对应的环信客服账号和密码用来初始化软电话工具条。
方法1:客服无需手动登录:在您的自有业务系统中,需要维护一套自有业务系统客服账号与环信客服账号的对应关系,需由您的后端根据登录的客服账号和对应关系获取到环信客服账号、密码,返回给您的前端,由您的前端调用初始化方法时传入。
方法2:客服手动登录:需要在您的自有业务系统页面上,实现环信客服账号及密码的输入框,由客服自行输入环信客服账号、密码后手动登录。
##初始化
###初始化必备工作 必须使用chrome浏览器,版本号为58以上。原因是云呼叫中心的通话是通过webRTC技术实现的,目前chrome浏览器对于webRTC技术的支持是最好的。为了保证您的通话质量及安全性,所以我们做出了这样的要求。 软电话SDK所嵌入的自有业务系统必须使用https协议。原因是chrome在47版本之后,禁止http协议获取系统麦克风权限,会造成无法正常通话。 如果您是在iframe标签内使用软电话SDK,那么需要为iframe标签增加 allow=“microphone” 属性,来允许iframe标签获取系统麦克风权限。
###安装或引入文件
引入js文件; css文件;
###初始化sdk
在页面添加id为“id_name”的容器
<div id="id_name"></div>
配置示例:
var hx = new HxCccSdk({
dom: "huanxin_ccc",
name: "[email protected]", //登录名
password: "xx", //密码
origin: "https://kefu.easemob.com", //域名
autoSendEvalationEnable: true, // 自动发送满意度邀评
defaultVisible: true, //demo是否展示
phoneProtection: false, //隐藏客户号码中间4位,座机号隐藏后4位,以*代替
autoAnswerCall: 20, // 话后处理时间
showMini: true, // 是否展示通话中mini类型电话条
monitor: false, // 是否可以监听
useHxNotifyMessage: true, // 使用环信的错误提示
});
###config配置 ####1. dom
- dom挂载元素id
- 内置mini类型为浮动元素,如需使用需单独配置css,类名:callcenter2_mini
#####2.origin 环信登录环境:https://kefu.easemob.com #####3.name 登录名称 #####4.password 登录密码 #####5. autoSendEvalationEnable 是否自动发送满意度邀评 #####6. defaultVisible 默认是否展示内置UI #####7. phoneProtection 隐藏客户号码中间4位,座机号隐藏后4位,以*代替 #####8. autoAnswerCall 话后处理时间,手动结束填manual #####9. showMini 是否展示mini控件 #####10. useHxNotifyMessage 是否使用环信内置错误提示
-- ###以下为内置钩子函数
#####11. onInit() SDK对象实例化完成时触发
#####12. onStatusChange({code, lastCode, context}) 任何状态改变都会触发该函数,用户可在该函数内监听当前状态值的变化过程,状态code的含义请参考本文档第8条状态对照表。
code: 当前状态码
lastCode: 上次状态码
context:其他信息
#####13. onCallComing({caller, callee, callType, jobId, callContext})
来电时触发
caller:主叫号码
callee:被叫号码
callType:呼叫类型
jobId:当前通话的ID
callContext:当前通话的详细信息
注意:为了提高接通率,当有来电振铃30s后未接听,会自动将当前坐席置为小休状态。 电话自动流转回转人工队列,分配给其他空闲坐席。
#####14. onCallDialing({caller, callee, callType, jobId, callContext}) 去电、拨号振铃时触发
caller:主叫号码
callee:被叫号码
callType:呼叫类型
jobId:当前通话的ID
callContext:当前通话的详细信息
#####15. onCallEstablish(callDetail) 通话建立连接时触发
callDetail:当前通话的详细信息
#####16. onCallRelease(callDetail) 通话结束时触发
callDetail:当前通话的详细信息
#####17. onErrorNotify(error) 当有一些错误信息的时候触发
error : 错误信息
--
###SDK方法
####1.首次签入
hx.register()
自动检测当前是否符合云呼工具条初始化条件,若符合,则自动执行
#####2.签入
hx.logIn()
签入(处于签出状态可调用),调用该方法实现上线操作
⚠️注:签入之前需要先加入呼叫技能组。
#####3.签出
hx.logOut()
签出,调用该方法实现下线操作
#####4.拨打
HxCccSdk.call("被叫号码",“主叫号码”)
打电话,传入被叫号码即可,主叫号码可不填
#####5.接听
HxCccSdk.answer()
接听电话,通过该方法可接听来电,建立通话连接
#####6.挂机
HxCccSdk.hangUp()
挂断,通过该方法可结束通话
#####7.通话保持
HxCccSdk.callHold()
通话保持,通过该方法可使通话进行保持,客户端听到的是一段音乐,坐席端说话客户端无法听到
#####8.通话取回
HxCccSdk.callRetrieve()
通话取回,通过该方法结束通话保持的状态,重新建立客户端和坐席端的通话
#####9.开始接听,恢复空闲状态
HxCccSdk.ready()
置空闲,通过该方法可将坐席置为空闲状态,空闲状态可接听、拨打电话。
#####10.监听
hx.monitor(monitordn)
监听功能,monitordn为被监听者的分机号
#####11.结束监听
hx.doneMonitor()
结束监听功能,恢复空闲
#####12.二次拨号
hx.sendDtmf(number)
外呼通话,需要按键时使用。number可为0~9,*或#
#####13.仅外呼模式
hx.applyForCallOnly(isCallOnly)
#####14.小休模式
hx.applyForBreak()
hx.break()
#####15.发送满意度邀评
hx.transferStatisfic()
#####16.发起咨询转接
hx.initiateAttendedTransfer(callee, caller)
#####17.直接转接
thirdCallTransfer(callee, caller, mode)
#####18.咨询转接后,将电话转接出去。A呼叫B,B发起呼叫C,BC通话之后,B操作将电话转移,AC通话。此处是B将电话转移的方法。
hx.thirdCallTransferFinished()
#####19.咨询转接后,取消转接。A呼叫B,B发起呼叫C;BC未通之前,B操作取回,AB恢复通话。
hx.thirdCallRetrieve()
#####20.静音
hx.muteAgent()
#####21.结束静音
hx.umMuteAgent()
#####22.会议相关接口
A与B通话中拉C进入会议
hx.conferenceInit(callee, caller)
callee可传分机号或者外部手机号 此时B属于hold状态
接通后最终调用hx.conferenceFinished()
建立会议B结束hold状态
#####23.设置离线接听
hx.offline(number)
###状态对照及方法约束说明(新版) 状态码 | 描述 | 操作 | 状态值 --- | --- | --- | --- -1 |未注册 |当前状态只能操作register | unregistered | 0 |注册中 | registration | 1|离线 |上线 | logOut | 2| 小休| 置空闲,下线 | break | 3| 空闲| 下线、外呼、接听,发起监听,会议 | ready | 4| 仅外呼 | 置空闲,下线 | onlyCall | 5| 话后处理| 置空闲 | postProcessing | 6| 振铃| 接听 | callComing | 8| 拨号| 挂断 | dialingCall | 9| 呼入通话| 挂断 | callIn | 10 | 呼出通话 | 挂断 | callOutCall | 11 | 内部通话 | 结束通话 | intercom | 12 | 通话保持 | 取消通话保持 | callRetention | 16 | 发起三方 | 通话取回、取消三方通话 | initiatingThreeParties | 17 | 咨询通话 | 取消咨询通话、咨询通话转移 | consultation | 19 | 会议中 | | 结束会议,挂断 | meeting | 20 | 被动求助 | 挂断 | passiveHelp | 21 | 监听| 挂断 | monitoring | 22 | IVR确认开始| —— | | 23 | IVR确认结束| —— | | 24 | 发起监听,还未监听成功 | | 25 | 强插,进入三方通话| 接听、拨打、转接 | | 26 | 耳语坐席,进入三方通话| 接听、拨打 | |
1.0没有变化,如还需集成1.0还应对照软电话工具条集成
###操作逻辑错误与错误信息 [5001, '外呼失败'], [5002, '您尚未被加入到技能组中,暂时无法使用,请联系呼叫中心管理员添加'], [5003, '技能组信息异常'], [5004, '请检查坐席是否在通话中,并且设置了语音满意度流程'], [5005, '当前WebScoket连接缓慢,请等待或刷新后重新上线'], [6001, '没有通话Channel信息'], [6002, '没有通话ChannelID'], [7001, '已有设备注册,软电话未初始化'], // 初始化sip之前检测出有设备,可以让客户选择是否登录 [7002, '已有设备注册,软电话初始化异常, 请刷新页面'], // 初始化sip之后,注册设备和sip不一致,报错 [7003, '无法获取接入点信息'], [7004, '接入点测速失败'], [7005, '请使用http协议'], [7006, '浏览器不满足要求'], [9001, '当前状态不能执行此操作'], [9002, '参数异常'], [9003, '执行失败'], [9004, '软电话已初始化好'], [9005, '请先调用PrepareSignIn方法'], [9006, '下线失败'], [9007, '网络连接失败'], [9008, '缺少登录信息'], [9009, '主叫为空'], [9010, '无可用主叫'], [9011, '主叫已用完'], [9012, '被叫为空'], [8001, '请检查声卡权限'], // 提示设备异常的界面 [8002, '请检查声卡权限'], // 提示设备异常的界面 [8003, '已在通话中'], [8004, '无语音流'], /* 以下为迁出的event事件 */ ['stream_local_refused', '浏览器无麦克风权限,请刷新页面'], ['get_lo_failed', '无法获取本地媒体流,请切换接入点到上海'], ['PollUserStatusErrorNotify', '无法获取坐席状态,请重新登录'],
[10001, '您当前未属于任何技能组,请联系管理员为您添加'],
[10002, '您的云呼服务已到期,请尽快联系管理员进行续约,以免影响您的正常使用。'],
[10003, '您当前未属于任何技能组,请联系管理员为您添加'],
[10004, '您所在的技能组没有外呼号码'],
[10005, '您所在的技能组没有外呼号码'],
[10006, '您不在任何技能组中,请联系管理员进行添加'],
[10007, '错误,获取通信详情失败'],
[10008, '当前话费余额已低于最低标准50元(含),请充值后外呼。'],
[10009, '请输入正确的电话号码'],
[10012, '云呼资质待审核'],
[10013, '查询租户呼叫中心信息失败'],
[10014, '只有呼叫中心客服和全渠道客服可以使用云呼叫中心'],
[10015, '请输入正确的电话号码'],
[10016, "正在通话中,不允许切在线模式"],
[10017, "浏览器无麦克风权限,请刷新页面"],
[10018, "您所在的技能组没有外呼号码"],
[10019, "只限拨打您的注册手机"],
[10020, "请输入正确的电话号码"],