@koi-design/callkit 2.0.0-beta.6 → 2.0.0-beta.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/dist/index.d.ts +142 -138
- package/dist/index.global.js +25 -22
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +25 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +25 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -20,27 +20,124 @@ declare class Api {
|
|
|
20
20
|
private post;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
type LoggerLevel = 'info' | 'success' | 'warn' | 'error' | 'silent';
|
|
24
|
+
interface Log {
|
|
25
|
+
timestamp: string;
|
|
26
|
+
level: LoggerLevel;
|
|
27
|
+
type?: 'INCALL' | 'SIP' | 'API' | 'OTHER';
|
|
28
|
+
message: string;
|
|
29
|
+
caller: string;
|
|
30
|
+
content: Record<string, any>;
|
|
31
|
+
}
|
|
32
|
+
type LogEntity = Omit<Log, 'timestamp' | 'level' | 'message'>;
|
|
33
|
+
declare class Logger {
|
|
34
|
+
prefix: string;
|
|
35
|
+
level: LoggerLevel;
|
|
36
|
+
private pendingTrackLogs;
|
|
37
|
+
private trackLogsTimer;
|
|
24
38
|
private callKit;
|
|
39
|
+
constructor(callKit: CallKit, level?: LoggerLevel);
|
|
40
|
+
private startTrackLogsTimer;
|
|
41
|
+
private flushTrackLogs;
|
|
42
|
+
destroy(): void;
|
|
43
|
+
setLevel(level: LoggerLevel): void;
|
|
44
|
+
info(msg: string, extra: LogEntity): void;
|
|
45
|
+
success(msg: string, extra: LogEntity): void;
|
|
46
|
+
warn(msg: string, extra: LogEntity): void;
|
|
47
|
+
error(msg: string | Error, extra: LogEntity): void;
|
|
48
|
+
private catchLog;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
type SocketSendEventType = (typeof SocketSendEvent)[keyof typeof SocketSendEvent];
|
|
52
|
+
interface SocketConfig {
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
maxAttempts: number;
|
|
55
|
+
delay: number;
|
|
56
|
+
backoffMultiplier: number;
|
|
57
|
+
pingInterval: number;
|
|
58
|
+
pingTimeout: number;
|
|
59
|
+
}
|
|
60
|
+
declare class Socket {
|
|
61
|
+
private callKit;
|
|
62
|
+
private ws?;
|
|
63
|
+
private socketConfig;
|
|
64
|
+
lastPingTime: any;
|
|
65
|
+
isConnected: boolean;
|
|
66
|
+
pingTimer?: number;
|
|
67
|
+
satrtConfirm: boolean;
|
|
68
|
+
private reconnectTimer?;
|
|
69
|
+
private isReconnecting;
|
|
70
|
+
private reconnectAttempts;
|
|
71
|
+
private socketError;
|
|
25
72
|
constructor(callKit: CallKit);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
73
|
+
init(): void;
|
|
74
|
+
private handleDisconnect;
|
|
75
|
+
private connect;
|
|
76
|
+
private onOpen;
|
|
77
|
+
private resetReconnectState;
|
|
78
|
+
private onClose;
|
|
79
|
+
private onError;
|
|
80
|
+
private confirmAck;
|
|
81
|
+
private onMessage;
|
|
82
|
+
send(event: SocketSendEventType, message?: any): void;
|
|
83
|
+
sendMessage(event: SocketSendEventType, message?: any): Promise<void>;
|
|
84
|
+
private ping;
|
|
85
|
+
private checkPing;
|
|
33
86
|
/**
|
|
34
|
-
*
|
|
35
|
-
* @param isUnprompted Whether to actively hang up
|
|
36
|
-
* @param isError Whether an error occurred
|
|
37
|
-
* @returns
|
|
87
|
+
* reset socket connection and all states
|
|
38
88
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
89
|
+
reset(): Promise<void>;
|
|
90
|
+
private attemptReconnect;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
interface WebrtcConstranis {
|
|
94
|
+
audio: {
|
|
95
|
+
autoGainControl?: boolean;
|
|
96
|
+
noiseSuppression?: boolean;
|
|
97
|
+
echoCancellation?: boolean;
|
|
98
|
+
};
|
|
99
|
+
video: false;
|
|
100
|
+
}
|
|
101
|
+
interface IConfig {
|
|
102
|
+
version: string;
|
|
103
|
+
host: string;
|
|
104
|
+
log: LoggerLevel;
|
|
105
|
+
trackLogs: boolean;
|
|
106
|
+
audioRef?: HTMLAudioElement | (() => HTMLAudioElement);
|
|
107
|
+
constrains: WebrtcConstranis;
|
|
108
|
+
socket: string;
|
|
109
|
+
reconnect?: SocketConfig;
|
|
110
|
+
userInfo: {
|
|
111
|
+
wsUrl: string;
|
|
112
|
+
sessionId: string;
|
|
113
|
+
username: string;
|
|
114
|
+
password: string;
|
|
115
|
+
encryptionPassword: string;
|
|
116
|
+
sourceType: (typeof CallSourceType)[keyof typeof CallSourceType];
|
|
117
|
+
extno: string;
|
|
118
|
+
workOrderId: string;
|
|
119
|
+
userPart: string;
|
|
120
|
+
agentId: string;
|
|
121
|
+
fsUserId: string;
|
|
122
|
+
fsPassword: string;
|
|
123
|
+
fsIp: string;
|
|
124
|
+
fsPort: string;
|
|
125
|
+
iceInfo: string[];
|
|
126
|
+
iceGatheringTimeout: number;
|
|
127
|
+
encryptionMethod: EncryptionMethodType;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
declare class Config {
|
|
131
|
+
callKit: CallKit;
|
|
132
|
+
constructor(callKit: CallKit);
|
|
133
|
+
config: IConfig;
|
|
134
|
+
getConfig: () => IConfig;
|
|
135
|
+
setConfig: (key: string, value: any) => Promise<void>;
|
|
136
|
+
setUserInfo: (key: string, value: any) => Promise<void>;
|
|
137
|
+
reset: () => Promise<void>;
|
|
138
|
+
validate: () => boolean;
|
|
139
|
+
isLogin: () => boolean;
|
|
140
|
+
check(): boolean;
|
|
44
141
|
}
|
|
45
142
|
|
|
46
143
|
declare const CallStatus: {
|
|
@@ -208,124 +305,34 @@ declare const CallSourceType: {
|
|
|
208
305
|
workOrderId: number;
|
|
209
306
|
};
|
|
210
307
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
caller: string;
|
|
218
|
-
content: Record<string, any>;
|
|
219
|
-
}
|
|
220
|
-
type LogEntity = Omit<Log, 'timestamp' | 'level' | 'message'>;
|
|
221
|
-
declare class Logger {
|
|
222
|
-
prefix: string;
|
|
223
|
-
level: LoggerLevel;
|
|
224
|
-
private pendingTrackLogs;
|
|
225
|
-
private trackLogsTimer;
|
|
226
|
-
private callKit;
|
|
227
|
-
constructor(callKit: CallKit, level?: LoggerLevel);
|
|
228
|
-
private startTrackLogsTimer;
|
|
229
|
-
private flushTrackLogs;
|
|
230
|
-
destroy(): void;
|
|
231
|
-
setLevel(level: LoggerLevel): void;
|
|
232
|
-
info(msg: string, extra: LogEntity): void;
|
|
233
|
-
success(msg: string, extra: LogEntity): void;
|
|
234
|
-
warn(msg: string, extra: LogEntity): void;
|
|
235
|
-
error(msg: string | Error, extra: LogEntity): void;
|
|
236
|
-
private catchLog;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
type SocketSendEventType = (typeof SocketSendEvent)[keyof typeof SocketSendEvent];
|
|
240
|
-
interface SocketConfig {
|
|
241
|
-
enabled: boolean;
|
|
242
|
-
maxAttempts: number;
|
|
243
|
-
delay: number;
|
|
244
|
-
backoffMultiplier: number;
|
|
245
|
-
pingInterval: number;
|
|
246
|
-
pingTimeout: number;
|
|
308
|
+
interface CallParams {
|
|
309
|
+
agentId: string;
|
|
310
|
+
sourceType: (typeof CallSourceType)[keyof typeof CallSourceType];
|
|
311
|
+
phoneNum?: string;
|
|
312
|
+
workOrderId?: string;
|
|
313
|
+
extra?: any;
|
|
247
314
|
}
|
|
248
|
-
declare class
|
|
315
|
+
declare class Call {
|
|
249
316
|
private callKit;
|
|
250
|
-
private ws?;
|
|
251
|
-
private socketConfig;
|
|
252
|
-
lastPingTime: any;
|
|
253
|
-
isConnected: boolean;
|
|
254
|
-
pingTimer?: number;
|
|
255
|
-
satrtConfirm: boolean;
|
|
256
|
-
private reconnectTimer?;
|
|
257
|
-
private isReconnecting;
|
|
258
|
-
private reconnectAttempts;
|
|
259
|
-
private socketError;
|
|
260
317
|
constructor(callKit: CallKit);
|
|
261
|
-
|
|
262
|
-
private handleDisconnect;
|
|
263
|
-
private connect;
|
|
264
|
-
private onOpen;
|
|
265
|
-
private resetReconnectState;
|
|
266
|
-
private onClose;
|
|
267
|
-
private onError;
|
|
268
|
-
private confirmAck;
|
|
269
|
-
private onMessage;
|
|
270
|
-
send(event: SocketSendEventType, message?: any): void;
|
|
271
|
-
sendMessage(event: SocketSendEventType, message?: any): Promise<void>;
|
|
272
|
-
private ping;
|
|
273
|
-
private checkPing;
|
|
318
|
+
callStart(params: Partial<CallParams>): Promise<void>;
|
|
274
319
|
/**
|
|
275
|
-
*
|
|
320
|
+
* Refer
|
|
321
|
+
* @param referTo - The referral target. If a `Session`, a REFER w/Replaces is sent.
|
|
322
|
+
* @returns
|
|
276
323
|
*/
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
interface IConfig {
|
|
290
|
-
version: string;
|
|
291
|
-
host: string;
|
|
292
|
-
log: LoggerLevel;
|
|
293
|
-
trackLogs: boolean;
|
|
294
|
-
audioRef?: HTMLAudioElement | (() => HTMLAudioElement);
|
|
295
|
-
constrains: WebrtcConstranis;
|
|
296
|
-
socket: string;
|
|
297
|
-
reconnect?: SocketConfig;
|
|
298
|
-
userInfo: {
|
|
299
|
-
wsUrl: string;
|
|
300
|
-
sessionId: string;
|
|
301
|
-
username: string;
|
|
302
|
-
password: string;
|
|
303
|
-
encryptionPassword: string;
|
|
304
|
-
sourceType: (typeof CallSourceType)[keyof typeof CallSourceType];
|
|
305
|
-
extno: string;
|
|
306
|
-
workOrderId: string;
|
|
307
|
-
userPart: string;
|
|
308
|
-
agentId: string;
|
|
309
|
-
fsUserId: string;
|
|
310
|
-
fsPassword: string;
|
|
311
|
-
fsIp: string;
|
|
312
|
-
fsPort: string;
|
|
313
|
-
iceInfo: string[];
|
|
314
|
-
iceGatheringTimeout: number;
|
|
315
|
-
encryptionMethod: EncryptionMethodType;
|
|
316
|
-
};
|
|
317
|
-
}
|
|
318
|
-
declare class Config {
|
|
319
|
-
callKit: CallKit;
|
|
320
|
-
constructor(callKit: CallKit);
|
|
321
|
-
config: IConfig;
|
|
322
|
-
getConfig: () => IConfig;
|
|
323
|
-
setConfig: (key: string, value: any) => Promise<void>;
|
|
324
|
-
setUserInfo: (key: string, value: any) => Promise<void>;
|
|
325
|
-
reset: () => void;
|
|
326
|
-
validate: () => boolean;
|
|
327
|
-
isLogin: () => boolean;
|
|
328
|
-
check(): boolean;
|
|
324
|
+
callRefer(referTo: string, options?: any): Promise<void>;
|
|
325
|
+
/**
|
|
326
|
+
* Hang up
|
|
327
|
+
* @param isUnprompted Whether to actively hang up
|
|
328
|
+
* @param isError Whether an error occurred
|
|
329
|
+
* @returns
|
|
330
|
+
*/
|
|
331
|
+
callEnd(isUnprompted?: boolean, isError?: boolean): Promise<void>;
|
|
332
|
+
callHold(): Promise<void>;
|
|
333
|
+
callUnhold(): Promise<void>;
|
|
334
|
+
callMute(): Promise<void>;
|
|
335
|
+
callUnmute(): Promise<void>;
|
|
329
336
|
}
|
|
330
337
|
|
|
331
338
|
type CallStatusType = (typeof CallStatus)[keyof typeof CallStatus];
|
|
@@ -368,7 +375,7 @@ declare class Connect {
|
|
|
368
375
|
*/
|
|
369
376
|
private isHold;
|
|
370
377
|
constructor(callKit: CallKit);
|
|
371
|
-
reset(): void
|
|
378
|
+
reset(): Promise<void>;
|
|
372
379
|
private getAduioReference;
|
|
373
380
|
permission(): Promise<void>;
|
|
374
381
|
/**
|
|
@@ -454,11 +461,6 @@ interface Listener {
|
|
|
454
461
|
event: kitEventType;
|
|
455
462
|
callback: (...args: any[]) => void;
|
|
456
463
|
}
|
|
457
|
-
interface CallOptions {
|
|
458
|
-
sourceType: (typeof CallSourceType)[keyof typeof CallSourceType];
|
|
459
|
-
phoneNum?: string;
|
|
460
|
-
workOrderId?: string;
|
|
461
|
-
}
|
|
462
464
|
declare class CallKit {
|
|
463
465
|
api: Api;
|
|
464
466
|
config: Config;
|
|
@@ -471,8 +473,10 @@ declare class CallKit {
|
|
|
471
473
|
login(username: string, password: string, extra?: {
|
|
472
474
|
[key: string]: any;
|
|
473
475
|
}): Promise<void>;
|
|
474
|
-
logout(
|
|
475
|
-
|
|
476
|
+
logout({ isReset }?: {
|
|
477
|
+
isReset?: boolean;
|
|
478
|
+
}): Promise<void>;
|
|
479
|
+
call(extno?: string | number, options?: Partial<CallParams>): Promise<void>;
|
|
476
480
|
refer(uri: string, options?: any): Promise<void>;
|
|
477
481
|
register(): Promise<void>;
|
|
478
482
|
unregister(): Promise<void>;
|
package/dist/index.global.js
CHANGED
|
@@ -3640,7 +3640,7 @@ var WebCall = (() => {
|
|
|
3640
3640
|
constructor(callKit) {
|
|
3641
3641
|
this.callKit = callKit;
|
|
3642
3642
|
}
|
|
3643
|
-
async callStart() {
|
|
3643
|
+
async callStart(params) {
|
|
3644
3644
|
if (!this.callKit.config.check())
|
|
3645
3645
|
return;
|
|
3646
3646
|
this.callKit.logger.info("callStart", {
|
|
@@ -3659,19 +3659,15 @@ var WebCall = (() => {
|
|
|
3659
3659
|
return;
|
|
3660
3660
|
}
|
|
3661
3661
|
this.callKit.connect.call(async (user) => {
|
|
3662
|
-
|
|
3662
|
+
const queryTrain = {
|
|
3663
|
+
...params?.extra || {},
|
|
3664
|
+
agentId: user.agentId,
|
|
3665
|
+
sourceType: user.sourceType
|
|
3666
|
+
};
|
|
3663
3667
|
if (user.sourceType === CallSourceType.phoneNum) {
|
|
3664
|
-
queryTrain =
|
|
3665
|
-
agentId: user.agentId,
|
|
3666
|
-
phoneNum: user.extno,
|
|
3667
|
-
sourceType: user.sourceType
|
|
3668
|
-
};
|
|
3668
|
+
queryTrain.phoneNum = user.extno;
|
|
3669
3669
|
} else if (user.sourceType === CallSourceType.workOrderId) {
|
|
3670
|
-
queryTrain =
|
|
3671
|
-
agentId: user.agentId,
|
|
3672
|
-
workOrderId: user.workOrderId,
|
|
3673
|
-
sourceType: user.sourceType
|
|
3674
|
-
};
|
|
3670
|
+
queryTrain.workOrderId = user.workOrderId;
|
|
3675
3671
|
}
|
|
3676
3672
|
this.callKit.socket.send(SocketSendEvent.CALL, queryTrain);
|
|
3677
3673
|
});
|
|
@@ -3819,7 +3815,7 @@ var WebCall = (() => {
|
|
|
3819
3815
|
}
|
|
3820
3816
|
});
|
|
3821
3817
|
};
|
|
3822
|
-
reset = () => {
|
|
3818
|
+
reset = async () => {
|
|
3823
3819
|
if (this.isLogin()) {
|
|
3824
3820
|
this.config.userInfo = {
|
|
3825
3821
|
wsUrl: "",
|
|
@@ -18499,7 +18495,7 @@ var WebCall = (() => {
|
|
|
18499
18495
|
...reconnect
|
|
18500
18496
|
};
|
|
18501
18497
|
}
|
|
18502
|
-
reset() {
|
|
18498
|
+
async reset() {
|
|
18503
18499
|
if (this.isHolding()) {
|
|
18504
18500
|
this.setHold(false);
|
|
18505
18501
|
}
|
|
@@ -18531,7 +18527,6 @@ var WebCall = (() => {
|
|
|
18531
18527
|
});
|
|
18532
18528
|
}
|
|
18533
18529
|
}
|
|
18534
|
-
this.callKit.config.reset();
|
|
18535
18530
|
this.setConnectStatus(CallStatus.init);
|
|
18536
18531
|
this.clearObserveOptionsHeartbeatInterval();
|
|
18537
18532
|
}
|
|
@@ -19656,6 +19651,7 @@ var WebCall = (() => {
|
|
|
19656
19651
|
data: data.data
|
|
19657
19652
|
}
|
|
19658
19653
|
});
|
|
19654
|
+
this.socketError = true;
|
|
19659
19655
|
this.callKit.reset();
|
|
19660
19656
|
}
|
|
19661
19657
|
if (data.event === SocketReceiveEvent.AGENT_NO_ANSWER) {
|
|
@@ -19950,7 +19946,7 @@ var WebCall = (() => {
|
|
|
19950
19946
|
});
|
|
19951
19947
|
}
|
|
19952
19948
|
}
|
|
19953
|
-
async logout() {
|
|
19949
|
+
async logout({ isReset = true } = { isReset: true }) {
|
|
19954
19950
|
if (!this.config.check())
|
|
19955
19951
|
return;
|
|
19956
19952
|
const { userInfo } = this.config.getConfig();
|
|
@@ -19973,10 +19969,9 @@ var WebCall = (() => {
|
|
|
19973
19969
|
});
|
|
19974
19970
|
}
|
|
19975
19971
|
}
|
|
19976
|
-
|
|
19977
|
-
|
|
19978
|
-
|
|
19979
|
-
this.config.reset();
|
|
19972
|
+
if (isReset) {
|
|
19973
|
+
await this.reset();
|
|
19974
|
+
}
|
|
19980
19975
|
this.trigger(KitEvent.KIT_LOGIN_CHANGE, false);
|
|
19981
19976
|
}
|
|
19982
19977
|
async call(extno = "", options = {
|
|
@@ -20010,7 +20005,7 @@ var WebCall = (() => {
|
|
|
20010
20005
|
options
|
|
20011
20006
|
}
|
|
20012
20007
|
});
|
|
20013
|
-
this.callCenter.callStart();
|
|
20008
|
+
this.callCenter.callStart(options);
|
|
20014
20009
|
}
|
|
20015
20010
|
async refer(uri, options) {
|
|
20016
20011
|
if (!this.config.check())
|
|
@@ -20127,7 +20122,15 @@ var WebCall = (() => {
|
|
|
20127
20122
|
connectStatus: this.connect.connectStatus
|
|
20128
20123
|
}
|
|
20129
20124
|
});
|
|
20130
|
-
this.connect.
|
|
20125
|
+
if (this.connect.isCalling()) {
|
|
20126
|
+
await this.hangup();
|
|
20127
|
+
}
|
|
20128
|
+
await this.connect.reset();
|
|
20129
|
+
if (this.config.isLogin()) {
|
|
20130
|
+
await this.logout({ isReset: false });
|
|
20131
|
+
}
|
|
20132
|
+
await this.config.reset();
|
|
20133
|
+
await this.socket.reset();
|
|
20131
20134
|
}
|
|
20132
20135
|
on(event, callback) {
|
|
20133
20136
|
this.listener.push({
|