下载地址

dist目录下是已经编译压缩以后的代码,可以直接放到你的项目里使用。 如果修改了我的代码,则需要先编译,编译方法在这里

!!!注意:通话组件和udesk系统只允许有一处存在,其中一处登录,会把另一处挤下线

!!!注意:通话组件2.0版本新加入了单独的API文件使用方法基本与组件一致,说明在文档的最下方

图例

直接使用

1、将dist目录下的内容引入你自己的项目,fonts目录拷贝到你的项目静态资源目录下。

<!--  引入css-->
<link rel="stylesheet" type="text/css" href="./css/callcenter-component.css">
<!--  引入js-->
<script src='./callcenter-component.js'></script>

2、初始化组件

请先获取agent_api_token,获取方式

<script>
var callComponent = new UdeskCallcenterComponent({
    container: document.body,    //组件的容器
    token: 'xxxxxxxx',           //通过登录接口获取的客服token(即agent_api_token)
    subDomain: 'demo',          //在udesk注册的二级域名,例如登录地址是demo.udesk.cn,这里填demo
    showManualScreenPop:true,    //是否开启‘手动弹屏’功能
    onScreenPop: function(conversation){},  //弹屏事件触发的方法
    onHangup: function(conversation){}
});
</script>

Options

属性名 类型 是否必须 默认 说明
container Document 通话组件的容器
token String 客服token(即agent_api_token),获取方式
subDomain String 在udesk注册的子域名,例如登录地址是demo.udesk.cn,则subDomain是demo
showManualScreenPop String false 是否启用手动弹屏功能
onScreenPop(conversation) function 弹屏事件
onRinging(conversation) function 振铃事件,当话机振铃时触发
onTalking(conversation) function 通话事件,当接通时触发
onHangup(conversation) function 挂断事件,但挂断时触发
onWorkStatusChange(status) function 当客服状态发生变化时触发
onWorkWayChange(way) function 当客服在线方式发生变化时触发
onDropCall(result) function 点击通话组件挂断按钮后的回调函数
onInitSuccess() function 拉取初始化数据成功时触发
onInitFailure() function 拉取初始化数据失败时触发
onTokenExpired(callback:(newToken:string)=>void) function 当token失效时触发,参数是一个回调方法,调用这个回调方法刷新token
onIvrCallResult(result:{code:number}) function IVR转出结果,code为1000时成功
onResumeAgentResult(result:{code:number}) function IVR转回结果,code为1000时成功

方法

makeCall(number, options)

拨打电话

number string -(必填)电话号码

options object
该参数是一个object,可以传以下参数

options.biz_id string
该字段由您指定,可以是任意字符串,通话事件推送时会带上这个id

answer()

当振铃时,调用此接口接听电话,
仅在线状态为网页电话时有效

destroy()

销毁通话组件

setWorkStatus(status)

设置客服在线状态,空闲,忙碌,整理,离线,小休等.

status String - 客服状态,只能是idle,busy,resting,offline

setWorkingWay(workingWay)

设置客服在线方式,IP话机,手机,网页电话

workingWay String - 客服在线状态,只能是后面这几个值fixed_voip_online,phone_online,voip_online

setupDefaultNumber(number_id,success_callback,failure_callback)

设置新的中继号

number_id number 中继号id
success_callback function 请求成功时的回调
failure_callback function 请求失败时的回调

hangup(success_callback, failure_callback)

挂断当前通话,参数是成功与失败的回调,success_callback仅表示请求发送成功,具体挂机是否成功以onDropCall事件为准。

success_callback function 请求成功时的回调
failure_callback function 请求失败时的回调

getCallNumbers()

返回的是中继号列表,{id: number, number: string, name: string, memo: string}[]

属性名称 描述
id 中继号id
number 电话号码
name 名称
memo 备注

getAutomaticCallNumGroup()

返回的是自动外呼任务客户的电话组,只有振铃并且是自动外呼的时候才会获得该客户的数据,如:{ ad_task_id:1,customer_id:2,numbers:["18812345678", "18712345678"]}

注: 只有振铃并且是自动外呼任务时才会储存数据,其他情况下这个字段是空 具体如下:

属性名称 描述
ad_task_id 任务id
customer_id 客户id
numbers ["18812345678", "18712345678"] # 号码/号码组}

startIvrCalling(ivrNode:{transfer_mode:"agent_hold"|"agent_hangup",id:string})

转IVR,参数为ivrId

holdCallSelect(successCallback:()=>void, failureCallback:()=>void)

保持通话

recoveryCallSelect(successCallback:()=>void, failureCallback:()=>void)

取回通话

transferToGroup(groupId:number|string, successCallback:(res)=>void, failureCallback:(res)=>void)

转接到客服组

successCallback仅表示该请求成功,真正是否转接成功需要在onTransferResult里获取

transferToExternalPhone(phoneNumber:string, successCallback:(res)=>void,failureCallback:(res)=>void)

转接外线

successCallback仅表示该请求成功,真正是否转接成功需要在onTransferResult里获取

startConsultingToExternalPhone(phoneNumber:string, successCallback:(res)=>void,failureCallback:(res)=>void)

咨询外线

successCallback仅表示该请求成功,真正是否咨询成功需要在onConsultResult里获取

startThreeWayCallingToExternalPhone(phoneNumber: string, successCallback:(res)=>void, failureCallback:(res)=>void)

三方外线

successCallback仅表示该请求成功,真正是否三方成功需要在onThreeWayCallingResult里获取

transferAfterConsult(agentId: string)

咨询后转接

agentId: 客服id

threeWayCallingAfterConsult(agentId: string)

咨询后三方

agentId: 客服id

transferAfterThreeWayCalling(agentId: string)

三方后转接

agentId: 客服id

setupDefaultNumber(phoneNumberId: string|number, successCallback:(res)=>void, failureCallback:(res)=>void)

设置外呼时的主叫号码,第一个参数为中继号ID

getCallNumbers():Object[]

获取可选的中继号

conversation对象

弹屏事件里会传入conversation对象,该对象包含以下这些参数

属性名称 描述
call_id call_id
conversation_id 通话记录ID
call_type 通话类型,只能是下列几个值之一,呼入、呼出、呼入(转接)、呼入(三方),呼入(咨询),呼入(强插),呼入(监听),呼入(强拆)
customer_phone_number 客户号码
customer_phone_location 归属地
queue_name 来源队列
queue_overflow 溢出队列
queue_status 排队状态
queue_time 排队时长(秒)
agent_id 客服ID
agent_name 客服名称
agent_email 客服邮箱
ring_time 振铃开始时间,例子:2017-03-09T14:34:24+08:00
ivr_variables 智能路由里保存的变量,格式变量名1:[变量值1][,变量名2:[变量值2]...],例子:"x:1,y:2,aa:1,bb:2,cc:,变量2:2"
display_name 中继号
device_info 客服在线方式
category 通话类型,consult(咨询),consult_outline(咨询外线),three_party(三方),three_party_outline(三方外线),listening(监听),barge_in(强插),whisper(密语),transfer(转接),transfer_outline(转接外线),substitute(拦截),transfer_after_consult(咨询后转接),three_party_after_consult(咨询后三方),transfer_after_three_party(三方后转接),requeue(重新入队)
dtmf dtmf
multi_ring_count 顺振次数
relevant_agent 相关客服

通话API

1、将dist目录下的call-api.js导入项目

<!--  引入js-->
<script src="./js/call-api.js"></script>

2、使用前需要初始化token

请先获取agent_api_token,获取方式

<script>
window.callAPI.tokenInit(
        '88354be49e4aa632bdbfb8a60bcae04ec157fad4b4fa554daebae3de1d7bc8de9cc80e9f3c39174cb45d3c3ab52fdcfdaf1216ff2dedc11aa13a1b14e89819065a547cf2',
        'linapp',
        function(callback) {
            setTimeout(function() {
                callback('f3ebff04e6cf899cac39da98bcb1ccdd77e9c8ccd94fa70419668c4bb6510b5fe277cb786662b4c6173706fa2915e9184619f42b766f76226f043693cca1dbdf5a2e1d49');
            }, 1000);
        }
    )
</script>

tokenInit初始化参数

方法

tokenInit(token,subDomain,onTokenExpired)

为API初始化token和subDomain 注:在调用API之前必须初始化token

参数说明

属性名 类型 是否必须 说明
token String 客服token, 获取方式
subDomain String 在udesk注册的子域名,例如登录地址是demo.udesk.cn,则subDomain是demo
onTokenExpired(result) function 当token失效时的回调函数

setMonitorWorkStatus(agent_no,workStatus,successCallback,failureCallback)

为其他客服切换坐席在线状态 如空闲 忙碌 离线 小休等 自定义小休请参照另外一个方法

setMonitorWorkRestingStatus(agent_no,cc_custom_state_id,successCallback,failureCallback)

为其他客服切换自定义小休的状态,如果需要切换 空闲 忙碌 离线 小休等请参照另外一个方法

setMonitorAgentWorkWay(agent_no, agent_work_way,successCallback,failureCallback)

为其他客服切换设备,如IP话机 手机 网页电话

monitorAgentListeing(agent_no,successCallback,failureCallback)

对其他客服进行监听操作

monitorAgentInterpose(agent_no,successCallback,failureCallback)

对其他客服进行强插操作

monitorAgentSubstitute(agent_no,successCallback,failureCallback)

对其他客服进行拦截操作

参数说明

属性名 类型 是否必须 说明
agent_no number 客服ID
workStatus String 客服状态,只能是后面这几个值idle,busy,resting,offline
cc_custom_state_id number 自定义小休状态的id
agent_work_way string 设备状态,只能是fixed_voip_online,phone_online,voip_online
successCallback function 请求成功的回调函数
failureCallback function 请求失败的回调函数

浏览器适用情况

IE firefox chrome safari opera
10 11 16 6 12.10

如何编译

1、安装nodejs

下载后安装

2、安装webpack

项目用webpack打包,需要先安装webpack

npm install -g webpack

3、下载依赖

进入项目目录,运行下面的命令

npm install

4、编译,打包,压缩

webpack