关于美洽呼叫SDK使用说明。
<script type="text/javascript" src="https://static-app.meiqia.com/fe-callcenter-sdk/callcenter-sdk-v1.js"></script>
开放API请求说明
1.通过工作台(https://app.meiqia.com/setting/developer-apis)或者询问售后人员获取企业accesstoken
2.请求头headers里面添加 Authorization: “Bearer ” + accesstoken (Bearer和accesstoken之间有一个空格)
获取可转接客服列表
说明:获取可转接的呼叫客服列表
地址: https://api.meiqia.com/openapi/ent/v1/sip/configs
请求方法:GET
请求头(headers):
参数 | 类型 | 必填 | 描述 |
Authorization | String | 是 | “Bearer ” + accesstoken |
返回参数
参数 | 类型 | 必填 | 描述 |
ent_id | int | 企业id | |
agent_id | int | 客服id | |
answer_way | string | 接听方式,web:rtc soft_switch | |
created_at | string | 创建时间 | |
effective_at | string | 有效时间 | |
expiration_at | string | 过期时间 | |
out_number | string | 外显号码 | |
real_name | string | 真实姓名 | |
register_status | string | 注册状态:register ,unregister | |
updated_at | string | 更新时间 | |
worker_status | string | 工作状态,为空时可以转接 |
获取SDK鉴权token
说明:获取拥有坐席的呼叫客服列表
地址: https://api.meiqia.com/openapi/ent/v1/login
请求方法:POST
请求头(headers):
参数 | 类型 | 必填 | 描述 |
Authorization | String | 是 | “Bearer ” + accesstoken |
请求体:
参数 | 类型 | 必填 | 描述 |
agent_id | String | 是 |
返回参数
参数 | 类型 | 必填 | 描述 |
ExpireTime | string | 过期时间 | |
Token | string | SDK鉴权token |
流程图:
- 用户使用 accesstoken,agentId来请求服务器
- 服务器进行验证认证的信息
- 服务器通过验证返回给用户 客服 token
- 用户初始化时把 token传给SDK;
- 并在每次请求时附送上这个 accessToken 值 (存在 headers 里的参数 Authorization)格式为: ‘Bearer xxxxxxx’
- 服务端验证 token 值,并返回数据
- token 在申请后会携带超时时间,客户端应该在 accessToken 超时时间过半时重新获取 token。
- 如果服务器验证 accessToken 过期, 返回 status 401
- 监听unAuthorization事件,重新请求token,并调用刷新token接口替换新token
SDK流程➕
呼出流程
呼入流程
初始化
创建实例
const mqCallSDK = new MQCallSDK()
初始化SDK
mqCallSDK.init({
token:'xxxxxxx', //鉴权token
success: function (msg){
console.log('new Client success : ', msg)
},
error: function (msg){
console.log('new Client error : ', msg)
}
})
获取外显号码
mqcallSDK.getAgentRule({
success: (data) => {
},
error:()=>{}
})
//返回外呼规则数据如下AgentRuleType所示
//人工指定号码
type Agent_numbers$1Type = {
default_number: string; // 默认号码
numbers: Array<string>; //所有的人工指定号码
updated_at: string;
};
// 动态号码组
type Agent_groups$2Type = {
id: number;
name: string;
rule_type: number; //电话类型 ,1手机号码,2固定号码,3随机号码,4自有号码
numbers: Array<string>;
is_default: number;
updated_at: string;
};
type AgentRuleType = {
default_rule: number; // 1代表人工指定号码,2代表动态号码组
agent_numbers: Agent_numbers$1Type;
agent_groups: Array<Agent_groups$2Type>;
};
设置外显号码
mqCallSDK.setOutNumber({
data: { rule, number, group_id }, // rule: 1代表人工指定号码,2代表动态号码组,number:人工指定号码,group_id :动态号码组id
success: function (msg){
console.log('new Client success : ', msg)
},
error: function (msg){
console.log('new Client error : ', msg)
}
})
设置客服状态
mqCallSDK.setAgentStatus({
status: 2, //状态码 后续会说明
success: function (msg){
console.log('new Client success : ', msg)
},
error: function (msg){
console.log('new Client error : ', msg)
}
})
客服状态码:
可更改状态 ==> 在线:1 , 离线:2,小休:3,忙碌:4
不可更改状态 ==> 通话中:6,振铃中:7,整理中:8
呼叫
参数名称 | 类型 | 校验 | 说明 | |
client | number | string | number与privacyNumber必传一个 | 被叫号码明文 |
privacyNumber | string | 被叫号码密文,优先级比number高 | ||
userData | string | 非必传 | 业务系统自定义数据,可以是uuid之类的业务ID,最多 300 个字符 | |
outNumber | string | 外显号码或号码组。号码组采用group{ID}的形式传递,如号码组ID为2的例子为:gourp2。请注意,这里的外显号码和号码组必须已经分配给这个坐席,才能正常使用。 在这里设置的外显号码,优先级高于使用设置外显号码(mqCallSDK.setOutNumber)方法设置的外显号码 | ||
success | function | 成功回调函数,请注意这里的成功或失败并不是意味着电话的呼叫是否接通,只是表示发起呼叫这个动作成功与否 | ||
error | function | 失败回调函数,请注意这里的成功或失败并不是意味着电话的呼叫是否接通,只是表示发起呼叫这个动作成功与否 | ||
validatorErrorCb | function | 自定义验证规则 |
mqCallSDK.call({
//privacyNumber 代表加密之后的号码,只要传了 privacyNumber 则代表使用加密呼叫
//参数中的 client 对象 number 和 privacyNumber 必填一项
//userData 最多 300 个字符
client:{number:'xxxx',privacyNumber:'xxxxxx',userData:'xxxx',outNumber:'xxxx'},
success: ()=>{},
error:()=>{},
validatorErrorCb:()=>{} //自定义验证规则
})
接听
mqCallSDK.answer ()
挂断
mqCallSDK.hangup()
静音
mqCallSDK.muteCall({
success: ()=>{},
error:()=>{}
})
取消静音
mqCallSDK.unmuteCall({
success: ()=>{},
error:()=>{}
})
保持
mqCallSDK.holdCall({
success: ()=>{},
error:()=>{}
})
取消保持
mqCallSDK.unholdCall({
success: ()=>{},
error:()=>{}
})
转接
mqCallSDK.transferCall({
agentId:12123,//客服ID
success: ()=>{},
error:()=>{}
})
刷新token
mqCallSDK.refreshToken({
token:'',
success:()=>{},
error:()=>{}
})
事件监听
SDK提供以下事件监听
通用返回数据
{
"sip": "", //SIP号
"customer": "", //顾客号码
"action": "register", // 事件名称
"user_agent": "JsSIP", // 注册方式
"uuid": "", //通话id
"trunk_number": "", //外显号
"trunk_number_name": "", //外显别名
"queue_name": "" //队列名称
}
register 注册事件
返回通用数据
unregister 注销事件
返回通用数据
calling 外呼振铃事件
返回通用数据
incomingCall 呼入振铃事件
返回通用数据
answer 接听事件
返回通用数据
hangup 挂断事件
返回通用数据
notifySocketReconnectFailed ws连接断开事件
返回通用数据
blackList 呼出号码为黑名单事件
返回通用数据
unAuthorization token过期事件
无返回数据
agentInitStatus 初始化坐席事件
返回参数
{
callAgentStatus: xx, //客服状态
outNumber: xx, //客服外显号码
}
客服状态码查看设置客服状态说明
事件监听示范代码
mqCallSDK.on('calling', (data) => {
}).on('incomingCall', data => {
})
.on('answer', data => {
}).on('hangup', data => {
}).on('unAuthorization', () => {
})