@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.mjs
CHANGED
|
@@ -210,7 +210,8 @@ var KitEvent = {
|
|
|
210
210
|
* User status change
|
|
211
211
|
*/
|
|
212
212
|
USER_STATUS_CHANGE: "userStatusChange",
|
|
213
|
-
|
|
213
|
+
INCALL_CONNECT_EVENT: "IncallConnectEvent",
|
|
214
|
+
SIP_CONNECT_EVENT: "sipConnectEvent",
|
|
214
215
|
SIP_REGISTERER_EVENT: "sipRegistererEvent",
|
|
215
216
|
SIP_SESSION_EVENT: "sipSessionEvent"
|
|
216
217
|
};
|
|
@@ -535,7 +536,7 @@ var Call = class {
|
|
|
535
536
|
});
|
|
536
537
|
return;
|
|
537
538
|
}
|
|
538
|
-
this.callKit.connect.setHold(
|
|
539
|
+
this.callKit.connect.setHold(false);
|
|
539
540
|
}
|
|
540
541
|
async callMute() {
|
|
541
542
|
if (!this.callKit.config.check())
|
|
@@ -810,6 +811,23 @@ import {
|
|
|
810
811
|
SessionState,
|
|
811
812
|
RegistererState
|
|
812
813
|
} from "sip.js";
|
|
814
|
+
|
|
815
|
+
// package/utils.ts
|
|
816
|
+
var formatGetInviteData = (inviteData) => {
|
|
817
|
+
const extendInfoStr = inviteData["x-antaios-manual-extend_info"] || inviteData["x-antaios-manual-extend-info"];
|
|
818
|
+
let extendInfoObj = null;
|
|
819
|
+
try {
|
|
820
|
+
if (extendInfoStr && typeof extendInfoStr === "string") {
|
|
821
|
+
const cleanedStr = extendInfoStr.replace(/\\/g, "");
|
|
822
|
+
extendInfoObj = JSON.parse(cleanedStr);
|
|
823
|
+
return extendInfoObj;
|
|
824
|
+
}
|
|
825
|
+
} catch (error) {
|
|
826
|
+
return {};
|
|
827
|
+
}
|
|
828
|
+
};
|
|
829
|
+
|
|
830
|
+
// package/connect.ts
|
|
813
831
|
var DEFAULT_RECONNECT_CONFIG = {
|
|
814
832
|
maxAttempts: 3,
|
|
815
833
|
delay: 500
|
|
@@ -898,7 +916,7 @@ var Connect = class {
|
|
|
898
916
|
if (this.connectStatus !== CallStatus.init) {
|
|
899
917
|
this.setConnectStatus(CallStatus.init);
|
|
900
918
|
}
|
|
901
|
-
if (this.isRegistered) {
|
|
919
|
+
if (this.isRegistered()) {
|
|
902
920
|
this.unregister();
|
|
903
921
|
}
|
|
904
922
|
this.currentSession = void 0;
|
|
@@ -907,6 +925,7 @@ var Connect = class {
|
|
|
907
925
|
this.registerer = void 0;
|
|
908
926
|
this.isOutgoing = false;
|
|
909
927
|
this.isUnprompted = false;
|
|
928
|
+
this.currentCallId = void 0;
|
|
910
929
|
if (this.mediaStream) {
|
|
911
930
|
try {
|
|
912
931
|
closeStream(this.mediaStream);
|
|
@@ -1002,12 +1021,24 @@ var Connect = class {
|
|
|
1002
1021
|
this.heartbeatFlag -= 1;
|
|
1003
1022
|
if (this.heartbeatFlag <= 0) {
|
|
1004
1023
|
this.heartbeatFlag = MAX_HEARTBEAT_COUNT;
|
|
1005
|
-
this.callKit.trigger(KitEvent.
|
|
1024
|
+
this.callKit.trigger(KitEvent.SIP_CONNECT_EVENT, {
|
|
1006
1025
|
event: "OPTIONS_HEARTBEAT_EXPIRED"
|
|
1007
1026
|
});
|
|
1008
1027
|
}
|
|
1009
1028
|
}, 1e3);
|
|
1010
1029
|
}
|
|
1030
|
+
socketTriggerHangup(callId) {
|
|
1031
|
+
if (!this.isCalling() || callId !== this.currentCallId)
|
|
1032
|
+
return;
|
|
1033
|
+
this.callKit.logger.info("socketHangup trigger hangup", {
|
|
1034
|
+
caller: "Connect.socketHangup",
|
|
1035
|
+
content: {
|
|
1036
|
+
callId,
|
|
1037
|
+
currentCallId: this.currentCallId
|
|
1038
|
+
}
|
|
1039
|
+
});
|
|
1040
|
+
this.callKit.hangup();
|
|
1041
|
+
}
|
|
1011
1042
|
async register() {
|
|
1012
1043
|
if (this.connectStatus !== CallStatus.init) {
|
|
1013
1044
|
if (this.isRegistered()) {
|
|
@@ -1166,6 +1197,10 @@ var Connect = class {
|
|
|
1166
1197
|
}
|
|
1167
1198
|
});
|
|
1168
1199
|
this.setRegister(true);
|
|
1200
|
+
this.callKit.trigger(KitEvent.SIP_REGISTERER_EVENT, {
|
|
1201
|
+
registererState: state,
|
|
1202
|
+
isRegistered: this.isRegistered()
|
|
1203
|
+
});
|
|
1169
1204
|
break;
|
|
1170
1205
|
case RegistererState.Terminated:
|
|
1171
1206
|
this.callKit.logger.info("registerer stateChange Terminated", {
|
|
@@ -1178,6 +1213,10 @@ var Connect = class {
|
|
|
1178
1213
|
});
|
|
1179
1214
|
this.setRegister(false);
|
|
1180
1215
|
this.setConnectStatus(CallStatus.init);
|
|
1216
|
+
this.callKit.trigger(KitEvent.SIP_REGISTERER_EVENT, {
|
|
1217
|
+
registererState: state,
|
|
1218
|
+
isRegistered: this.isRegistered()
|
|
1219
|
+
});
|
|
1181
1220
|
break;
|
|
1182
1221
|
case RegistererState.Unregistered:
|
|
1183
1222
|
this.callKit.logger.info("registerer stateChange Unregistered", {
|
|
@@ -1190,6 +1229,10 @@ var Connect = class {
|
|
|
1190
1229
|
});
|
|
1191
1230
|
this.setRegister(false);
|
|
1192
1231
|
this.setConnectStatus(CallStatus.init);
|
|
1232
|
+
this.callKit.trigger(KitEvent.SIP_REGISTERER_EVENT, {
|
|
1233
|
+
registererState: state,
|
|
1234
|
+
isRegistered: this.isRegistered()
|
|
1235
|
+
});
|
|
1193
1236
|
break;
|
|
1194
1237
|
default:
|
|
1195
1238
|
break;
|
|
@@ -1277,25 +1320,40 @@ var Connect = class {
|
|
|
1277
1320
|
alwaysAcquireMediaFirst: true
|
|
1278
1321
|
}
|
|
1279
1322
|
};
|
|
1323
|
+
const getInviteData = () => {
|
|
1324
|
+
const { request: request2 } = this.currentSession;
|
|
1325
|
+
const headerNames = Object.keys(request2.headers);
|
|
1326
|
+
const xHeaders = {};
|
|
1327
|
+
headerNames.filter((name) => name.toLocaleLowerCase().startsWith("x-antaios")).forEach((name) => {
|
|
1328
|
+
xHeaders[name.toLocaleLowerCase()] = request2.getHeader(name);
|
|
1329
|
+
});
|
|
1330
|
+
this.callKit.logger.info("get invite data", {
|
|
1331
|
+
caller: "Connect.register.onInvite",
|
|
1332
|
+
content: xHeaders
|
|
1333
|
+
});
|
|
1334
|
+
return xHeaders;
|
|
1335
|
+
};
|
|
1336
|
+
const info = getInviteData();
|
|
1337
|
+
try {
|
|
1338
|
+
const inviteData = formatGetInviteData(info);
|
|
1339
|
+
this.currentCallId = inviteData?.callUuid;
|
|
1340
|
+
this.callKit.logger.info("get invite data", {
|
|
1341
|
+
caller: "Connect.register.onInvite",
|
|
1342
|
+
content: {
|
|
1343
|
+
inviteData,
|
|
1344
|
+
currentCallId: this.currentCallId
|
|
1345
|
+
}
|
|
1346
|
+
});
|
|
1347
|
+
} catch (error) {
|
|
1348
|
+
this.callKit.logger.info(error, {
|
|
1349
|
+
caller: "Connect.register.onInvite",
|
|
1350
|
+
content: info
|
|
1351
|
+
});
|
|
1352
|
+
}
|
|
1280
1353
|
if (this.isOutgoing) {
|
|
1281
1354
|
this.currentSession.accept(options);
|
|
1282
|
-
this.setConnectStatus(CallStatus.connecting);
|
|
1283
1355
|
this.callKit.trigger(KitEvent.KIT_OUTGOING_INVITE, {
|
|
1284
|
-
getInviteData
|
|
1285
|
-
const { request: request2 } = this.currentSession;
|
|
1286
|
-
const headerNames = Object.keys(request2.headers);
|
|
1287
|
-
const xHeaders = {};
|
|
1288
|
-
headerNames.filter(
|
|
1289
|
-
(name) => name.toLocaleLowerCase().startsWith("x-antaios")
|
|
1290
|
-
).forEach((name) => {
|
|
1291
|
-
xHeaders[name.toLocaleLowerCase()] = request2.getHeader(name);
|
|
1292
|
-
});
|
|
1293
|
-
this.callKit.logger.info("get invite data", {
|
|
1294
|
-
caller: "Connect.register.onInvite",
|
|
1295
|
-
content: xHeaders
|
|
1296
|
-
});
|
|
1297
|
-
return xHeaders;
|
|
1298
|
-
}
|
|
1356
|
+
getInviteData
|
|
1299
1357
|
});
|
|
1300
1358
|
} else {
|
|
1301
1359
|
const reject = () => {
|
|
@@ -1309,21 +1367,7 @@ var Connect = class {
|
|
|
1309
1367
|
this.currentSession.accept(options);
|
|
1310
1368
|
},
|
|
1311
1369
|
reject,
|
|
1312
|
-
getInviteData
|
|
1313
|
-
const { request: request2 } = this.currentSession;
|
|
1314
|
-
const headerNames = Object.keys(request2.headers);
|
|
1315
|
-
const xHeaders = {};
|
|
1316
|
-
headerNames.filter(
|
|
1317
|
-
(name) => name.toLocaleLowerCase().startsWith("x-antaios")
|
|
1318
|
-
).forEach((name) => {
|
|
1319
|
-
xHeaders[name.toLocaleLowerCase()] = request2.getHeader(name);
|
|
1320
|
-
});
|
|
1321
|
-
this.callKit.logger.info("get invite data", {
|
|
1322
|
-
caller: "Connect.register",
|
|
1323
|
-
content: xHeaders
|
|
1324
|
-
});
|
|
1325
|
-
return xHeaders;
|
|
1326
|
-
}
|
|
1370
|
+
getInviteData
|
|
1327
1371
|
});
|
|
1328
1372
|
}
|
|
1329
1373
|
},
|
|
@@ -1760,7 +1804,7 @@ var Connect = class {
|
|
|
1760
1804
|
// package/socket.ts
|
|
1761
1805
|
var RECONNECT_CONFIG = {
|
|
1762
1806
|
enabled: true,
|
|
1763
|
-
maxAttempts:
|
|
1807
|
+
maxAttempts: 3,
|
|
1764
1808
|
delay: 500,
|
|
1765
1809
|
backoffMultiplier: 1.5,
|
|
1766
1810
|
pingInterval: 3e4,
|
|
@@ -1778,6 +1822,7 @@ var Socket = class {
|
|
|
1778
1822
|
reconnectTimer;
|
|
1779
1823
|
isReconnecting = false;
|
|
1780
1824
|
reconnectAttempts = 0;
|
|
1825
|
+
socketError = false;
|
|
1781
1826
|
constructor(callKit) {
|
|
1782
1827
|
this.callKit = callKit;
|
|
1783
1828
|
const { reconnect } = this.callKit.config.getConfig();
|
|
@@ -1801,7 +1846,7 @@ var Socket = class {
|
|
|
1801
1846
|
this.isConnected = false;
|
|
1802
1847
|
if (!this.callKit.config.isLogin() || !this.socketConfig.enabled) {
|
|
1803
1848
|
this.reset();
|
|
1804
|
-
this.callKit.trigger(KitEvent.
|
|
1849
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
1805
1850
|
event: "INCALL_NOT_CONNECTED"
|
|
1806
1851
|
});
|
|
1807
1852
|
return;
|
|
@@ -1821,6 +1866,7 @@ var Socket = class {
|
|
|
1821
1866
|
type: "INCALL",
|
|
1822
1867
|
content: { ev }
|
|
1823
1868
|
});
|
|
1869
|
+
this.socketError = false;
|
|
1824
1870
|
this.isConnected = true;
|
|
1825
1871
|
this.lastPingTime = Date.now();
|
|
1826
1872
|
this.checkPing();
|
|
@@ -1833,7 +1879,7 @@ var Socket = class {
|
|
|
1833
1879
|
reconnectAttempts: this.reconnectAttempts
|
|
1834
1880
|
}
|
|
1835
1881
|
});
|
|
1836
|
-
this.callKit.trigger(KitEvent.
|
|
1882
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
1837
1883
|
event: "INCALL_RECONNECT_SUCCESS"
|
|
1838
1884
|
});
|
|
1839
1885
|
}
|
|
@@ -1853,10 +1899,13 @@ var Socket = class {
|
|
|
1853
1899
|
type: "INCALL",
|
|
1854
1900
|
content: { ev }
|
|
1855
1901
|
});
|
|
1856
|
-
this.callKit.trigger(KitEvent.
|
|
1902
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
1857
1903
|
event: "INCALL_CONNECT_ERROR",
|
|
1858
1904
|
err: ev
|
|
1859
1905
|
});
|
|
1906
|
+
if (this.socketError) {
|
|
1907
|
+
return;
|
|
1908
|
+
}
|
|
1860
1909
|
this.handleDisconnect();
|
|
1861
1910
|
}
|
|
1862
1911
|
onError(ev) {
|
|
@@ -1868,6 +1917,7 @@ var Socket = class {
|
|
|
1868
1917
|
data: ev
|
|
1869
1918
|
}
|
|
1870
1919
|
});
|
|
1920
|
+
this.socketError = true;
|
|
1871
1921
|
}
|
|
1872
1922
|
confirmAck(data) {
|
|
1873
1923
|
const { ack, messageId } = data;
|
|
@@ -1958,6 +2008,9 @@ var Socket = class {
|
|
|
1958
2008
|
}
|
|
1959
2009
|
});
|
|
1960
2010
|
this.callKit.trigger(KitEvent.CALL_HANG_UP, /* @__PURE__ */ new Date());
|
|
2011
|
+
if (data.data?.callUuid) {
|
|
2012
|
+
this.callKit.connect.socketTriggerHangup(data.data.callUuid);
|
|
2013
|
+
}
|
|
1961
2014
|
}
|
|
1962
2015
|
if (data.event === SocketReceiveEvent.CUSTOMER_NO_ANSWER) {
|
|
1963
2016
|
this.callKit.logger.info(data.msg, {
|
|
@@ -1969,6 +2022,9 @@ var Socket = class {
|
|
|
1969
2022
|
}
|
|
1970
2023
|
});
|
|
1971
2024
|
this.callKit.trigger(KitEvent.CALL_NO_ANSWER);
|
|
2025
|
+
if (data.data?.callUuid) {
|
|
2026
|
+
this.callKit.connect.socketTriggerHangup(data.data.callUuid);
|
|
2027
|
+
}
|
|
1972
2028
|
}
|
|
1973
2029
|
if (data.event === SocketReceiveEvent.CALL_CDR) {
|
|
1974
2030
|
this.callKit.logger.info(data.msg, {
|
|
@@ -2020,12 +2076,15 @@ var Socket = class {
|
|
|
2020
2076
|
event: SocketReceiveEvent.AGENT_NO_ANSWER
|
|
2021
2077
|
}
|
|
2022
2078
|
});
|
|
2079
|
+
if (data.data?.callUuid) {
|
|
2080
|
+
this.callKit.connect.socketTriggerHangup(data.data.callUuid);
|
|
2081
|
+
}
|
|
2023
2082
|
}
|
|
2024
2083
|
this.callKit.trigger(KitEvent.SERVER_SOCKET_EVENT, data);
|
|
2025
2084
|
}
|
|
2026
2085
|
send(event, message) {
|
|
2027
2086
|
if (!this.isConnected) {
|
|
2028
|
-
this.callKit.trigger(KitEvent.
|
|
2087
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2029
2088
|
event: "INCALL_NOT_CONNECTED"
|
|
2030
2089
|
});
|
|
2031
2090
|
this.callKit.logger.error("socket not connected", {
|
|
@@ -2084,7 +2143,7 @@ var Socket = class {
|
|
|
2084
2143
|
}
|
|
2085
2144
|
async sendMessage(event, message) {
|
|
2086
2145
|
if (!this.isConnected) {
|
|
2087
|
-
this.callKit.trigger(KitEvent.
|
|
2146
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2088
2147
|
event: "INCALL_NOT_CONNECTED"
|
|
2089
2148
|
});
|
|
2090
2149
|
this.callKit.logger.error("socket not connected", {
|
|
@@ -2138,8 +2197,7 @@ var Socket = class {
|
|
|
2138
2197
|
}, this.socketConfig.pingInterval);
|
|
2139
2198
|
}
|
|
2140
2199
|
/**
|
|
2141
|
-
*
|
|
2142
|
-
* @param isWaitConfirm Whether need to wait for close confirmation
|
|
2200
|
+
* reset socket connection and all states
|
|
2143
2201
|
*/
|
|
2144
2202
|
async reset() {
|
|
2145
2203
|
if (this.pingTimer) {
|
|
@@ -2149,6 +2207,7 @@ var Socket = class {
|
|
|
2149
2207
|
this.resetReconnectState();
|
|
2150
2208
|
this.lastPingTime = void 0;
|
|
2151
2209
|
this.satrtConfirm = false;
|
|
2210
|
+
this.socketError = false;
|
|
2152
2211
|
if (this.ws && this.isConnected) {
|
|
2153
2212
|
this.callKit.logger.info("Closing socket connection", {
|
|
2154
2213
|
caller: "Socket.reset",
|
|
@@ -2169,14 +2228,14 @@ var Socket = class {
|
|
|
2169
2228
|
reconnectAttempts: this.reconnectAttempts
|
|
2170
2229
|
}
|
|
2171
2230
|
});
|
|
2172
|
-
this.callKit.trigger(KitEvent.
|
|
2231
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2173
2232
|
event: "INCALL_RECONNECT_ERROR"
|
|
2174
2233
|
});
|
|
2175
2234
|
this.reset();
|
|
2176
2235
|
return;
|
|
2177
2236
|
}
|
|
2178
2237
|
if (this.reconnectAttempts === 0) {
|
|
2179
|
-
this.callKit.trigger(KitEvent.
|
|
2238
|
+
this.callKit.trigger(KitEvent.INCALL_CONNECT_EVENT, {
|
|
2180
2239
|
event: "INCALL_RECONNECT_START"
|
|
2181
2240
|
});
|
|
2182
2241
|
}
|