@zhaokun/cti 1.4.5 → 1.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -72
- package/latest/index.html +316 -295
- package/latest/zhaokun.cti.min.js +2 -2
- package/package.json +1 -5
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# 呼叫中心 ZHAOKUN-CTI-SDK
|
|
2
2
|
|
|
3
|
+
#### 预览地址
|
|
4
|
+
|
|
5
|
+
[在线示例](https://unpkg.com/@zhaokun/cti/latest/index.html)
|
|
6
|
+
|
|
3
7
|
### 安装
|
|
4
8
|
|
|
5
9
|
#### Script 标签引入
|
|
@@ -8,6 +12,9 @@
|
|
|
8
12
|
<script src="./zhaokun.cti.min.js"></script>
|
|
9
13
|
```
|
|
10
14
|
|
|
15
|
+
[zhaokun.cti.min.js 下载](https://unpkg.com/@zhaokun/cti)
|
|
16
|
+
[denoiser 文件下载](https://unpkg.com/@zhaokun/cti/latest/denoiser.wasm)
|
|
17
|
+
|
|
11
18
|
#### NPM 安装
|
|
12
19
|
|
|
13
20
|
```
|
|
@@ -25,12 +32,12 @@ function init() {
|
|
|
25
32
|
content = new zhaokunCTI({
|
|
26
33
|
webrtc: true, // 必填 是否是webrtc
|
|
27
34
|
token: "", // 必填 接口获取的token
|
|
28
|
-
agent: "", // 必填 坐席工号
|
|
29
|
-
account: "", // 必填 分机号
|
|
30
|
-
socket: "", // 必填 socket连接地址
|
|
35
|
+
agent: "", // 必填 坐席工号 四位分机号 如1001
|
|
36
|
+
account: "", // 必填 分机号 格式 C{企业id}{agent} 如C10001001
|
|
37
|
+
socket: "", // 必填 socket连接地址 例如 ws(s)://example.com
|
|
31
38
|
env: "", // debug 打印日志
|
|
32
39
|
aiDenoise: false, // ai 降噪开关
|
|
33
|
-
aiDenoisePath: "https://www.example.com/denoiser.wasm", //
|
|
40
|
+
aiDenoisePath: "https://www.example.com/denoiser.wasm", // 网站路径地址
|
|
34
41
|
})
|
|
35
42
|
|
|
36
43
|
content.onmessage(function (obj) {
|
|
@@ -41,8 +48,9 @@ function init() {
|
|
|
41
48
|
})
|
|
42
49
|
|
|
43
50
|
// socket 连接成功
|
|
44
|
-
content.onopen(function () {
|
|
51
|
+
content.onopen(function (obj) {
|
|
45
52
|
console.log("onopen")
|
|
53
|
+
// obj.code 200 连接成功 201 断网重连连接成功 202 JsSIP重连成功
|
|
46
54
|
})
|
|
47
55
|
|
|
48
56
|
// 获取在线时间
|
|
@@ -60,7 +68,7 @@ function init() {
|
|
|
60
68
|
content.onpermission(function (permission) {
|
|
61
69
|
// console.log("onpermission", permission)
|
|
62
70
|
{
|
|
63
|
-
|
|
71
|
+
"microphone": true // 麦克风是否开启 true false
|
|
64
72
|
}
|
|
65
73
|
})
|
|
66
74
|
|
|
@@ -70,7 +78,8 @@ function init() {
|
|
|
70
78
|
})
|
|
71
79
|
|
|
72
80
|
// socket 连接断开
|
|
73
|
-
content.onclose(function () {
|
|
81
|
+
content.onclose(function (obj) {
|
|
82
|
+
// obj.code 200 正常断开,201 网络异常断开,202 JsSIP重连 203 WebRTC注册失败断开
|
|
74
83
|
console.log("onclose")
|
|
75
84
|
})
|
|
76
85
|
|
|
@@ -165,7 +174,7 @@ content.agent.transferQueue("")
|
|
|
165
174
|
#### 询问开始
|
|
166
175
|
|
|
167
176
|
```
|
|
168
|
-
content.agent.
|
|
177
|
+
content.agent.consultStart({
|
|
169
178
|
customer: "", // 手机号或分机号
|
|
170
179
|
relayNumber: "", // 主叫号码(中继号码)
|
|
171
180
|
})
|
|
@@ -222,6 +231,14 @@ content.agent.relayList()
|
|
|
222
231
|
content.agent.queueList()
|
|
223
232
|
```
|
|
224
233
|
|
|
234
|
+
#### ai 降噪开关
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
// true 开启
|
|
238
|
+
// false 关闭
|
|
239
|
+
content.tool.setAiDenoise(true/false)
|
|
240
|
+
```
|
|
241
|
+
|
|
225
242
|
#### 获取系统信息
|
|
226
243
|
|
|
227
244
|
```
|
|
@@ -287,91 +304,146 @@ content.tool.getDefaultMedia()
|
|
|
287
304
|
|
|
288
305
|
#### 中继号码消息(响应)
|
|
289
306
|
|
|
290
|
-
| 参数名称 | 类型 | 描述 |
|
|
291
|
-
| ------------- | ------ | --------- |
|
|
292
|
-
| type | string | RelayList |
|
|
293
|
-
| data | object | |
|
|
294
|
-
| └ relay400 | string | 400号码 |
|
|
295
|
-
| └ relayName | string | 中继名称 |
|
|
296
|
-
| └ relayNumber | string | 中继号码 |
|
|
307
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
308
|
+
| ------------- | ------ | ------ | --------- |
|
|
309
|
+
| type | string | 是 | RelayList |
|
|
310
|
+
| data | object | 是 | |
|
|
311
|
+
| └ relay400 | string | 否 | 400号码 |
|
|
312
|
+
| └ relayName | string | 是 | 中继名称 |
|
|
313
|
+
| └ relayNumber | string | 是 | 中继号码 |
|
|
297
314
|
|
|
298
315
|
#### 队列列表消息(响应)
|
|
299
316
|
|
|
300
|
-
| 参数名称 | 类型 | 描述 |
|
|
301
|
-
| -------- | ------ | --------- |
|
|
302
|
-
| type | string | QueueList |
|
|
303
|
-
| data | object | |
|
|
304
|
-
| └ id | string | 队列ID |
|
|
305
|
-
| └ title | string | 队列名称 |
|
|
317
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
318
|
+
| -------- | ------ | ------ | --------- |
|
|
319
|
+
| type | string | 是 | QueueList |
|
|
320
|
+
| data | object | 是 | |
|
|
321
|
+
| └ id | string | 是 | 队列ID |
|
|
322
|
+
| └ title | string | 是 | 队列名称 |
|
|
306
323
|
|
|
307
324
|
#### 号码属地消息(响应)
|
|
308
325
|
|
|
309
|
-
| 参数名称 | 类型 | 描述 |
|
|
310
|
-
| ---------- | ------ | ------------ |
|
|
311
|
-
| type | string | RegionInfo |
|
|
312
|
-
| data | object | |
|
|
313
|
-
| └ channel | string | 运营商 |
|
|
314
|
-
| └ zone | string | 区号 |
|
|
315
|
-
| └ code | string | 行政区域代码 |
|
|
316
|
-
| └ province | string | 省 |
|
|
317
|
-
| └ city | string | 市 |
|
|
326
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
327
|
+
| ---------- | ------ | ------ | ------------ |
|
|
328
|
+
| type | string | 是 | RegionInfo |
|
|
329
|
+
| data | object | 是 | |
|
|
330
|
+
| └ channel | string | 是 | 运营商 |
|
|
331
|
+
| └ zone | string | 是 | 区号 |
|
|
332
|
+
| └ code | string | 是 | 行政区域代码 |
|
|
333
|
+
| └ province | string | 是 | 省 |
|
|
334
|
+
| └ city | string | 是 | 市 |
|
|
335
|
+
|
|
336
|
+
> 注:号码属地仅支持11位手机号码
|
|
318
337
|
|
|
319
338
|
#### 账号签出(响应)
|
|
320
339
|
|
|
321
|
-
| 参数名称 | 类型 | 描述 |
|
|
322
|
-
| -------- | ------ | ------ |
|
|
323
|
-
| type | string | Logout |
|
|
324
|
-
| data | object | |
|
|
340
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
341
|
+
| -------- | ------ | ------ | ------ |
|
|
342
|
+
| type | string | 是 | Logout |
|
|
343
|
+
| data | object | 否 | |
|
|
325
344
|
|
|
326
345
|
#### 坐席状态消息(响应)
|
|
327
346
|
|
|
328
|
-
| 参数名称 | 类型 | 描述 |
|
|
329
|
-
| --------- | ------- | ------------------------------------------- |
|
|
330
|
-
| type | string | Status |
|
|
331
|
-
| data | object | |
|
|
332
|
-
| └ uid | integer | 账号ID |
|
|
333
|
-
| └ account | string | 话机账号 |
|
|
334
|
-
| └ status | integer | 状态(1空闲2忙碌3小休4振铃5通话6保持7后处理) |
|
|
335
|
-
| └ time | integer | 状态时间(10位时间戳) |
|
|
347
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
348
|
+
| --------- | ------- | ------ | ------------------------------------------- |
|
|
349
|
+
| type | string | 是 | Status |
|
|
350
|
+
| data | object | 是 | |
|
|
351
|
+
| └ uid | integer | 是 | 账号ID |
|
|
352
|
+
| └ account | string | 是 | 话机账号 |
|
|
353
|
+
| └ status | integer | 是 | 状态(1空闲2忙碌3小休4振铃5通话6保持7后处理) |
|
|
354
|
+
| └ time | integer | 是 | 状态时间(10位时间戳) |
|
|
336
355
|
|
|
337
356
|
#### 电话振铃(响应)
|
|
338
357
|
|
|
339
|
-
| 参数名称 | 类型 | 描述
|
|
340
|
-
| -------------- | ------- |
|
|
341
|
-
| type | string | Ring
|
|
342
|
-
| data | object |
|
|
343
|
-
| └ id | string | 电话UUID
|
|
344
|
-
| └ uid | integer | 账号ID
|
|
345
|
-
| └ type | integer | 电话类型(1呼出0呼入)
|
|
346
|
-
| └ customer | string | 客户号码
|
|
347
|
-
| └ relay400 | string | relay400
|
|
348
|
-
| └ transferType | string | 转接类型
|
|
349
|
-
| └ transferFrom | string | 转接来源
|
|
350
|
-
| └ custom | string | 业务编号
|
|
358
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
359
|
+
| -------------- | ------- | ------ | ---------------------------------------- |
|
|
360
|
+
| type | string | 是 | Ring |
|
|
361
|
+
| data | object | 是 | |
|
|
362
|
+
| └ id | string | 是 | 电话UUID |
|
|
363
|
+
| └ uid | integer | 是 | 账号ID |
|
|
364
|
+
| └ type | integer | 是 | 电话类型(1呼出0呼入) |
|
|
365
|
+
| └ customer | string | 是 | 客户号码 |
|
|
366
|
+
| └ relay400 | string | 否 | relay400 |
|
|
367
|
+
| └ transferType | string | 否 | 转接类型(来电是转接、三方、询问该值存在) |
|
|
368
|
+
| └ transferFrom | string | 否 | 转接来源 |
|
|
369
|
+
| └ custom | string | 否 | 业务编号 |
|
|
370
|
+
|
|
371
|
+
#### 挂机(响应)
|
|
372
|
+
|
|
373
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
374
|
+
| -------- | ------ | ------ | -------- |
|
|
375
|
+
| type | string | 是 | Hangup |
|
|
376
|
+
| data | string | | |
|
|
377
|
+
| └ cause | string | 是 | 挂机原因 |
|
|
378
|
+
|
|
379
|
+
> 挂机原因:
|
|
380
|
+
> | 类型 | 中文 |
|
|
381
|
+
> | ---- | ---- |
|
|
382
|
+
> | NORMAL_CLEARING | 正常挂机 |
|
|
383
|
+
> | ORIGINATOR_CANCEL | 振铃取消 |
|
|
384
|
+
> | CALL_REJECTED | 拒接 |
|
|
385
|
+
> | NO_ANSWER | 无人接听 |
|
|
386
|
+
> | USER_BUSY | 用户忙 |
|
|
387
|
+
> | MEDIA_TIMEOUT | 媒体超时 |
|
|
388
|
+
> | UNALLOCATED_NUMBER | 号码错误 |
|
|
351
389
|
|
|
352
390
|
#### 三方/询问(响应)
|
|
353
391
|
|
|
354
|
-
| 参数名称 | 类型 | 描述 |
|
|
355
|
-
| -------- | ------ | ------------------------------------------------- |
|
|
356
|
-
| type | string | TransferResult |
|
|
357
|
-
| data | object | |
|
|
358
|
-
| └ type | string | 类型(threeway三方consult询问) |
|
|
359
|
-
| └ result | string | 结果(start开始 cancel取消 transfer转接answer应答) |
|
|
392
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
393
|
+
| -------- | ------ | ------ | ------------------------------------------------- |
|
|
394
|
+
| type | string | 是 | TransferResult |
|
|
395
|
+
| data | object | 是 | |
|
|
396
|
+
| └ type | string | 是 | 类型(threeway三方consult询问) |
|
|
397
|
+
| └ result | string | 是 | 结果(start开始 cancel取消 transfer转接answer应答) |
|
|
398
|
+
|
|
399
|
+
> 注:
|
|
400
|
+
>
|
|
401
|
+
> - start:表示当前询问或者三方请求发起成功
|
|
402
|
+
> - answer:表示被询问或者三方的人电话已经接通
|
|
403
|
+
> - cancel:表示被询问或三方的人电话挂机
|
|
404
|
+
> - transfer:表示发起询问的人挂机或发起人执行询问转
|
|
360
405
|
|
|
361
406
|
#### 状态恢复(响应)
|
|
362
407
|
|
|
363
|
-
| 参数名称 | 类型 | 描述 |
|
|
364
|
-
| ---------- | ------- | -------------------- |
|
|
365
|
-
| type | string | Resume |
|
|
366
|
-
| data | object | |
|
|
367
|
-
| └ id | string | 电话UUID |
|
|
368
|
-
| └ uid | integer | 账号ID |
|
|
369
|
-
| └ type | integer | 电话类型(1呼出0呼入) |
|
|
370
|
-
| └ customer | string | 客户号码 |
|
|
408
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
409
|
+
| ---------- | ------- | ------ | -------------------- |
|
|
410
|
+
| type | string | 是 | Resume |
|
|
411
|
+
| data | object | 是 | |
|
|
412
|
+
| └ id | string | 是 | 电话UUID |
|
|
413
|
+
| └ uid | integer | 是 | 账号ID |
|
|
414
|
+
| └ type | integer | 是 | 电话类型(1呼出0呼入) |
|
|
415
|
+
| └ customer | string | 是 | 客户号码 |
|
|
416
|
+
|
|
417
|
+
> 注:该场景是客户端在通话或振铃过程中,websocket连接断开后重新连接登录成功,服务器检测电话在通话或振铃中,会主动推送该事件。
|
|
371
418
|
|
|
372
419
|
#### 通用错误消息(响应)
|
|
373
420
|
|
|
374
|
-
| 参数名称 | 类型
|
|
375
|
-
| -------- | ------ | -------- |
|
|
376
|
-
| type | string | Error |
|
|
377
|
-
|
|
|
421
|
+
| 参数名称 | 类型 | 必返回 | 描述 |
|
|
422
|
+
| -------- | ------- | ------ | -------- |
|
|
423
|
+
| type | string | 是 | Error |
|
|
424
|
+
| code | integer | 是 | 错误编码 |
|
|
425
|
+
| data | string | 是 | 错误消息 |
|
|
426
|
+
|
|
427
|
+
#### 报错编码
|
|
428
|
+
|
|
429
|
+
| 报错编码code | 报错消息 | 报错级别 | 连接状态 | 描述 |
|
|
430
|
+
| ------------ | ----------------------------- | -------- | -------- | ---------------------------------------------------------------------------------- |
|
|
431
|
+
| 500 | 服务运行故障,请联系IT管理员 | 高 | 终止 | 系统级异常,上报厂商 |
|
|
432
|
+
| 11000 | token验证未通过 | 高 | 终止 | 需要重新获取Token再次连接 |
|
|
433
|
+
| 11001 | 无可用机器 | 高 | 终止 | 系统级异常,上报厂商 |
|
|
434
|
+
| 11010 | 消息格式不正确 | 高 | 正常 | 消息格式不符合系统规范 |
|
|
435
|
+
| 11011 | 请求已提交 | 中 | 正常 | 同一操作,出现多次请求被退回,比如:连续发送两次呼叫指令 |
|
|
436
|
+
| 11012 | 表单验证不正确 | 中 | 正常 | 表单请求数据验证未通过,建议排除客户端程序或数据 |
|
|
437
|
+
| 11013 | 系统配置不存在 | 高 | 终止 | 系统基础配置不存在,基本不会出现可以忽略 |
|
|
438
|
+
| 11030 | 坐席信息不存在 | 中 | 正常 | 登录过程中,使用了系统不存在账户 |
|
|
439
|
+
| 11031 | 坐席状态不允许操作 | 低 | 正常 | 非法操作,比如:坐席在通话中,客户端发送呼叫指令 |
|
|
440
|
+
| 11033 | 坐席手机号码不存在 | 低 | 正常 | 坐席账号未绑定手机号码,在使用手机接听请求中被退回 |
|
|
441
|
+
| 11034 | 坐席账号已登录 | 中 | 正常 | 坐席已经登录后,再次收到登录请求 |
|
|
442
|
+
| 11035 | 坐席已开启手机接听 | 低 | 正常 | 坐席已经是手机接听模式,再次请求开启手机接听 |
|
|
443
|
+
| 11036 | 坐席已开启手机接听,不允许呼叫 | 低 | 正常 | 坐席使用手机接听过程中,只能接电话,无法外呼 |
|
|
444
|
+
| 11037 | 被叫坐席状态不允许呼叫 | 低 | 正常 | 在转接、三方、询问操作中,被叫坐席非空闲状态不允许呼叫 |
|
|
445
|
+
| 11040 | 分机账号未注册 | 高 | 正常 | 坐席登录过程中,系统检测话机未注册,无法登录系统 |
|
|
446
|
+
| 11041 | 分机账号不存在 | 高 | 终止 | 登录请求需要填写坐席账号和分机号码,客户端使用了不存在的账号 |
|
|
447
|
+
| 11050 | 通话不存在 | 低 | 正常 | 坐席在非通话或振铃过程中,请求了需要通话数据的操作,比如:挂机、DTMF、评价、转接等 |
|
|
448
|
+
| 11051 | 通话路由不存在 | 高 | 正常 | 系统级异常,上报厂商 |
|
|
449
|
+
| 11053 | 黑名单号码 | 低 | 正常 | 被叫号码命中系统黑名单 |
|