@koi-design/callkit 2.0.0-beta.8 → 2.0.0
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 +42 -30
- package/dist/index.global.js +290 -214
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +290 -214
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +290 -214
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -187,6 +187,10 @@ var KitEvent = {
|
|
|
187
187
|
* Mute status change
|
|
188
188
|
*/
|
|
189
189
|
KIT_SET_MUTE: "muteChange",
|
|
190
|
+
/**
|
|
191
|
+
* Call id change
|
|
192
|
+
*/
|
|
193
|
+
KIT_CALL_ID_CHANGE: "callIdChange",
|
|
190
194
|
/**
|
|
191
195
|
* Error
|
|
192
196
|
*/
|
|
@@ -448,7 +452,8 @@ var SocketReceiveEvent = {
|
|
|
448
452
|
/**
|
|
449
453
|
* Error
|
|
450
454
|
*/
|
|
451
|
-
ERROR: "ERROR"
|
|
455
|
+
ERROR: "ERROR",
|
|
456
|
+
SESSION_ERROR: "SESSION_ERROR"
|
|
452
457
|
};
|
|
453
458
|
var EncryptionMethod = {
|
|
454
459
|
NONE: "NONE",
|
|
@@ -468,6 +473,11 @@ var CallSourceType = {
|
|
|
468
473
|
phoneNum: 1,
|
|
469
474
|
workOrderId: 2
|
|
470
475
|
};
|
|
476
|
+
var trackLogsDefaultConfig = {
|
|
477
|
+
enabled: false,
|
|
478
|
+
interval: 5e3,
|
|
479
|
+
maxSize: 8192
|
|
480
|
+
};
|
|
471
481
|
|
|
472
482
|
// package/call.ts
|
|
473
483
|
var Call = class {
|
|
@@ -535,6 +545,14 @@ var Call = class {
|
|
|
535
545
|
return;
|
|
536
546
|
if (!this.callKit.config.check())
|
|
537
547
|
return;
|
|
548
|
+
this.callKit.logger.info("callEnd", {
|
|
549
|
+
caller: "Call.callEnd",
|
|
550
|
+
content: {
|
|
551
|
+
isUnprompted,
|
|
552
|
+
isError,
|
|
553
|
+
connectStatus: this.callKit.connect.connectStatus
|
|
554
|
+
}
|
|
555
|
+
});
|
|
538
556
|
this.callKit.connect.hangup(isUnprompted, isError);
|
|
539
557
|
}
|
|
540
558
|
async callHold() {
|
|
@@ -599,6 +617,59 @@ var Call = class {
|
|
|
599
617
|
}
|
|
600
618
|
};
|
|
601
619
|
|
|
620
|
+
// package.json
|
|
621
|
+
var package_default = {
|
|
622
|
+
name: "@koi-design/callkit",
|
|
623
|
+
version: "2.0.0",
|
|
624
|
+
description: "callkit",
|
|
625
|
+
author: "koi",
|
|
626
|
+
license: "ISC",
|
|
627
|
+
scripts: {
|
|
628
|
+
build: "tsup",
|
|
629
|
+
start: "tsup --watch",
|
|
630
|
+
dev: "vite",
|
|
631
|
+
lint: "eslint -c .eslintrc.js --ext .jsx,.js,.tsx,.ts ./package --fix",
|
|
632
|
+
prepare: "husky install",
|
|
633
|
+
release: "tsup && node scripts/pkg.js"
|
|
634
|
+
},
|
|
635
|
+
exports: {
|
|
636
|
+
".": {
|
|
637
|
+
require: "./dist/index.js",
|
|
638
|
+
import: "./dist/index.mjs"
|
|
639
|
+
}
|
|
640
|
+
},
|
|
641
|
+
main: "./dist/index.js",
|
|
642
|
+
module: "./dist/index.mjs",
|
|
643
|
+
types: "./dist/index.d.ts",
|
|
644
|
+
files: [
|
|
645
|
+
"dist"
|
|
646
|
+
],
|
|
647
|
+
dependencies: {
|
|
648
|
+
axios: "~0.26.1",
|
|
649
|
+
"blueimp-md5": "^2.12.0",
|
|
650
|
+
"eslint-plugin-jsonc": "^2.21.0",
|
|
651
|
+
"json-stringify-safe": "^5.0.1",
|
|
652
|
+
"sip.js": "^0.21.2"
|
|
653
|
+
},
|
|
654
|
+
devDependencies: {
|
|
655
|
+
"@commitlint/cli": "^9.1.2",
|
|
656
|
+
"@commitlint/config-conventional": "^9.1.2",
|
|
657
|
+
"@koi-design/eslint-config-ts": "^0.0.14",
|
|
658
|
+
"@types/blueimp-md5": "^2.18.2",
|
|
659
|
+
archiver: "^5.3.1",
|
|
660
|
+
consola: "^3.4.2",
|
|
661
|
+
eslint: "~8.29.0",
|
|
662
|
+
"eslint-config-prettier": "^10.1.5",
|
|
663
|
+
"eslint-plugin-prettier": "^5.5.0",
|
|
664
|
+
husky: "^8.0.3",
|
|
665
|
+
"lint-staged": "^10.5.4",
|
|
666
|
+
prettier: "^2.6.2",
|
|
667
|
+
tsup: "6.6.3",
|
|
668
|
+
typescript: "^4.6.3",
|
|
669
|
+
vite: "^4"
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
|
|
602
673
|
// package/config.ts
|
|
603
674
|
var Config = class {
|
|
604
675
|
callKit;
|
|
@@ -606,14 +677,10 @@ var Config = class {
|
|
|
606
677
|
this.callKit = callKit;
|
|
607
678
|
}
|
|
608
679
|
config = {
|
|
609
|
-
version:
|
|
680
|
+
version: `v${package_default.version}`,
|
|
610
681
|
host: "",
|
|
611
682
|
log: "info",
|
|
612
|
-
trackLogs:
|
|
613
|
-
enabled: false,
|
|
614
|
-
interval: 5e3,
|
|
615
|
-
maxSize: 8192
|
|
616
|
-
},
|
|
683
|
+
trackLogs: trackLogsDefaultConfig,
|
|
617
684
|
audioRef: void 0,
|
|
618
685
|
constrains: constrainsDefault,
|
|
619
686
|
socket: "",
|
|
@@ -698,9 +765,11 @@ var Config = class {
|
|
|
698
765
|
}
|
|
699
766
|
return true;
|
|
700
767
|
}
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
768
|
+
getTrackLogsConfig() {
|
|
769
|
+
return this.config?.trackLogs ?? trackLogsDefaultConfig;
|
|
770
|
+
}
|
|
771
|
+
enableTrackLogs(enabled) {
|
|
772
|
+
this.config.trackLogs.enabled = enabled;
|
|
704
773
|
}
|
|
705
774
|
};
|
|
706
775
|
|
|
@@ -729,11 +798,7 @@ var Logger = class {
|
|
|
729
798
|
this.startTrackLogsTimer();
|
|
730
799
|
}
|
|
731
800
|
startTrackLogsTimer() {
|
|
732
|
-
const {
|
|
733
|
-
if (!trackLogs.enabled) {
|
|
734
|
-
return;
|
|
735
|
-
}
|
|
736
|
-
const { interval } = trackLogs;
|
|
801
|
+
const { interval } = this.callKit.config.getTrackLogsConfig();
|
|
737
802
|
if (this.trackLogsTimer) {
|
|
738
803
|
return;
|
|
739
804
|
}
|
|
@@ -745,14 +810,12 @@ var Logger = class {
|
|
|
745
810
|
if (this.pendingTrackLogs.length === 0) {
|
|
746
811
|
return;
|
|
747
812
|
}
|
|
748
|
-
const
|
|
749
|
-
if (
|
|
813
|
+
const { enabled, maxSize } = this.callKit.config.getTrackLogsConfig();
|
|
814
|
+
if (enabled) {
|
|
750
815
|
try {
|
|
751
816
|
const chunks = [];
|
|
752
817
|
let currentChunk = [];
|
|
753
818
|
let currentSize = 0;
|
|
754
|
-
const { trackLogs } = this.callKit.config.getConfig();
|
|
755
|
-
const { maxSize } = trackLogs;
|
|
756
819
|
for (const log of this.pendingTrackLogs) {
|
|
757
820
|
const logSize = getByteSize(log);
|
|
758
821
|
const separator = currentChunk.length > 0 ? "\n" : "";
|
|
@@ -806,7 +869,7 @@ var Logger = class {
|
|
|
806
869
|
console.log(`%c${logString}`, `color: orange;`);
|
|
807
870
|
}
|
|
808
871
|
}
|
|
809
|
-
error(msg, extra) {
|
|
872
|
+
error(msg, extra, noTrigger = false) {
|
|
810
873
|
const errorMsg = msg instanceof Error ? msg.message : msg;
|
|
811
874
|
const logString = this.catchLog(errorMsg, extra, "error");
|
|
812
875
|
if (getLevel(this.level) >= getLevel("error")) {
|
|
@@ -814,11 +877,13 @@ var Logger = class {
|
|
|
814
877
|
}
|
|
815
878
|
const { errCode, ...rest } = extra?.content ?? {};
|
|
816
879
|
const errorCode = errCode ?? ErrorCode.UNKNOWN_ERROR;
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
880
|
+
if (!noTrigger) {
|
|
881
|
+
this.callKit.trigger(KitEvent.KIT_ERROR, {
|
|
882
|
+
code: errorCode,
|
|
883
|
+
msg: errorMsg,
|
|
884
|
+
data: rest
|
|
885
|
+
});
|
|
886
|
+
}
|
|
822
887
|
const error = new Error(errorMsg);
|
|
823
888
|
error.name = "CallKitError";
|
|
824
889
|
error.code = errorCode;
|
|
@@ -836,11 +901,11 @@ var Logger = class {
|
|
|
836
901
|
content: extra?.content ?? {}
|
|
837
902
|
};
|
|
838
903
|
const logString = transformLog(log);
|
|
839
|
-
const
|
|
840
|
-
if (
|
|
904
|
+
const { enabled } = this.callKit.config.getTrackLogsConfig();
|
|
905
|
+
if (enabled) {
|
|
841
906
|
this.pendingTrackLogs.push(logString);
|
|
842
907
|
}
|
|
843
|
-
this.callKit.trigger(KitEvent.KIT_LOG, logString);
|
|
908
|
+
this.callKit.trigger(KitEvent.KIT_LOG, logString, true);
|
|
844
909
|
return logString;
|
|
845
910
|
}
|
|
846
911
|
};
|
|
@@ -900,43 +965,46 @@ var initUserMedia = () => {
|
|
|
900
965
|
var Connect = class {
|
|
901
966
|
callKit;
|
|
902
967
|
/**
|
|
903
|
-
|
|
968
|
+
*@description Reconnect config
|
|
969
|
+
*/
|
|
970
|
+
reconnectConfig;
|
|
971
|
+
/**
|
|
972
|
+
*@description Whether muted
|
|
973
|
+
*/
|
|
974
|
+
isMute = false;
|
|
975
|
+
/**
|
|
976
|
+
*@description Whether registered
|
|
977
|
+
*/
|
|
978
|
+
isRegister = false;
|
|
979
|
+
/**
|
|
980
|
+
*@description Whether holding
|
|
981
|
+
*/
|
|
982
|
+
isHold = false;
|
|
983
|
+
/**
|
|
984
|
+
*@description Connect status: init registered connecting calling
|
|
904
985
|
*/
|
|
905
986
|
connectStatus = CallStatus.init;
|
|
906
987
|
currentSession;
|
|
907
988
|
mediaStream;
|
|
908
989
|
userAgent;
|
|
909
990
|
registerer;
|
|
910
|
-
// current call id for invite data
|
|
911
|
-
currentCallId;
|
|
912
991
|
/**
|
|
913
|
-
|
|
992
|
+
*@description Whether it's a re-connected
|
|
914
993
|
*/
|
|
915
994
|
isReConnected = false;
|
|
916
|
-
observeOptionsHeartbeatHandler = null;
|
|
917
995
|
// sipConnected = false;
|
|
918
996
|
/**
|
|
919
|
-
|
|
997
|
+
*@description Whether it's an outgoing call
|
|
920
998
|
*/
|
|
921
999
|
isOutgoing = false;
|
|
922
1000
|
/**
|
|
923
|
-
|
|
1001
|
+
*@description Whether it's an active hangup
|
|
924
1002
|
*/
|
|
925
1003
|
isUnprompted = false;
|
|
926
|
-
isCurrentSessionInvited = false;
|
|
927
|
-
reconnectConfig;
|
|
928
|
-
/**
|
|
929
|
-
* Whether muted
|
|
930
|
-
*/
|
|
931
|
-
isMute = false;
|
|
932
1004
|
/**
|
|
933
|
-
|
|
1005
|
+
*@description Whether the current session is invited
|
|
934
1006
|
*/
|
|
935
|
-
|
|
936
|
-
/**
|
|
937
|
-
* Whether holding
|
|
938
|
-
*/
|
|
939
|
-
isHold = false;
|
|
1007
|
+
hasInvite = false;
|
|
940
1008
|
constructor(callKit) {
|
|
941
1009
|
this.callKit = callKit;
|
|
942
1010
|
const { reconnect = {} } = this.callKit.config.getConfig();
|
|
@@ -945,15 +1013,33 @@ var Connect = class {
|
|
|
945
1013
|
...reconnect
|
|
946
1014
|
};
|
|
947
1015
|
}
|
|
1016
|
+
// current call id for invite data
|
|
1017
|
+
currentCallId = null;
|
|
1018
|
+
setCallId(callId) {
|
|
1019
|
+
this.callKit.logger.info("setCallId", {
|
|
1020
|
+
caller: "Connect.setCallId",
|
|
1021
|
+
content: {
|
|
1022
|
+
callId
|
|
1023
|
+
}
|
|
1024
|
+
});
|
|
1025
|
+
this.currentCallId = callId;
|
|
1026
|
+
this.callKit.trigger(KitEvent.KIT_CALL_ID_CHANGE, callId);
|
|
1027
|
+
}
|
|
948
1028
|
async reset() {
|
|
949
1029
|
if (this.isHolding()) {
|
|
950
|
-
this.setHold(false);
|
|
1030
|
+
await this.setHold(false);
|
|
1031
|
+
}
|
|
1032
|
+
if (this.isMuted()) {
|
|
1033
|
+
await this.setMute(false);
|
|
951
1034
|
}
|
|
952
1035
|
if (this.connectStatus !== CallStatus.init) {
|
|
953
1036
|
this.setConnectStatus(CallStatus.init);
|
|
954
1037
|
}
|
|
955
1038
|
if (this.isRegistered()) {
|
|
956
|
-
this.unregister();
|
|
1039
|
+
await this.unregister();
|
|
1040
|
+
}
|
|
1041
|
+
if (this.currentCallId) {
|
|
1042
|
+
this.setCallId(null);
|
|
957
1043
|
}
|
|
958
1044
|
this.currentSession = void 0;
|
|
959
1045
|
this.mediaStream = void 0;
|
|
@@ -961,7 +1047,7 @@ var Connect = class {
|
|
|
961
1047
|
this.registerer = void 0;
|
|
962
1048
|
this.isOutgoing = false;
|
|
963
1049
|
this.isUnprompted = false;
|
|
964
|
-
this.
|
|
1050
|
+
this.hasInvite = false;
|
|
965
1051
|
if (this.mediaStream) {
|
|
966
1052
|
try {
|
|
967
1053
|
closeStream(this.mediaStream);
|
|
@@ -978,7 +1064,7 @@ var Connect = class {
|
|
|
978
1064
|
}
|
|
979
1065
|
}
|
|
980
1066
|
this.setConnectStatus(CallStatus.init);
|
|
981
|
-
this.
|
|
1067
|
+
this.clearHeartbeat();
|
|
982
1068
|
}
|
|
983
1069
|
getAduioReference() {
|
|
984
1070
|
const { audioRef } = this.callKit.config.getConfig();
|
|
@@ -1043,16 +1129,19 @@ var Connect = class {
|
|
|
1043
1129
|
isInit() {
|
|
1044
1130
|
return this.connectStatus === CallStatus.init;
|
|
1045
1131
|
}
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1132
|
+
heartbeatInterval;
|
|
1133
|
+
heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
1134
|
+
clearHeartbeat() {
|
|
1135
|
+
if (this.heartbeatInterval) {
|
|
1136
|
+
clearInterval(this.heartbeatInterval);
|
|
1137
|
+
this.heartbeatInterval = null;
|
|
1050
1138
|
}
|
|
1139
|
+
this.heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
1051
1140
|
}
|
|
1052
|
-
heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
1053
1141
|
startHeartbeat() {
|
|
1054
1142
|
this.heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
1055
|
-
|
|
1143
|
+
this.clearHeartbeat();
|
|
1144
|
+
this.heartbeatInterval = setInterval(() => {
|
|
1056
1145
|
this.heartbeatFlag -= 1;
|
|
1057
1146
|
if (this.heartbeatFlag <= 0) {
|
|
1058
1147
|
this.heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
@@ -1085,13 +1174,13 @@ var Connect = class {
|
|
|
1085
1174
|
});
|
|
1086
1175
|
return;
|
|
1087
1176
|
}
|
|
1177
|
+
this.callKit.reset();
|
|
1088
1178
|
this.callKit.logger.error("connectStatus is not init", {
|
|
1089
1179
|
caller: "Connect.register",
|
|
1090
1180
|
content: {
|
|
1091
1181
|
errCode: ErrorCode.CONNECT_CALL_STATUS_ERROR
|
|
1092
1182
|
}
|
|
1093
1183
|
});
|
|
1094
|
-
this.callKit.reset();
|
|
1095
1184
|
return;
|
|
1096
1185
|
}
|
|
1097
1186
|
this.callKit.logger.info("connect register", {
|
|
@@ -1101,13 +1190,13 @@ var Connect = class {
|
|
|
1101
1190
|
}
|
|
1102
1191
|
});
|
|
1103
1192
|
await this.permission().catch((err) => {
|
|
1193
|
+
this.callKit.reset();
|
|
1104
1194
|
this.callKit.logger.error(err, {
|
|
1105
1195
|
caller: "Connect.register",
|
|
1106
1196
|
content: {
|
|
1107
1197
|
errCode: ErrorCode.WEBRTC_USER_MEDIA_ERROR
|
|
1108
1198
|
}
|
|
1109
1199
|
});
|
|
1110
|
-
this.callKit.reset();
|
|
1111
1200
|
});
|
|
1112
1201
|
const { userInfo, constrains } = this.callKit.config.getConfig();
|
|
1113
1202
|
const localStreamFactory = async () => {
|
|
@@ -1173,19 +1262,19 @@ var Connect = class {
|
|
|
1173
1262
|
const observeSocketStatus = (userAgent, extra) => {
|
|
1174
1263
|
const { that = this } = extra;
|
|
1175
1264
|
const core = userAgent.userAgentCore;
|
|
1176
|
-
const
|
|
1177
|
-
core.
|
|
1265
|
+
const originalReceiveIncomingRequestFromTransport = core.receiveIncomingRequestFromTransport.bind(core);
|
|
1266
|
+
core.receiveIncomingRequestFromTransport = (request2) => {
|
|
1178
1267
|
if (request2.method === "OPTIONS") {
|
|
1179
1268
|
that.startHeartbeat();
|
|
1180
1269
|
}
|
|
1181
|
-
that.callKit.logger.info(`SIP Receive
|
|
1182
|
-
caller: "Connect.register.observeSocketStatus",
|
|
1270
|
+
that.callKit.logger.info(`SIP Receive: ${request2?.method}`, {
|
|
1271
|
+
caller: "Connect.register.observeSocketStatus.receiveRequest",
|
|
1183
1272
|
type: "SIP",
|
|
1184
1273
|
content: {
|
|
1185
1274
|
request: request2
|
|
1186
1275
|
}
|
|
1187
1276
|
});
|
|
1188
|
-
return
|
|
1277
|
+
return originalReceiveIncomingRequestFromTransport(request2);
|
|
1189
1278
|
};
|
|
1190
1279
|
const { transport } = userAgent;
|
|
1191
1280
|
if (transport) {
|
|
@@ -1284,9 +1373,6 @@ var Connect = class {
|
|
|
1284
1373
|
}
|
|
1285
1374
|
});
|
|
1286
1375
|
this.currentSession = invite;
|
|
1287
|
-
if (this.isOutgoing) {
|
|
1288
|
-
this.isCurrentSessionInvited = false;
|
|
1289
|
-
}
|
|
1290
1376
|
this.currentSession.stateChange.addListener((state) => {
|
|
1291
1377
|
switch (state) {
|
|
1292
1378
|
case import_sip.SessionState.Establishing:
|
|
@@ -1332,11 +1418,8 @@ var Connect = class {
|
|
|
1332
1418
|
sessionState: state
|
|
1333
1419
|
}
|
|
1334
1420
|
});
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
this.currentSession.reject();
|
|
1338
|
-
}
|
|
1339
|
-
} else {
|
|
1421
|
+
this.hasInvite = false;
|
|
1422
|
+
if (!this.isUnprompted) {
|
|
1340
1423
|
this.callKit.callCenter.callEnd();
|
|
1341
1424
|
}
|
|
1342
1425
|
this.isUnprompted = false;
|
|
@@ -1371,14 +1454,17 @@ var Connect = class {
|
|
|
1371
1454
|
const info = getInviteData();
|
|
1372
1455
|
try {
|
|
1373
1456
|
const inviteData = formatGetInviteData(info);
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1457
|
+
if (inviteData?.callUuid) {
|
|
1458
|
+
this.setCallId(inviteData.callUuid);
|
|
1459
|
+
} else {
|
|
1460
|
+
this.setCallId(null);
|
|
1461
|
+
this.callKit.logger.error("call id is not exist", {
|
|
1462
|
+
caller: "Connect.register.onInvite",
|
|
1463
|
+
content: {
|
|
1464
|
+
inviteData
|
|
1465
|
+
}
|
|
1466
|
+
});
|
|
1467
|
+
}
|
|
1382
1468
|
} catch (error) {
|
|
1383
1469
|
this.callKit.logger.info(error, {
|
|
1384
1470
|
caller: "Connect.register.onInvite",
|
|
@@ -1391,14 +1477,18 @@ var Connect = class {
|
|
|
1391
1477
|
getInviteData
|
|
1392
1478
|
});
|
|
1393
1479
|
} else {
|
|
1480
|
+
this.hasInvite = true;
|
|
1394
1481
|
const reject = () => {
|
|
1395
|
-
this.currentSession.
|
|
1482
|
+
if (this.currentSession?.state !== import_sip.SessionState.Terminated && this.currentSession?.state !== import_sip.SessionState.Terminating) {
|
|
1483
|
+
this.currentSession.reject();
|
|
1484
|
+
}
|
|
1485
|
+
this.hasInvite = false;
|
|
1396
1486
|
this.callKit.callCenter.callEnd(true, false);
|
|
1397
1487
|
};
|
|
1398
1488
|
this.callKit.trigger(KitEvent.KIT_INVITE, {
|
|
1399
1489
|
accept: () => {
|
|
1400
|
-
this.isCurrentSessionInvited = true;
|
|
1401
1490
|
this.callKit.trigger(KitEvent.CALL_CONNECTING, /* @__PURE__ */ new Date());
|
|
1491
|
+
this.hasInvite = false;
|
|
1402
1492
|
this.currentSession.accept(options);
|
|
1403
1493
|
},
|
|
1404
1494
|
reject,
|
|
@@ -1422,6 +1512,7 @@ var Connect = class {
|
|
|
1422
1512
|
version
|
|
1423
1513
|
});
|
|
1424
1514
|
}).catch(async (err) => {
|
|
1515
|
+
this.callKit.reset();
|
|
1425
1516
|
this.callKit.logger.error(err?.message, {
|
|
1426
1517
|
caller: "Connect.register",
|
|
1427
1518
|
type: "SIP",
|
|
@@ -1429,7 +1520,6 @@ var Connect = class {
|
|
|
1429
1520
|
errCode: ErrorCode.WEBRTC_REGISTER_ERROR
|
|
1430
1521
|
}
|
|
1431
1522
|
});
|
|
1432
|
-
this.callKit.reset();
|
|
1433
1523
|
});
|
|
1434
1524
|
},
|
|
1435
1525
|
onDisconnect: (error) => {
|
|
@@ -1461,6 +1551,7 @@ var Connect = class {
|
|
|
1461
1551
|
that: this
|
|
1462
1552
|
});
|
|
1463
1553
|
await this.userAgent.start().catch((err) => {
|
|
1554
|
+
this.callKit.reset();
|
|
1464
1555
|
this.callKit.logger.error(err, {
|
|
1465
1556
|
caller: "Connect.register",
|
|
1466
1557
|
type: "SIP",
|
|
@@ -1468,13 +1559,13 @@ var Connect = class {
|
|
|
1468
1559
|
errCode: ErrorCode.WEBRTC_USER_AGENT_ERROR
|
|
1469
1560
|
}
|
|
1470
1561
|
});
|
|
1471
|
-
this.callKit.reset();
|
|
1472
1562
|
});
|
|
1473
1563
|
}
|
|
1474
1564
|
reconnectTimer;
|
|
1475
1565
|
reconnectAttempts = 0;
|
|
1476
1566
|
startReconnectTimer() {
|
|
1477
|
-
if (this.reconnectAttempts >= this.reconnectConfig.maxAttempts) {
|
|
1567
|
+
if (this.reconnectAttempts >= this.reconnectConfig.maxAttempts && this.callKit.config.isLogin()) {
|
|
1568
|
+
this.callKit.reset();
|
|
1478
1569
|
this.callKit.logger.error("Reconnect failed max attempts", {
|
|
1479
1570
|
caller: "Connect.startReconnectTimer",
|
|
1480
1571
|
type: "SIP",
|
|
@@ -1484,7 +1575,6 @@ var Connect = class {
|
|
|
1484
1575
|
delay: this.reconnectConfig.delay
|
|
1485
1576
|
}
|
|
1486
1577
|
});
|
|
1487
|
-
this.callKit.reset();
|
|
1488
1578
|
return;
|
|
1489
1579
|
}
|
|
1490
1580
|
this.callKit.logger.info("Reconnect timer started", {
|
|
@@ -1498,8 +1588,8 @@ var Connect = class {
|
|
|
1498
1588
|
});
|
|
1499
1589
|
this.reconnectAttempts += 1;
|
|
1500
1590
|
this.reconnectTimer = setTimeout(() => {
|
|
1501
|
-
if (this.reconnectTimer) {
|
|
1502
|
-
this.userAgent
|
|
1591
|
+
if (this.reconnectTimer && this.callKit.config.isLogin()) {
|
|
1592
|
+
this.userAgent?.reconnect();
|
|
1503
1593
|
this.callKit.logger.info("Reconnect attempt", {
|
|
1504
1594
|
caller: "Connect.startReconnectTimer",
|
|
1505
1595
|
type: "SIP",
|
|
@@ -1544,6 +1634,7 @@ var Connect = class {
|
|
|
1544
1634
|
return;
|
|
1545
1635
|
}
|
|
1546
1636
|
await this.registerer.unregister({ all: true }).catch((err) => {
|
|
1637
|
+
this.callKit.reset();
|
|
1547
1638
|
this.callKit.logger.error(err, {
|
|
1548
1639
|
caller: "Connect.unregister",
|
|
1549
1640
|
type: "SIP",
|
|
@@ -1551,7 +1642,6 @@ var Connect = class {
|
|
|
1551
1642
|
errCode: ErrorCode.WEBRTC_CANCEL_REGISTER_ERROR
|
|
1552
1643
|
}
|
|
1553
1644
|
});
|
|
1554
|
-
this.callKit.reset();
|
|
1555
1645
|
});
|
|
1556
1646
|
}
|
|
1557
1647
|
async call(callback) {
|
|
@@ -1617,18 +1707,24 @@ var Connect = class {
|
|
|
1617
1707
|
connectStatus: this.connectStatus
|
|
1618
1708
|
}
|
|
1619
1709
|
});
|
|
1620
|
-
if (this.connectStatus === CallStatus.init)
|
|
1621
|
-
return;
|
|
1622
1710
|
this.isOutgoing = false;
|
|
1623
1711
|
this.isUnprompted = isUnprompted;
|
|
1712
|
+
this.setHold(false);
|
|
1713
|
+
this.setMute(false);
|
|
1714
|
+
if (this.connectStatus === CallStatus.init)
|
|
1715
|
+
return;
|
|
1624
1716
|
try {
|
|
1625
1717
|
if (isUnprompted) {
|
|
1626
|
-
const shouldSendBye = (
|
|
1627
|
-
// this.sipConnected ||
|
|
1628
|
-
this.isRinging() || this.isCalling() || this.isHolding()
|
|
1629
|
-
);
|
|
1718
|
+
const shouldSendBye = this.isRinging() || this.isCalling();
|
|
1630
1719
|
if (shouldSendBye) {
|
|
1631
|
-
|
|
1720
|
+
if (this.hasInvite) {
|
|
1721
|
+
if (this.currentSession?.state !== import_sip.SessionState.Terminated && this.currentSession?.state !== import_sip.SessionState.Terminating) {
|
|
1722
|
+
this.currentSession.reject();
|
|
1723
|
+
}
|
|
1724
|
+
this.hasInvite = false;
|
|
1725
|
+
} else {
|
|
1726
|
+
await this.currentSession?.bye();
|
|
1727
|
+
}
|
|
1632
1728
|
}
|
|
1633
1729
|
}
|
|
1634
1730
|
closeStream(this.mediaStream);
|
|
@@ -1640,6 +1736,8 @@ var Connect = class {
|
|
|
1640
1736
|
this.setConnectStatus(CallStatus.init);
|
|
1641
1737
|
this.callKit.trigger(KitEvent.CALL_END, /* @__PURE__ */ new Date());
|
|
1642
1738
|
} catch (err) {
|
|
1739
|
+
this.callKit.trigger(KitEvent.CALL_END, /* @__PURE__ */ new Date());
|
|
1740
|
+
this.callKit.reset();
|
|
1643
1741
|
this.callKit.logger.error(err, {
|
|
1644
1742
|
caller: "Connect.hangup",
|
|
1645
1743
|
type: "SIP",
|
|
@@ -1649,8 +1747,6 @@ var Connect = class {
|
|
|
1649
1747
|
isUnprompted
|
|
1650
1748
|
}
|
|
1651
1749
|
});
|
|
1652
|
-
this.callKit.trigger(KitEvent.CALL_END, /* @__PURE__ */ new Date());
|
|
1653
|
-
this.callKit.reset();
|
|
1654
1750
|
}
|
|
1655
1751
|
}
|
|
1656
1752
|
/**
|
|
@@ -1746,61 +1842,6 @@ var Connect = class {
|
|
|
1746
1842
|
});
|
|
1747
1843
|
this.callKit.trigger(KitEvent.KIT_SET_HOLD, hold);
|
|
1748
1844
|
}
|
|
1749
|
-
// /**
|
|
1750
|
-
// * Set mute
|
|
1751
|
-
// * @param mute Whether to mute
|
|
1752
|
-
// * @deprecated just send socket event to server to mute or unmute
|
|
1753
|
-
// */
|
|
1754
|
-
// async setMute(mute: boolean) {
|
|
1755
|
-
// this.callKit.logger.info('connect setMute', {
|
|
1756
|
-
// caller: 'Connect.setMute',
|
|
1757
|
-
// type: 'SIP',
|
|
1758
|
-
// content: {
|
|
1759
|
-
// mute
|
|
1760
|
-
// }
|
|
1761
|
-
// });
|
|
1762
|
-
// if (!this.currentSession) {
|
|
1763
|
-
// this.callKit.logger.error('No active session', {
|
|
1764
|
-
// caller: 'Connect.setMute',
|
|
1765
|
-
// type: 'SIP',
|
|
1766
|
-
// content: {
|
|
1767
|
-
// errCode: ErrorCode.WEBRTC_MUTE_STATUS_ERROR
|
|
1768
|
-
// }
|
|
1769
|
-
// });
|
|
1770
|
-
// this.callKit.reset();
|
|
1771
|
-
// return;
|
|
1772
|
-
// }
|
|
1773
|
-
// try {
|
|
1774
|
-
// // Get SessionDescriptionHandler
|
|
1775
|
-
// const sdh = this.currentSession.sessionDescriptionHandler;
|
|
1776
|
-
// if (!sdh || !('peerConnection' in sdh)) {
|
|
1777
|
-
// throw new Error('Invalid session description handler');
|
|
1778
|
-
// }
|
|
1779
|
-
// // Get PeerConnection
|
|
1780
|
-
// const pc = (sdh as any).peerConnection as RTCPeerConnection;
|
|
1781
|
-
// // Get local audio track and set status
|
|
1782
|
-
// const audioSender = pc
|
|
1783
|
-
// .getSenders()
|
|
1784
|
-
// .find((sender) => sender.track?.kind === 'audio');
|
|
1785
|
-
// if (audioSender && audioSender.track) {
|
|
1786
|
-
// audioSender.track.enabled = !mute;
|
|
1787
|
-
// // Update status and trigger event
|
|
1788
|
-
// this.isMute = mute;
|
|
1789
|
-
// this.callKit.trigger(KitEvent.KIT_SET_MUTE, mute);
|
|
1790
|
-
// } else {
|
|
1791
|
-
// throw new Error('No audio track found');
|
|
1792
|
-
// }
|
|
1793
|
-
// } catch (error) {
|
|
1794
|
-
// this.callKit.logger.error('Failed to set mute state', {
|
|
1795
|
-
// caller: 'Connect.setMute',
|
|
1796
|
-
// type: 'SIP',
|
|
1797
|
-
// content: {
|
|
1798
|
-
// err: error.message,
|
|
1799
|
-
// errCode: ErrorCode.WEBRTC_MUTE_ERROR
|
|
1800
|
-
// }
|
|
1801
|
-
// });
|
|
1802
|
-
// }
|
|
1803
|
-
// }
|
|
1804
1845
|
async setMute(mute) {
|
|
1805
1846
|
if (this.isMute === mute) {
|
|
1806
1847
|
this.callKit.logger.warn("Already muted", {
|
|
@@ -1944,6 +1985,7 @@ var Socket = class {
|
|
|
1944
1985
|
this.handleDisconnect();
|
|
1945
1986
|
}
|
|
1946
1987
|
onError(ev) {
|
|
1988
|
+
this.socketError = true;
|
|
1947
1989
|
this.callKit.logger.error("socket onError", {
|
|
1948
1990
|
caller: "Socket.onError",
|
|
1949
1991
|
type: "INCALL",
|
|
@@ -1952,7 +1994,6 @@ var Socket = class {
|
|
|
1952
1994
|
data: ev
|
|
1953
1995
|
}
|
|
1954
1996
|
});
|
|
1955
|
-
this.socketError = true;
|
|
1956
1997
|
}
|
|
1957
1998
|
confirmAck(data) {
|
|
1958
1999
|
const { ack, messageId } = data;
|
|
@@ -1964,11 +2005,26 @@ var Socket = class {
|
|
|
1964
2005
|
}
|
|
1965
2006
|
onMessage(ev) {
|
|
1966
2007
|
const data = JSON.parse(ev.data);
|
|
2008
|
+
let content = {};
|
|
2009
|
+
try {
|
|
2010
|
+
if (data.data) {
|
|
2011
|
+
content = JSON.parse(data.data);
|
|
2012
|
+
}
|
|
2013
|
+
} catch (error) {
|
|
2014
|
+
this.callKit.logger.info("socket onMessage parse error", {
|
|
2015
|
+
caller: "Socket.onMessage",
|
|
2016
|
+
type: "INCALL",
|
|
2017
|
+
content: {
|
|
2018
|
+
data: data.data
|
|
2019
|
+
}
|
|
2020
|
+
});
|
|
2021
|
+
content = data.data;
|
|
2022
|
+
}
|
|
1967
2023
|
this.callKit.logger.info("socket onMessage", {
|
|
1968
2024
|
caller: "Socket.onMessage",
|
|
1969
2025
|
type: "INCALL",
|
|
1970
2026
|
content: {
|
|
1971
|
-
data:
|
|
2027
|
+
data: content,
|
|
1972
2028
|
event: data.event
|
|
1973
2029
|
}
|
|
1974
2030
|
});
|
|
@@ -1982,7 +2038,7 @@ var Socket = class {
|
|
|
1982
2038
|
caller: "Socket.onMessage",
|
|
1983
2039
|
type: "INCALL",
|
|
1984
2040
|
content: {
|
|
1985
|
-
data:
|
|
2041
|
+
data: content,
|
|
1986
2042
|
event: SocketReceiveEvent.START_CONFIRM
|
|
1987
2043
|
}
|
|
1988
2044
|
});
|
|
@@ -1993,7 +2049,7 @@ var Socket = class {
|
|
|
1993
2049
|
caller: "Socket.onMessage",
|
|
1994
2050
|
type: "INCALL",
|
|
1995
2051
|
content: {
|
|
1996
|
-
data:
|
|
2052
|
+
data: content,
|
|
1997
2053
|
event: SocketReceiveEvent.CALL_SUCCESS
|
|
1998
2054
|
}
|
|
1999
2055
|
});
|
|
@@ -2003,20 +2059,28 @@ var Socket = class {
|
|
|
2003
2059
|
caller: "Socket.onMessage",
|
|
2004
2060
|
type: "INCALL",
|
|
2005
2061
|
content: {
|
|
2006
|
-
data:
|
|
2062
|
+
data: content,
|
|
2007
2063
|
errCode: ErrorCode.SOCKET_CALL_ERROR
|
|
2008
2064
|
}
|
|
2009
2065
|
});
|
|
2010
2066
|
}
|
|
2011
2067
|
if (data.event === SocketReceiveEvent.CUSTOMER_RINGING) {
|
|
2012
2068
|
this.callKit.trigger(KitEvent.CALL_RINGING, /* @__PURE__ */ new Date());
|
|
2069
|
+
this.callKit.logger.info(data.msg, {
|
|
2070
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2071
|
+
type: "INCALL",
|
|
2072
|
+
content: {
|
|
2073
|
+
data: content,
|
|
2074
|
+
event: SocketReceiveEvent.CUSTOMER_RINGING
|
|
2075
|
+
}
|
|
2076
|
+
});
|
|
2013
2077
|
}
|
|
2014
2078
|
if (data.event === SocketReceiveEvent.CUSTOMER_PICK_UP) {
|
|
2015
2079
|
this.callKit.logger.info(data.msg, {
|
|
2016
2080
|
caller: "Socket.onMessage",
|
|
2017
2081
|
type: "INCALL",
|
|
2018
2082
|
content: {
|
|
2019
|
-
data:
|
|
2083
|
+
data: content,
|
|
2020
2084
|
event: SocketReceiveEvent.CUSTOMER_PICK_UP
|
|
2021
2085
|
}
|
|
2022
2086
|
});
|
|
@@ -2027,7 +2091,7 @@ var Socket = class {
|
|
|
2027
2091
|
caller: "Socket.onMessage",
|
|
2028
2092
|
type: "INCALL",
|
|
2029
2093
|
content: {
|
|
2030
|
-
data:
|
|
2094
|
+
data: content,
|
|
2031
2095
|
event: SocketReceiveEvent.AGENT_PICK_UP
|
|
2032
2096
|
}
|
|
2033
2097
|
});
|
|
@@ -2035,16 +2099,16 @@ var Socket = class {
|
|
|
2035
2099
|
}
|
|
2036
2100
|
if (data.event === SocketReceiveEvent.CUSTOMER_HANG_UP) {
|
|
2037
2101
|
this.callKit.logger.info(data.msg, {
|
|
2038
|
-
caller:
|
|
2102
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2039
2103
|
type: "INCALL",
|
|
2040
2104
|
content: {
|
|
2041
|
-
data:
|
|
2105
|
+
data: content,
|
|
2042
2106
|
event: SocketReceiveEvent.CUSTOMER_HANG_UP
|
|
2043
2107
|
}
|
|
2044
2108
|
});
|
|
2045
2109
|
this.callKit.trigger(KitEvent.CALL_HANG_UP, /* @__PURE__ */ new Date());
|
|
2046
|
-
if (
|
|
2047
|
-
this.callKit.connect.socketTriggerHangup(
|
|
2110
|
+
if (content?.callUuid) {
|
|
2111
|
+
this.callKit.connect.socketTriggerHangup(content.callUuid);
|
|
2048
2112
|
}
|
|
2049
2113
|
}
|
|
2050
2114
|
if (data.event === SocketReceiveEvent.CUSTOMER_NO_ANSWER) {
|
|
@@ -2052,30 +2116,32 @@ var Socket = class {
|
|
|
2052
2116
|
caller: "Socket.onMessage",
|
|
2053
2117
|
type: "INCALL",
|
|
2054
2118
|
content: {
|
|
2055
|
-
data:
|
|
2119
|
+
data: content,
|
|
2056
2120
|
event: SocketReceiveEvent.CUSTOMER_NO_ANSWER
|
|
2057
2121
|
}
|
|
2058
2122
|
});
|
|
2059
2123
|
this.callKit.trigger(KitEvent.CALL_NO_ANSWER);
|
|
2060
|
-
if (
|
|
2061
|
-
this.callKit.connect.socketTriggerHangup(
|
|
2124
|
+
if (content?.callUuid) {
|
|
2125
|
+
this.callKit.connect.socketTriggerHangup(content.callUuid);
|
|
2062
2126
|
}
|
|
2063
2127
|
}
|
|
2064
2128
|
if (data.event === SocketReceiveEvent.CALL_CDR) {
|
|
2065
2129
|
this.callKit.logger.info(data.msg, {
|
|
2066
|
-
caller:
|
|
2130
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2131
|
+
type: "INCALL",
|
|
2067
2132
|
content: {
|
|
2068
|
-
data:
|
|
2133
|
+
data: content,
|
|
2069
2134
|
event: SocketReceiveEvent.CALL_CDR
|
|
2070
2135
|
}
|
|
2071
2136
|
});
|
|
2072
|
-
this.callKit.trigger(KitEvent.CALL_CDR,
|
|
2137
|
+
this.callKit.trigger(KitEvent.CALL_CDR, content);
|
|
2073
2138
|
}
|
|
2074
2139
|
if (data.event === SocketReceiveEvent.STOP_CONFIRM) {
|
|
2075
2140
|
this.callKit.logger.info(data.msg, {
|
|
2076
|
-
caller:
|
|
2141
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2142
|
+
type: "INCALL",
|
|
2077
2143
|
content: {
|
|
2078
|
-
data:
|
|
2144
|
+
data: content,
|
|
2079
2145
|
event: SocketReceiveEvent.STOP_CONFIRM
|
|
2080
2146
|
}
|
|
2081
2147
|
});
|
|
@@ -2083,9 +2149,10 @@ var Socket = class {
|
|
|
2083
2149
|
if (data.event === SocketReceiveEvent.CLOSE) {
|
|
2084
2150
|
const { userInfo } = this.callKit.config.getConfig();
|
|
2085
2151
|
this.callKit.logger.info(data.msg, {
|
|
2086
|
-
caller:
|
|
2152
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2153
|
+
type: "INCALL",
|
|
2087
2154
|
content: {
|
|
2088
|
-
data:
|
|
2155
|
+
data: content,
|
|
2089
2156
|
event: SocketReceiveEvent.CLOSE
|
|
2090
2157
|
}
|
|
2091
2158
|
});
|
|
@@ -2094,26 +2161,40 @@ var Socket = class {
|
|
|
2094
2161
|
});
|
|
2095
2162
|
}
|
|
2096
2163
|
if (data.event === SocketReceiveEvent.ERROR) {
|
|
2164
|
+
this.socketError = true;
|
|
2165
|
+
this.callKit.reset();
|
|
2097
2166
|
this.callKit.logger.error(data.msg, {
|
|
2098
|
-
caller:
|
|
2167
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2168
|
+
type: "INCALL",
|
|
2099
2169
|
content: {
|
|
2100
2170
|
errCode: ErrorCode.SOKET_SERVER_ERROR,
|
|
2101
|
-
data:
|
|
2171
|
+
data: content
|
|
2102
2172
|
}
|
|
2103
2173
|
});
|
|
2174
|
+
}
|
|
2175
|
+
if (data.event === SocketReceiveEvent.SESSION_ERROR) {
|
|
2104
2176
|
this.socketError = true;
|
|
2105
2177
|
this.callKit.reset();
|
|
2178
|
+
this.callKit.logger.error(data.msg, {
|
|
2179
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2180
|
+
type: "INCALL",
|
|
2181
|
+
content: {
|
|
2182
|
+
data: content,
|
|
2183
|
+
event: SocketReceiveEvent.SESSION_ERROR
|
|
2184
|
+
}
|
|
2185
|
+
});
|
|
2106
2186
|
}
|
|
2107
2187
|
if (data.event === SocketReceiveEvent.AGENT_NO_ANSWER) {
|
|
2108
2188
|
this.callKit.logger.info(data.msg, {
|
|
2109
|
-
caller:
|
|
2189
|
+
caller: `Socket.onMessage:${data.event}`,
|
|
2190
|
+
type: "INCALL",
|
|
2110
2191
|
content: {
|
|
2111
|
-
data:
|
|
2192
|
+
data: content,
|
|
2112
2193
|
event: SocketReceiveEvent.AGENT_NO_ANSWER
|
|
2113
2194
|
}
|
|
2114
2195
|
});
|
|
2115
|
-
if (
|
|
2116
|
-
this.callKit.connect.socketTriggerHangup(
|
|
2196
|
+
if (content?.callUuid) {
|
|
2197
|
+
this.callKit.connect.socketTriggerHangup(content.callUuid);
|
|
2117
2198
|
}
|
|
2118
2199
|
}
|
|
2119
2200
|
this.callKit.trigger(KitEvent.SERVER_SOCKET_EVENT, data);
|
|
@@ -2123,6 +2204,7 @@ var Socket = class {
|
|
|
2123
2204
|
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2124
2205
|
event: "INCALL_NOT_CONNECTED"
|
|
2125
2206
|
});
|
|
2207
|
+
this.callKit.reset();
|
|
2126
2208
|
this.callKit.logger.error("socket not connected", {
|
|
2127
2209
|
caller: "Socket.send",
|
|
2128
2210
|
type: "INCALL",
|
|
@@ -2130,10 +2212,9 @@ var Socket = class {
|
|
|
2130
2212
|
errCode: ErrorCode.SOCKET_CONNECT_ERROR
|
|
2131
2213
|
}
|
|
2132
2214
|
});
|
|
2133
|
-
this.callKit.reset();
|
|
2134
2215
|
return;
|
|
2135
2216
|
}
|
|
2136
|
-
const { userInfo } = this.callKit.config.getConfig();
|
|
2217
|
+
const { userInfo, version } = this.callKit.config.getConfig();
|
|
2137
2218
|
const { sessionId, extno, agentId } = userInfo;
|
|
2138
2219
|
if (!sessionId) {
|
|
2139
2220
|
this.callKit.logger.error("sessionId is empty", {
|
|
@@ -2148,6 +2229,7 @@ var Socket = class {
|
|
|
2148
2229
|
const msg = {
|
|
2149
2230
|
event,
|
|
2150
2231
|
sessionId,
|
|
2232
|
+
version,
|
|
2151
2233
|
...message
|
|
2152
2234
|
};
|
|
2153
2235
|
if (SocketSendEvent.CALL === event) {
|
|
@@ -2163,8 +2245,7 @@ var Socket = class {
|
|
|
2163
2245
|
caller: "Socket.send",
|
|
2164
2246
|
type: "INCALL",
|
|
2165
2247
|
content: {
|
|
2166
|
-
|
|
2167
|
-
message
|
|
2248
|
+
...msg
|
|
2168
2249
|
}
|
|
2169
2250
|
});
|
|
2170
2251
|
switch (event) {
|
|
@@ -2177,24 +2258,6 @@ var Socket = class {
|
|
|
2177
2258
|
break;
|
|
2178
2259
|
}
|
|
2179
2260
|
}
|
|
2180
|
-
async sendMessage(event, message) {
|
|
2181
|
-
if (!this.isConnected) {
|
|
2182
|
-
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2183
|
-
event: "INCALL_NOT_CONNECTED"
|
|
2184
|
-
});
|
|
2185
|
-
this.callKit.logger.error("socket not connected", {
|
|
2186
|
-
caller: "Socket.sendMessage",
|
|
2187
|
-
type: "INCALL",
|
|
2188
|
-
content: {
|
|
2189
|
-
errCode: ErrorCode.SOCKET_CONNECT_ERROR
|
|
2190
|
-
}
|
|
2191
|
-
});
|
|
2192
|
-
return;
|
|
2193
|
-
}
|
|
2194
|
-
const { userInfo } = this.callKit.config.getConfig();
|
|
2195
|
-
const { sessionId } = userInfo;
|
|
2196
|
-
this.ws?.send(JSON.stringify({ event, sessionId, ...message }));
|
|
2197
|
-
}
|
|
2198
2261
|
ping() {
|
|
2199
2262
|
if (!this.isConnected)
|
|
2200
2263
|
return;
|
|
@@ -2209,6 +2272,11 @@ var Socket = class {
|
|
|
2209
2272
|
const now = Date.now();
|
|
2210
2273
|
const { pingInterval, pingTimeout } = this.socketConfig;
|
|
2211
2274
|
if (now - this.lastPingTime > pingInterval + pingTimeout) {
|
|
2275
|
+
if (this.ws && this.isConnected) {
|
|
2276
|
+
this.ws.close(4001, "ping timeout");
|
|
2277
|
+
} else {
|
|
2278
|
+
this.reset();
|
|
2279
|
+
}
|
|
2212
2280
|
this.callKit.logger.error("socket ping timeout", {
|
|
2213
2281
|
caller: "Socket.ping",
|
|
2214
2282
|
type: "INCALL",
|
|
@@ -2216,11 +2284,6 @@ var Socket = class {
|
|
|
2216
2284
|
errCode: ErrorCode.SOCKET_PING_TIMEOUT
|
|
2217
2285
|
}
|
|
2218
2286
|
});
|
|
2219
|
-
if (this.ws && this.isConnected) {
|
|
2220
|
-
this.ws.close(4001, "ping timeout");
|
|
2221
|
-
} else {
|
|
2222
|
-
this.reset();
|
|
2223
|
-
}
|
|
2224
2287
|
}
|
|
2225
2288
|
}
|
|
2226
2289
|
checkPing() {
|
|
@@ -2256,6 +2319,10 @@ var Socket = class {
|
|
|
2256
2319
|
}
|
|
2257
2320
|
attemptReconnect() {
|
|
2258
2321
|
if (this.reconnectAttempts >= this.socketConfig.maxAttempts) {
|
|
2322
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2323
|
+
event: "INCALL_RECONNECT_ERROR"
|
|
2324
|
+
});
|
|
2325
|
+
this.reset();
|
|
2259
2326
|
this.callKit.logger.error("Maximum reconnection attempts reached", {
|
|
2260
2327
|
caller: "Socket.attemptReconnect",
|
|
2261
2328
|
type: "INCALL",
|
|
@@ -2264,10 +2331,6 @@ var Socket = class {
|
|
|
2264
2331
|
reconnectAttempts: this.reconnectAttempts
|
|
2265
2332
|
}
|
|
2266
2333
|
});
|
|
2267
|
-
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2268
|
-
event: "INCALL_RECONNECT_ERROR"
|
|
2269
|
-
});
|
|
2270
|
-
this.reset();
|
|
2271
2334
|
return;
|
|
2272
2335
|
}
|
|
2273
2336
|
if (this.reconnectAttempts === 0) {
|
|
@@ -2560,9 +2623,16 @@ var CallKit = class {
|
|
|
2560
2623
|
*/
|
|
2561
2624
|
async setUserStatus(status) {
|
|
2562
2625
|
const { agentId } = this.config.getConfig().userInfo;
|
|
2626
|
+
this.logger.info("setUserStatus", {
|
|
2627
|
+
caller: "CallKit.setUserStatus",
|
|
2628
|
+
content: {
|
|
2629
|
+
status,
|
|
2630
|
+
agentId
|
|
2631
|
+
}
|
|
2632
|
+
});
|
|
2563
2633
|
await this.api.updateUserStatus({
|
|
2564
2634
|
agentId,
|
|
2565
|
-
status
|
|
2635
|
+
userStatus: status
|
|
2566
2636
|
});
|
|
2567
2637
|
}
|
|
2568
2638
|
async reset() {
|
|
@@ -2612,13 +2682,19 @@ var CallKit = class {
|
|
|
2612
2682
|
}
|
|
2613
2683
|
});
|
|
2614
2684
|
}
|
|
2615
|
-
trigger(event, data) {
|
|
2685
|
+
trigger(event, data, noLog = false) {
|
|
2686
|
+
if (!noLog) {
|
|
2687
|
+
this.logger.info(`Trigger Event: ${event}`, {
|
|
2688
|
+
caller: "CallKit.trigger",
|
|
2689
|
+
content: data
|
|
2690
|
+
});
|
|
2691
|
+
}
|
|
2616
2692
|
this.listener.forEach((item) => {
|
|
2617
2693
|
if (item.event === event) {
|
|
2618
2694
|
try {
|
|
2619
2695
|
item.callback(data);
|
|
2620
2696
|
} catch (err) {
|
|
2621
|
-
this.logger.error("Event callback error:", err);
|
|
2697
|
+
this.logger.error("Event callback error:", err, true);
|
|
2622
2698
|
}
|
|
2623
2699
|
}
|
|
2624
2700
|
});
|