@koi-design/callkit 2.0.0-beta.4 → 2.0.0-beta.6
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 +5 -3
- package/dist/index.global.js +102 -45
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +104 -45
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +104 -45
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -3
package/dist/index.js
CHANGED
|
@@ -243,7 +243,8 @@ var KitEvent = {
|
|
|
243
243
|
* User status change
|
|
244
244
|
*/
|
|
245
245
|
USER_STATUS_CHANGE: "userStatusChange",
|
|
246
|
-
|
|
246
|
+
INCALL_CONNECT_EVENT: "IncallConnectEvent",
|
|
247
|
+
SIP_CONNECT_EVENT: "sipConnectEvent",
|
|
247
248
|
SIP_REGISTERER_EVENT: "sipRegistererEvent",
|
|
248
249
|
SIP_SESSION_EVENT: "sipSessionEvent"
|
|
249
250
|
};
|
|
@@ -568,7 +569,7 @@ var Call = class {
|
|
|
568
569
|
});
|
|
569
570
|
return;
|
|
570
571
|
}
|
|
571
|
-
this.callKit.connect.setHold(
|
|
572
|
+
this.callKit.connect.setHold(false);
|
|
572
573
|
}
|
|
573
574
|
async callMute() {
|
|
574
575
|
if (!this.callKit.config.check())
|
|
@@ -837,6 +838,23 @@ var Logger = class {
|
|
|
837
838
|
|
|
838
839
|
// package/connect.ts
|
|
839
840
|
var import_sip = require("sip.js");
|
|
841
|
+
|
|
842
|
+
// package/utils.ts
|
|
843
|
+
var formatGetInviteData = (inviteData) => {
|
|
844
|
+
const extendInfoStr = inviteData["x-antaios-manual-extend_info"] || inviteData["x-antaios-manual-extend-info"];
|
|
845
|
+
let extendInfoObj = null;
|
|
846
|
+
try {
|
|
847
|
+
if (extendInfoStr && typeof extendInfoStr === "string") {
|
|
848
|
+
const cleanedStr = extendInfoStr.replace(/\\/g, "");
|
|
849
|
+
extendInfoObj = JSON.parse(cleanedStr);
|
|
850
|
+
return extendInfoObj;
|
|
851
|
+
}
|
|
852
|
+
} catch (error) {
|
|
853
|
+
return {};
|
|
854
|
+
}
|
|
855
|
+
};
|
|
856
|
+
|
|
857
|
+
// package/connect.ts
|
|
840
858
|
var DEFAULT_RECONNECT_CONFIG = {
|
|
841
859
|
maxAttempts: 3,
|
|
842
860
|
delay: 500
|
|
@@ -925,7 +943,7 @@ var Connect = class {
|
|
|
925
943
|
if (this.connectStatus !== CallStatus.init) {
|
|
926
944
|
this.setConnectStatus(CallStatus.init);
|
|
927
945
|
}
|
|
928
|
-
if (this.isRegistered) {
|
|
946
|
+
if (this.isRegistered()) {
|
|
929
947
|
this.unregister();
|
|
930
948
|
}
|
|
931
949
|
this.currentSession = void 0;
|
|
@@ -934,6 +952,7 @@ var Connect = class {
|
|
|
934
952
|
this.registerer = void 0;
|
|
935
953
|
this.isOutgoing = false;
|
|
936
954
|
this.isUnprompted = false;
|
|
955
|
+
this.currentCallId = void 0;
|
|
937
956
|
if (this.mediaStream) {
|
|
938
957
|
try {
|
|
939
958
|
closeStream(this.mediaStream);
|
|
@@ -1029,12 +1048,24 @@ var Connect = class {
|
|
|
1029
1048
|
this.heartbeatFlag -= 1;
|
|
1030
1049
|
if (this.heartbeatFlag <= 0) {
|
|
1031
1050
|
this.heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
1032
|
-
this.callKit.trigger(KitEvent.
|
|
1051
|
+
this.callKit.trigger(KitEvent.SIP_CONNECT_EVENT, {
|
|
1033
1052
|
event: "OPTIONS_HEARTBEAT_EXPIRED"
|
|
1034
1053
|
});
|
|
1035
1054
|
}
|
|
1036
1055
|
}, 1e3);
|
|
1037
1056
|
}
|
|
1057
|
+
socketTriggerHangup(callId) {
|
|
1058
|
+
if (!this.isCalling() || callId !== this.currentCallId)
|
|
1059
|
+
return;
|
|
1060
|
+
this.callKit.logger.info("socketHangup trigger hangup", {
|
|
1061
|
+
caller: "Connect.socketHangup",
|
|
1062
|
+
content: {
|
|
1063
|
+
callId,
|
|
1064
|
+
currentCallId: this.currentCallId
|
|
1065
|
+
}
|
|
1066
|
+
});
|
|
1067
|
+
this.callKit.hangup();
|
|
1068
|
+
}
|
|
1038
1069
|
async register() {
|
|
1039
1070
|
if (this.connectStatus !== CallStatus.init) {
|
|
1040
1071
|
if (this.isRegistered()) {
|
|
@@ -1193,6 +1224,10 @@ var Connect = class {
|
|
|
1193
1224
|
}
|
|
1194
1225
|
});
|
|
1195
1226
|
this.setRegister(true);
|
|
1227
|
+
this.callKit.trigger(KitEvent.SIP_REGISTERER_EVENT, {
|
|
1228
|
+
registererState: state,
|
|
1229
|
+
isRegistered: this.isRegistered()
|
|
1230
|
+
});
|
|
1196
1231
|
break;
|
|
1197
1232
|
case import_sip.RegistererState.Terminated:
|
|
1198
1233
|
this.callKit.logger.info("registerer stateChange Terminated", {
|
|
@@ -1205,6 +1240,10 @@ var Connect = class {
|
|
|
1205
1240
|
});
|
|
1206
1241
|
this.setRegister(false);
|
|
1207
1242
|
this.setConnectStatus(CallStatus.init);
|
|
1243
|
+
this.callKit.trigger(KitEvent.SIP_REGISTERER_EVENT, {
|
|
1244
|
+
registererState: state,
|
|
1245
|
+
isRegistered: this.isRegistered()
|
|
1246
|
+
});
|
|
1208
1247
|
break;
|
|
1209
1248
|
case import_sip.RegistererState.Unregistered:
|
|
1210
1249
|
this.callKit.logger.info("registerer stateChange Unregistered", {
|
|
@@ -1217,6 +1256,10 @@ var Connect = class {
|
|
|
1217
1256
|
});
|
|
1218
1257
|
this.setRegister(false);
|
|
1219
1258
|
this.setConnectStatus(CallStatus.init);
|
|
1259
|
+
this.callKit.trigger(KitEvent.SIP_REGISTERER_EVENT, {
|
|
1260
|
+
registererState: state,
|
|
1261
|
+
isRegistered: this.isRegistered()
|
|
1262
|
+
});
|
|
1220
1263
|
break;
|
|
1221
1264
|
default:
|
|
1222
1265
|
break;
|
|
@@ -1304,25 +1347,40 @@ var Connect = class {
|
|
|
1304
1347
|
alwaysAcquireMediaFirst: true
|
|
1305
1348
|
}
|
|
1306
1349
|
};
|
|
1350
|
+
const getInviteData = () => {
|
|
1351
|
+
const { request: request2 } = this.currentSession;
|
|
1352
|
+
const headerNames = Object.keys(request2.headers);
|
|
1353
|
+
const xHeaders = {};
|
|
1354
|
+
headerNames.filter((name) => name.toLocaleLowerCase().startsWith("x-antaios")).forEach((name) => {
|
|
1355
|
+
xHeaders[name.toLocaleLowerCase()] = request2.getHeader(name);
|
|
1356
|
+
});
|
|
1357
|
+
this.callKit.logger.info("get invite data", {
|
|
1358
|
+
caller: "Connect.register.onInvite",
|
|
1359
|
+
content: xHeaders
|
|
1360
|
+
});
|
|
1361
|
+
return xHeaders;
|
|
1362
|
+
};
|
|
1363
|
+
const info = getInviteData();
|
|
1364
|
+
try {
|
|
1365
|
+
const inviteData = formatGetInviteData(info);
|
|
1366
|
+
this.currentCallId = inviteData?.callUuid;
|
|
1367
|
+
this.callKit.logger.info("get invite data", {
|
|
1368
|
+
caller: "Connect.register.onInvite",
|
|
1369
|
+
content: {
|
|
1370
|
+
inviteData,
|
|
1371
|
+
currentCallId: this.currentCallId
|
|
1372
|
+
}
|
|
1373
|
+
});
|
|
1374
|
+
} catch (error) {
|
|
1375
|
+
this.callKit.logger.info(error, {
|
|
1376
|
+
caller: "Connect.register.onInvite",
|
|
1377
|
+
content: info
|
|
1378
|
+
});
|
|
1379
|
+
}
|
|
1307
1380
|
if (this.isOutgoing) {
|
|
1308
1381
|
this.currentSession.accept(options);
|
|
1309
|
-
this.setConnectStatus(CallStatus.connecting);
|
|
1310
1382
|
this.callKit.trigger(KitEvent.KIT_OUTGOING_INVITE, {
|
|
1311
|
-
getInviteData
|
|
1312
|
-
const { request: request2 } = this.currentSession;
|
|
1313
|
-
const headerNames = Object.keys(request2.headers);
|
|
1314
|
-
const xHeaders = {};
|
|
1315
|
-
headerNames.filter(
|
|
1316
|
-
(name) => name.toLocaleLowerCase().startsWith("x-antaios")
|
|
1317
|
-
).forEach((name) => {
|
|
1318
|
-
xHeaders[name.toLocaleLowerCase()] = request2.getHeader(name);
|
|
1319
|
-
});
|
|
1320
|
-
this.callKit.logger.info("get invite data", {
|
|
1321
|
-
caller: "Connect.register.onInvite",
|
|
1322
|
-
content: xHeaders
|
|
1323
|
-
});
|
|
1324
|
-
return xHeaders;
|
|
1325
|
-
}
|
|
1383
|
+
getInviteData
|
|
1326
1384
|
});
|
|
1327
1385
|
} else {
|
|
1328
1386
|
const reject = () => {
|
|
@@ -1336,21 +1394,7 @@ var Connect = class {
|
|
|
1336
1394
|
this.currentSession.accept(options);
|
|
1337
1395
|
},
|
|
1338
1396
|
reject,
|
|
1339
|
-
getInviteData
|
|
1340
|
-
const { request: request2 } = this.currentSession;
|
|
1341
|
-
const headerNames = Object.keys(request2.headers);
|
|
1342
|
-
const xHeaders = {};
|
|
1343
|
-
headerNames.filter(
|
|
1344
|
-
(name) => name.toLocaleLowerCase().startsWith("x-antaios")
|
|
1345
|
-
).forEach((name) => {
|
|
1346
|
-
xHeaders[name.toLocaleLowerCase()] = request2.getHeader(name);
|
|
1347
|
-
});
|
|
1348
|
-
this.callKit.logger.info("get invite data", {
|
|
1349
|
-
caller: "Connect.register",
|
|
1350
|
-
content: xHeaders
|
|
1351
|
-
});
|
|
1352
|
-
return xHeaders;
|
|
1353
|
-
}
|
|
1397
|
+
getInviteData
|
|
1354
1398
|
});
|
|
1355
1399
|
}
|
|
1356
1400
|
},
|
|
@@ -1787,7 +1831,7 @@ var Connect = class {
|
|
|
1787
1831
|
// package/socket.ts
|
|
1788
1832
|
var RECONNECT_CONFIG = {
|
|
1789
1833
|
enabled: true,
|
|
1790
|
-
maxAttempts:
|
|
1834
|
+
maxAttempts: 3,
|
|
1791
1835
|
delay: 500,
|
|
1792
1836
|
backoffMultiplier: 1.5,
|
|
1793
1837
|
pingInterval: 3e4,
|
|
@@ -1805,6 +1849,7 @@ var Socket = class {
|
|
|
1805
1849
|
reconnectTimer;
|
|
1806
1850
|
isReconnecting = false;
|
|
1807
1851
|
reconnectAttempts = 0;
|
|
1852
|
+
socketError = false;
|
|
1808
1853
|
constructor(callKit) {
|
|
1809
1854
|
this.callKit = callKit;
|
|
1810
1855
|
const { reconnect } = this.callKit.config.getConfig();
|
|
@@ -1828,7 +1873,7 @@ var Socket = class {
|
|
|
1828
1873
|
this.isConnected = false;
|
|
1829
1874
|
if (!this.callKit.config.isLogin() || !this.socketConfig.enabled) {
|
|
1830
1875
|
this.reset();
|
|
1831
|
-
this.callKit.trigger(KitEvent.
|
|
1876
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
1832
1877
|
event: "INCALL_NOT_CONNECTED"
|
|
1833
1878
|
});
|
|
1834
1879
|
return;
|
|
@@ -1848,6 +1893,7 @@ var Socket = class {
|
|
|
1848
1893
|
type: "INCALL",
|
|
1849
1894
|
content: { ev }
|
|
1850
1895
|
});
|
|
1896
|
+
this.socketError = false;
|
|
1851
1897
|
this.isConnected = true;
|
|
1852
1898
|
this.lastPingTime = Date.now();
|
|
1853
1899
|
this.checkPing();
|
|
@@ -1860,7 +1906,7 @@ var Socket = class {
|
|
|
1860
1906
|
reconnectAttempts: this.reconnectAttempts
|
|
1861
1907
|
}
|
|
1862
1908
|
});
|
|
1863
|
-
this.callKit.trigger(KitEvent.
|
|
1909
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
1864
1910
|
event: "INCALL_RECONNECT_SUCCESS"
|
|
1865
1911
|
});
|
|
1866
1912
|
}
|
|
@@ -1880,10 +1926,13 @@ var Socket = class {
|
|
|
1880
1926
|
type: "INCALL",
|
|
1881
1927
|
content: { ev }
|
|
1882
1928
|
});
|
|
1883
|
-
this.callKit.trigger(KitEvent.
|
|
1929
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
1884
1930
|
event: "INCALL_CONNECT_ERROR",
|
|
1885
1931
|
err: ev
|
|
1886
1932
|
});
|
|
1933
|
+
if (this.socketError) {
|
|
1934
|
+
return;
|
|
1935
|
+
}
|
|
1887
1936
|
this.handleDisconnect();
|
|
1888
1937
|
}
|
|
1889
1938
|
onError(ev) {
|
|
@@ -1895,6 +1944,7 @@ var Socket = class {
|
|
|
1895
1944
|
data: ev
|
|
1896
1945
|
}
|
|
1897
1946
|
});
|
|
1947
|
+
this.socketError = true;
|
|
1898
1948
|
}
|
|
1899
1949
|
confirmAck(data) {
|
|
1900
1950
|
const { ack, messageId } = data;
|
|
@@ -1985,6 +2035,9 @@ var Socket = class {
|
|
|
1985
2035
|
}
|
|
1986
2036
|
});
|
|
1987
2037
|
this.callKit.trigger(KitEvent.CALL_HANG_UP, /* @__PURE__ */ new Date());
|
|
2038
|
+
if (data.data?.callUuid) {
|
|
2039
|
+
this.callKit.connect.socketTriggerHangup(data.data.callUuid);
|
|
2040
|
+
}
|
|
1988
2041
|
}
|
|
1989
2042
|
if (data.event === SocketReceiveEvent.CUSTOMER_NO_ANSWER) {
|
|
1990
2043
|
this.callKit.logger.info(data.msg, {
|
|
@@ -1996,6 +2049,9 @@ var Socket = class {
|
|
|
1996
2049
|
}
|
|
1997
2050
|
});
|
|
1998
2051
|
this.callKit.trigger(KitEvent.CALL_NO_ANSWER);
|
|
2052
|
+
if (data.data?.callUuid) {
|
|
2053
|
+
this.callKit.connect.socketTriggerHangup(data.data.callUuid);
|
|
2054
|
+
}
|
|
1999
2055
|
}
|
|
2000
2056
|
if (data.event === SocketReceiveEvent.CALL_CDR) {
|
|
2001
2057
|
this.callKit.logger.info(data.msg, {
|
|
@@ -2047,12 +2103,15 @@ var Socket = class {
|
|
|
2047
2103
|
event: SocketReceiveEvent.AGENT_NO_ANSWER
|
|
2048
2104
|
}
|
|
2049
2105
|
});
|
|
2106
|
+
if (data.data?.callUuid) {
|
|
2107
|
+
this.callKit.connect.socketTriggerHangup(data.data.callUuid);
|
|
2108
|
+
}
|
|
2050
2109
|
}
|
|
2051
2110
|
this.callKit.trigger(KitEvent.SERVER_SOCKET_EVENT, data);
|
|
2052
2111
|
}
|
|
2053
2112
|
send(event, message) {
|
|
2054
2113
|
if (!this.isConnected) {
|
|
2055
|
-
this.callKit.trigger(KitEvent.
|
|
2114
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2056
2115
|
event: "INCALL_NOT_CONNECTED"
|
|
2057
2116
|
});
|
|
2058
2117
|
this.callKit.logger.error("socket not connected", {
|
|
@@ -2111,7 +2170,7 @@ var Socket = class {
|
|
|
2111
2170
|
}
|
|
2112
2171
|
async sendMessage(event, message) {
|
|
2113
2172
|
if (!this.isConnected) {
|
|
2114
|
-
this.callKit.trigger(KitEvent.
|
|
2173
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2115
2174
|
event: "INCALL_NOT_CONNECTED"
|
|
2116
2175
|
});
|
|
2117
2176
|
this.callKit.logger.error("socket not connected", {
|
|
@@ -2165,8 +2224,7 @@ var Socket = class {
|
|
|
2165
2224
|
}, this.socketConfig.pingInterval);
|
|
2166
2225
|
}
|
|
2167
2226
|
/**
|
|
2168
|
-
*
|
|
2169
|
-
* @param isWaitConfirm Whether need to wait for close confirmation
|
|
2227
|
+
* reset socket connection and all states
|
|
2170
2228
|
*/
|
|
2171
2229
|
async reset() {
|
|
2172
2230
|
if (this.pingTimer) {
|
|
@@ -2176,6 +2234,7 @@ var Socket = class {
|
|
|
2176
2234
|
this.resetReconnectState();
|
|
2177
2235
|
this.lastPingTime = void 0;
|
|
2178
2236
|
this.satrtConfirm = false;
|
|
2237
|
+
this.socketError = false;
|
|
2179
2238
|
if (this.ws && this.isConnected) {
|
|
2180
2239
|
this.callKit.logger.info("Closing socket connection", {
|
|
2181
2240
|
caller: "Socket.reset",
|
|
@@ -2196,14 +2255,14 @@ var Socket = class {
|
|
|
2196
2255
|
reconnectAttempts: this.reconnectAttempts
|
|
2197
2256
|
}
|
|
2198
2257
|
});
|
|
2199
|
-
this.callKit.trigger(KitEvent.
|
|
2258
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2200
2259
|
event: "INCALL_RECONNECT_ERROR"
|
|
2201
2260
|
});
|
|
2202
2261
|
this.reset();
|
|
2203
2262
|
return;
|
|
2204
2263
|
}
|
|
2205
2264
|
if (this.reconnectAttempts === 0) {
|
|
2206
|
-
this.callKit.trigger(KitEvent.
|
|
2265
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2207
2266
|
event: "INCALL_RECONNECT_START"
|
|
2208
2267
|
});
|
|
2209
2268
|
}
|