@webex/calling 3.8.0 → 3.8.1-next.2
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/CallHistory/CallHistory.js +100 -63
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +115 -19
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/constants.js +9 -1
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallSettings/CallSettings.js +46 -13
- package/dist/CallSettings/CallSettings.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.js +62 -18
- package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
- package/dist/CallSettings/UcmBackendConnector.test.js +70 -7
- package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.js +153 -103
- package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
- package/dist/CallSettings/WxCallBackendConnector.test.js +52 -15
- package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
- package/dist/CallSettings/constants.js +15 -1
- package/dist/CallSettings/constants.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +220 -159
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +53 -24
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +251 -189
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +96 -41
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +73 -48
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +96 -37
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/constants.js +105 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +47 -18
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +2 -2
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +359 -297
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +561 -163
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/Contacts/ContactsClient.js +156 -102
- package/dist/Contacts/ContactsClient.js.map +1 -1
- package/dist/Contacts/ContactsClient.test.js +197 -49
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Contacts/constants.js +11 -1
- package/dist/Contacts/constants.js.map +1 -1
- package/dist/Errors/types.js +2 -0
- package/dist/Errors/types.js.map +1 -1
- package/dist/Events/impl/index.js +1 -1
- package/dist/Events/impl/index.js.map +1 -1
- package/dist/Metrics/index.js +102 -41
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +10 -4
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +4 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.js +154 -91
- package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
- package/dist/Voicemail/BroadworksBackendConnector.test.js +99 -19
- package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.js +105 -54
- package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
- package/dist/Voicemail/UcmBackendConnector.test.js +127 -17
- package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +198 -79
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/Voicemail.test.js +188 -23
- package/dist/Voicemail/Voicemail.test.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +277 -161
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.test.js +268 -10
- package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
- package/dist/Voicemail/constants.js +25 -1
- package/dist/Voicemail/constants.js.map +1 -1
- package/dist/Voicemail/types.js.map +1 -1
- package/dist/common/Utils.js +168 -104
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +199 -35
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +2 -1
- package/dist/common/constants.js.map +1 -1
- package/dist/common/testUtil.js +3 -0
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +32 -13
- package/dist/module/CallHistory/constants.js +6 -0
- package/dist/module/CallSettings/CallSettings.js +36 -3
- package/dist/module/CallSettings/UcmBackendConnector.js +50 -5
- package/dist/module/CallSettings/WxCallBackendConnector.js +54 -18
- package/dist/module/CallSettings/constants.js +12 -0
- package/dist/module/CallingClient/CallingClient.js +54 -16
- package/dist/module/CallingClient/calling/call.js +172 -121
- package/dist/module/CallingClient/calling/callManager.js +51 -26
- package/dist/module/CallingClient/constants.js +102 -2
- package/dist/module/CallingClient/line/index.js +37 -8
- package/dist/module/CallingClient/registration/register.js +103 -64
- package/dist/module/Contacts/ContactsClient.js +65 -21
- package/dist/module/Contacts/constants.js +10 -0
- package/dist/module/Errors/types.js +2 -0
- package/dist/module/Events/impl/index.js +1 -1
- package/dist/module/Metrics/index.js +57 -2
- package/dist/module/Metrics/types.js +3 -0
- package/dist/module/Voicemail/BroadworksBackendConnector.js +66 -17
- package/dist/module/Voicemail/UcmBackendConnector.js +51 -11
- package/dist/module/Voicemail/Voicemail.js +109 -9
- package/dist/module/Voicemail/WxCallBackendConnector.js +67 -18
- package/dist/module/Voicemail/constants.js +21 -0
- package/dist/module/common/Utils.js +51 -12
- package/dist/module/common/constants.js +1 -0
- package/dist/module/common/testUtil.js +3 -0
- package/dist/module/index.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallHistory/constants.d.ts +6 -0
- package/dist/types/CallHistory/constants.d.ts.map +1 -1
- package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
- package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/CallSettings/constants.d.ts +12 -0
- package/dist/types/CallSettings/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts +2 -3
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +102 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +3 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +1 -0
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
- package/dist/types/Contacts/constants.d.ts +10 -0
- package/dist/types/Contacts/constants.d.ts.map +1 -1
- package/dist/types/Errors/types.d.ts +2 -0
- package/dist/types/Errors/types.d.ts.map +1 -1
- package/dist/types/Metrics/index.d.ts +1 -1
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +7 -2
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +11 -2
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +3 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
- package/dist/types/Voicemail/constants.d.ts +21 -0
- package/dist/types/Voicemail/constants.d.ts.map +1 -1
- package/dist/types/Voicemail/types.d.ts +1 -1
- package/dist/types/Voicemail/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +4 -4
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +1 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +3 -0
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +12 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { METHOD_START_MESSAGE } from '../../common/constants';
|
|
2
|
+
import { CALL_MANAGER_FILE, METHODS } from '../constants';
|
|
2
3
|
import { CALLING_CLIENT_EVENT_KEYS, LINE_EVENT_KEYS } from '../../Events/types';
|
|
3
4
|
import { Eventing } from '../../Events/impl';
|
|
4
5
|
import SDKConnector from '../../SDKConnector';
|
|
@@ -28,6 +29,10 @@ export class CallManager extends Eventing {
|
|
|
28
29
|
this.listenForWsEvents();
|
|
29
30
|
}
|
|
30
31
|
createCall = (direction, deviceId, lineId, destination) => {
|
|
32
|
+
log.info(`${METHOD_START_MESSAGE} with ${direction}, ${deviceId} and ${lineId}`, {
|
|
33
|
+
file: CALL_MANAGER_FILE,
|
|
34
|
+
method: METHODS.CREATE_CALL,
|
|
35
|
+
});
|
|
31
36
|
log.log('Creating call object', {});
|
|
32
37
|
const newCall = createCall(this.activeMobiusUrl, this.webex, direction, deviceId, lineId, (correlationId) => {
|
|
33
38
|
delete this.callCollection[correlationId];
|
|
@@ -35,6 +40,10 @@ export class CallManager extends Eventing {
|
|
|
35
40
|
log.info(`DELETE:: Deleted corelationId: ${newCall.getCorrelationId()} from CallManager, Number of call records :- ${activeCalls}`, {});
|
|
36
41
|
if (activeCalls === 0) {
|
|
37
42
|
this.emit(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED);
|
|
43
|
+
log.log('All calls have been cleared', {
|
|
44
|
+
file: CALL_MANAGER_FILE,
|
|
45
|
+
method: METHODS.CREATE_CALL,
|
|
46
|
+
});
|
|
38
47
|
}
|
|
39
48
|
}, this.serviceIndicator, destination);
|
|
40
49
|
this.callCollection[newCall.getCorrelationId()] = newCall;
|
|
@@ -44,20 +53,32 @@ export class CallManager extends Eventing {
|
|
|
44
53
|
};
|
|
45
54
|
updateActiveMobius(url) {
|
|
46
55
|
this.activeMobiusUrl = url;
|
|
56
|
+
log.log(`Successfully updated active Mobius URL to: ${url}`, {
|
|
57
|
+
file: CALL_MANAGER_FILE,
|
|
58
|
+
method: METHODS.UPDATE_ACTIVE_MOBIUS,
|
|
59
|
+
});
|
|
47
60
|
}
|
|
48
61
|
listenForWsEvents() {
|
|
49
62
|
this.sdkConnector.registerListener('event:mobius', async (event) => {
|
|
50
63
|
this.dequeueWsEvents(event);
|
|
51
64
|
});
|
|
65
|
+
log.info('Successfully registered listener for Mobius events', {
|
|
66
|
+
file: CALL_MANAGER_FILE,
|
|
67
|
+
method: METHODS.REGISTER_SESSIONS_LISTENER,
|
|
68
|
+
});
|
|
52
69
|
}
|
|
53
70
|
dequeueWsEvents(event) {
|
|
71
|
+
log.info(`${METHOD_START_MESSAGE} with event ${event}`, {
|
|
72
|
+
file: CALL_MANAGER_FILE,
|
|
73
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
74
|
+
});
|
|
54
75
|
const mobiusEvent = event;
|
|
55
76
|
const { callId, correlationId } = mobiusEvent.data;
|
|
56
77
|
switch (mobiusEvent.data.eventType) {
|
|
57
78
|
case MobiusEventType.CALL_SETUP: {
|
|
58
79
|
log.log(`Received call Setup message for call: ${callId}`, {
|
|
59
80
|
file: CALL_MANAGER_FILE,
|
|
60
|
-
method:
|
|
81
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
61
82
|
});
|
|
62
83
|
if (mobiusEvent.data.midCallService) {
|
|
63
84
|
mobiusEvent.data.midCallService.forEach((midCallEvent) => {
|
|
@@ -66,9 +87,9 @@ export class CallManager extends Eventing {
|
|
|
66
87
|
call.handleMidCallEvent(midCallEvent);
|
|
67
88
|
}
|
|
68
89
|
else {
|
|
69
|
-
log.
|
|
90
|
+
log.info(`Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`, {
|
|
70
91
|
file: CALL_MANAGER_FILE,
|
|
71
|
-
method:
|
|
92
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
72
93
|
});
|
|
73
94
|
}
|
|
74
95
|
});
|
|
@@ -81,13 +102,13 @@ export class CallManager extends Eventing {
|
|
|
81
102
|
newCall = this.createCall(CallDirection.INBOUND, mobiusEvent.data.deviceId, lineId, {});
|
|
82
103
|
log.log(`New incoming call created with correlationId from Call Setup message: ${newCall.getCorrelationId()}`, {
|
|
83
104
|
file: CALL_MANAGER_FILE,
|
|
84
|
-
method:
|
|
105
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
85
106
|
});
|
|
86
107
|
newCall.setCallId(callId);
|
|
87
108
|
if (mobiusEvent.data.broadworksCorrelationInfo) {
|
|
88
|
-
log.
|
|
109
|
+
log.info(`Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`, {
|
|
89
110
|
file: CALL_MANAGER_FILE,
|
|
90
|
-
method:
|
|
111
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
91
112
|
});
|
|
92
113
|
newCall.setBroadworksCorrelationInfo(mobiusEvent.data.broadworksCorrelationInfo);
|
|
93
114
|
}
|
|
@@ -95,14 +116,14 @@ export class CallManager extends Eventing {
|
|
|
95
116
|
else {
|
|
96
117
|
log.info(`Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`, {
|
|
97
118
|
file: CALL_MANAGER_FILE,
|
|
98
|
-
method:
|
|
119
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
99
120
|
});
|
|
100
121
|
newCall = this.getCall(newId);
|
|
101
122
|
}
|
|
102
123
|
if (mobiusEvent.data.callerId) {
|
|
103
124
|
log.info('Processing Caller-Id data', {
|
|
104
125
|
file: CALL_MANAGER_FILE,
|
|
105
|
-
method:
|
|
126
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
106
127
|
});
|
|
107
128
|
newCall.startCallerIdResolution(mobiusEvent.data.callerId);
|
|
108
129
|
}
|
|
@@ -113,7 +134,7 @@ export class CallManager extends Eventing {
|
|
|
113
134
|
case MobiusEventType.CALL_PROGRESS: {
|
|
114
135
|
log.log(`Received call progress mobiusEvent for call: ${correlationId}`, {
|
|
115
136
|
file: CALL_MANAGER_FILE,
|
|
116
|
-
method:
|
|
137
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
117
138
|
});
|
|
118
139
|
const call = this.getCall(correlationId);
|
|
119
140
|
call.sendCallStateMachineEvt({ type: 'E_RECV_CALL_PROGRESS', data: mobiusEvent.data });
|
|
@@ -122,7 +143,7 @@ export class CallManager extends Eventing {
|
|
|
122
143
|
case MobiusEventType.CALL_MEDIA: {
|
|
123
144
|
log.log(`Received call media mobiusEvent for call: ${correlationId}`, {
|
|
124
145
|
file: CALL_MANAGER_FILE,
|
|
125
|
-
method:
|
|
146
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
126
147
|
});
|
|
127
148
|
let activeCall;
|
|
128
149
|
if (correlationId) {
|
|
@@ -133,7 +154,7 @@ export class CallManager extends Eventing {
|
|
|
133
154
|
if (newId) {
|
|
134
155
|
log.info(`Found the call Object with a matching callId: ${callId} from our records with correlationId: ${newId}`, {
|
|
135
156
|
file: CALL_MANAGER_FILE,
|
|
136
|
-
method:
|
|
157
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
137
158
|
});
|
|
138
159
|
activeCall = this.getCall(newId);
|
|
139
160
|
}
|
|
@@ -142,7 +163,7 @@ export class CallManager extends Eventing {
|
|
|
142
163
|
activeCall = this.createCall(CallDirection.INBOUND, mobiusEvent.data.deviceId, lineId, {});
|
|
143
164
|
log.log(`New incoming call created with correlationId from ROAP Message: ${activeCall.getCorrelationId()}`, {
|
|
144
165
|
file: CALL_MANAGER_FILE,
|
|
145
|
-
method:
|
|
166
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
146
167
|
});
|
|
147
168
|
activeCall.setCallId(callId);
|
|
148
169
|
}
|
|
@@ -150,18 +171,18 @@ export class CallManager extends Eventing {
|
|
|
150
171
|
if (activeCall) {
|
|
151
172
|
log.info(`SDP from mobius ${mobiusEvent.data.message?.sdp}`, {
|
|
152
173
|
file: CALL_MANAGER_FILE,
|
|
153
|
-
method:
|
|
174
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
154
175
|
});
|
|
155
176
|
log.log(`ROAP message from mobius with type: ${mobiusEvent.data.message?.messageType}, seq: ${mobiusEvent.data.message?.seq} , version: ${mobiusEvent.data.message?.version}`, {
|
|
156
177
|
file: CALL_MANAGER_FILE,
|
|
157
|
-
method:
|
|
178
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
158
179
|
});
|
|
159
180
|
const mediaState = mobiusEvent.data.message?.messageType;
|
|
160
181
|
switch (mediaState) {
|
|
161
182
|
case MediaState.OFFER: {
|
|
162
183
|
log.log('Received OFFER', {
|
|
163
184
|
file: CALL_MANAGER_FILE,
|
|
164
|
-
method:
|
|
185
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
165
186
|
});
|
|
166
187
|
activeCall.sendMediaStateMachineEvt({
|
|
167
188
|
type: 'E_RECV_ROAP_OFFER',
|
|
@@ -172,7 +193,7 @@ export class CallManager extends Eventing {
|
|
|
172
193
|
case MediaState.ANSWER: {
|
|
173
194
|
log.log('Received ANSWER', {
|
|
174
195
|
file: CALL_MANAGER_FILE,
|
|
175
|
-
method:
|
|
196
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
176
197
|
});
|
|
177
198
|
activeCall.sendMediaStateMachineEvt({
|
|
178
199
|
type: 'E_RECV_ROAP_ANSWER',
|
|
@@ -183,7 +204,7 @@ export class CallManager extends Eventing {
|
|
|
183
204
|
case MediaState.OFFER_REQUEST: {
|
|
184
205
|
log.log('Received OFFER_REQUEST', {
|
|
185
206
|
file: CALL_MANAGER_FILE,
|
|
186
|
-
method:
|
|
207
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
187
208
|
});
|
|
188
209
|
activeCall.sendMediaStateMachineEvt({
|
|
189
210
|
type: 'E_RECV_ROAP_OFFER_REQUEST',
|
|
@@ -194,7 +215,7 @@ export class CallManager extends Eventing {
|
|
|
194
215
|
case MediaState.OK: {
|
|
195
216
|
log.log('Received OK', {
|
|
196
217
|
file: CALL_MANAGER_FILE,
|
|
197
|
-
method:
|
|
218
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
198
219
|
});
|
|
199
220
|
const mediaOk = {
|
|
200
221
|
received: true,
|
|
@@ -209,22 +230,22 @@ export class CallManager extends Eventing {
|
|
|
209
230
|
case MediaState.ERROR: {
|
|
210
231
|
log.log('Received Error...', {
|
|
211
232
|
file: CALL_MANAGER_FILE,
|
|
212
|
-
method:
|
|
233
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
213
234
|
});
|
|
214
235
|
break;
|
|
215
236
|
}
|
|
216
237
|
default: {
|
|
217
238
|
log.log(`Unknown Media mobiusEvent: ${mediaState} `, {
|
|
218
239
|
file: CALL_MANAGER_FILE,
|
|
219
|
-
method:
|
|
240
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
220
241
|
});
|
|
221
242
|
}
|
|
222
243
|
}
|
|
223
244
|
}
|
|
224
245
|
else {
|
|
225
|
-
log.
|
|
246
|
+
log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {
|
|
226
247
|
file: CALL_MANAGER_FILE,
|
|
227
|
-
method:
|
|
248
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
228
249
|
});
|
|
229
250
|
}
|
|
230
251
|
break;
|
|
@@ -232,7 +253,7 @@ export class CallManager extends Eventing {
|
|
|
232
253
|
case MobiusEventType.CALL_CONNECTED: {
|
|
233
254
|
log.log(`Received call connect for call: ${correlationId}`, {
|
|
234
255
|
file: CALL_MANAGER_FILE,
|
|
235
|
-
method:
|
|
256
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
236
257
|
});
|
|
237
258
|
const call = this.getCall(correlationId);
|
|
238
259
|
call.sendCallStateMachineEvt({ type: 'E_RECV_CALL_CONNECT', data: mobiusEvent.data });
|
|
@@ -241,7 +262,7 @@ export class CallManager extends Eventing {
|
|
|
241
262
|
case MobiusEventType.CALL_DISCONNECTED: {
|
|
242
263
|
log.log(`Received call disconnect for call: ${correlationId}`, {
|
|
243
264
|
file: CALL_MANAGER_FILE,
|
|
244
|
-
method:
|
|
265
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
245
266
|
});
|
|
246
267
|
const call = this.getCall(correlationId);
|
|
247
268
|
if (call) {
|
|
@@ -252,7 +273,7 @@ export class CallManager extends Eventing {
|
|
|
252
273
|
default: {
|
|
253
274
|
log.log(`Unknown Call Event mobiusEvent: ${mobiusEvent.data.eventType}`, {
|
|
254
275
|
file: CALL_MANAGER_FILE,
|
|
255
|
-
method:
|
|
276
|
+
method: METHODS.DEQUEUE_WS_EVENTS,
|
|
256
277
|
});
|
|
257
278
|
}
|
|
258
279
|
}
|
|
@@ -265,6 +286,10 @@ export class CallManager extends Eventing {
|
|
|
265
286
|
};
|
|
266
287
|
updateLine(deviceId, line) {
|
|
267
288
|
this.lineDict[deviceId] = line;
|
|
289
|
+
log.log(`Successfully updated line for deviceId: ${deviceId}`, {
|
|
290
|
+
file: CALL_MANAGER_FILE,
|
|
291
|
+
method: METHODS.UPDATE_LINE,
|
|
292
|
+
});
|
|
268
293
|
}
|
|
269
294
|
getLineId(deviceId) {
|
|
270
295
|
return this.lineDict[deviceId].lineId;
|
|
@@ -108,11 +108,13 @@ export const REG_RANDOM_T_FACTOR_UPPER_LIMIT = 10000;
|
|
|
108
108
|
export const REG_TRY_BACKUP_TIMER_VAL_IN_SEC = 1200;
|
|
109
109
|
export const REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC = 114;
|
|
110
110
|
export const REG_FAILBACK_429_MAX_RETRIES = 5;
|
|
111
|
-
export const
|
|
111
|
+
export const RETRY_TIMER_UPPER_LIMIT = 60;
|
|
112
|
+
export const REGISTRATION_UTIL = 'triggerRegistration';
|
|
113
|
+
export const REGISTER_UTIL = 'attemptRegistrationWithServers';
|
|
112
114
|
export const GET_MOBIUS_SERVERS_UTIL = 'getMobiusServers';
|
|
113
115
|
export const KEEPALIVE_UTIL = 'startKeepaliveTimer';
|
|
114
116
|
export const FAILBACK_UTIL = 'executeFailback';
|
|
115
|
-
export const
|
|
117
|
+
export const REG_429_RETRY_UTIL = 'handle429Retry';
|
|
116
118
|
export const FAILOVER_UTIL = 'startFailoverTimer';
|
|
117
119
|
export const NETWORK_CHANGE_DETECTION_UTIL = 'detectNetworkChange';
|
|
118
120
|
export const CALLS_CLEARED_HANDLER_UTIL = 'callsClearedHandler';
|
|
@@ -123,3 +125,101 @@ export const MOBIUS_EU_PROD = 'mobius-eu-central-1.prod.infra.webex.com';
|
|
|
123
125
|
export const MOBIUS_US_INT = 'mobius-us-east-1.int.infra.webex.com';
|
|
124
126
|
export const MOBIUS_EU_INT = 'mobius-eu-central-1.int.infra.webex.com';
|
|
125
127
|
export const ICE_CANDIDATES_TIMEOUT = 3000;
|
|
128
|
+
export const METHODS = {
|
|
129
|
+
CONSTRUCTOR: 'constructor',
|
|
130
|
+
CREATE_CALL: 'createCall',
|
|
131
|
+
HANDLE_INCOMING_CALL_SETUP: 'handleIncomingCallSetup',
|
|
132
|
+
HANDLE_OUTGOING_CALL_SETUP: 'handleOutgoingCallSetup',
|
|
133
|
+
HANDLE_CALL_HOLD: 'handleCallHold',
|
|
134
|
+
HANDLE_CALL_RESUME: 'handleCallResume',
|
|
135
|
+
HANDLE_INCOMING_CALL_PROGRESS: 'handleIncomingCallProgress',
|
|
136
|
+
HANDLE_INCOMING_ROAP_OFFER_REQUEST: 'handleIncomingRoapOfferRequest',
|
|
137
|
+
HANDLE_OUTGOING_CALL_ALERTING: 'handleOutgoingCallAlerting',
|
|
138
|
+
HANDLE_INCOMING_CALL_CONNECT: 'handleIncomingCallConnect',
|
|
139
|
+
HANDLE_OUTGOING_CALL_CONNECT: 'handleOutgoingCallConnect',
|
|
140
|
+
HANDLE_INCOMING_CALL_DISCONNECT: 'handleIncomingCallDisconnect',
|
|
141
|
+
HANDLE_OUTGOING_CALL_DISCONNECT: 'handleOutgoingCallDisconnect',
|
|
142
|
+
HANDLE_CALL_ESTABLISHED: 'handleCallEstablished',
|
|
143
|
+
HANDLE_UNKNOWN_STATE: 'handleUnknownState',
|
|
144
|
+
HANDLE_TIMEOUT: 'handleTimeout',
|
|
145
|
+
GET_EMITTER_CALLBACK: 'getEmitterCallback',
|
|
146
|
+
HANDLE_ROAP_ESTABLISHED: 'handleRoapEstablished',
|
|
147
|
+
HANDLE_ROAP_ERROR: 'handleRoapError',
|
|
148
|
+
HANDLE_OUTGOING_ROAP_OFFER: 'handleOutgoingRoapOffer',
|
|
149
|
+
HANDLE_OUTGOING_ROAP_ANSWER: 'handleOutgoingRoapAnswer',
|
|
150
|
+
HANDLE_INCOMING_ROAP_OFFER: 'handleIncomingRoapOffer',
|
|
151
|
+
HANDLE_INCOMING_ROAP_ANSWER: 'handleIncomingRoapAnswer',
|
|
152
|
+
FORCE_SEND_STATS_REPORT: 'forceSendStatsReport',
|
|
153
|
+
UPDATE_ACTIVE_MOBIUS: 'updateActiveMobius',
|
|
154
|
+
DEQUEUE_WS_EVENTS: 'dequeueWsEvents',
|
|
155
|
+
GET_CALL: 'getCall',
|
|
156
|
+
GET_ACTIVE_CALLS: 'getActiveCalls',
|
|
157
|
+
UPDATE_LINE: 'updateLine',
|
|
158
|
+
GET_LINE_ID: 'getLineId',
|
|
159
|
+
INIT_MEDIA_CONNECTION: 'initMediaConnection',
|
|
160
|
+
GET_DIRECTION: 'getDirection',
|
|
161
|
+
GET_CALL_ID: 'getCallId',
|
|
162
|
+
GET_CORRELATION_ID: 'getCorrelationId',
|
|
163
|
+
SEND_CALL_STATE_MACHINE_EVT: 'sendCallStateMachineEvt',
|
|
164
|
+
SEND_MEDIA_STATE_MACHINE_EVT: 'sendMediaStateMachineEvt',
|
|
165
|
+
SET_CALL_ID: 'setCallId',
|
|
166
|
+
SET_DISCONNECT_REASON: 'setDisconnectReason',
|
|
167
|
+
GET_DISCONNECT_REASON: 'getDisconnectReason',
|
|
168
|
+
ANSWER: 'answer',
|
|
169
|
+
DIAL: 'dial',
|
|
170
|
+
POST: 'post',
|
|
171
|
+
PATCH: 'patch',
|
|
172
|
+
POST_SS_REQUEST: 'postSSRequest',
|
|
173
|
+
POST_STATUS: 'postStatus',
|
|
174
|
+
COMPLETE_TRANSFER: 'completeTransfer',
|
|
175
|
+
GET_CALL_STATS: 'getCallStats',
|
|
176
|
+
POST_MEDIA: 'postMedia',
|
|
177
|
+
MEDIA_ROAP_EVENTS_LISTENER: 'mediaRoapEventsListener',
|
|
178
|
+
MEDIA_TRACK_LISTENER: 'mediaTrackListener',
|
|
179
|
+
ON_EFFECT_ENABLED: 'onEffectEnabled',
|
|
180
|
+
ON_EFFECT_DISABLED: 'onEffectDisabled',
|
|
181
|
+
UPDATE_TRACK: 'updateTrack',
|
|
182
|
+
REGISTER_EFFECT_LISTENER: 'registerEffectListener',
|
|
183
|
+
UNREGISTER_LISTENERS: 'unregisterListeners',
|
|
184
|
+
REGISTER_LISTENERS: 'registerListeners',
|
|
185
|
+
DELETE: 'delete',
|
|
186
|
+
SUBMIT_CALL_ERROR_METRIC: 'submitCallErrorMetric',
|
|
187
|
+
HANDLE_MID_CALL_EVENT: 'handleMidCallEvent',
|
|
188
|
+
GET_CALLER_INFO: 'getCallerInfo',
|
|
189
|
+
END: 'end',
|
|
190
|
+
DO_HOLD_RESUME: 'doHoldResume',
|
|
191
|
+
START_CALLER_ID_RESOLUTION: 'startCallerIdResolution',
|
|
192
|
+
SEND_DIGIT: 'sendDigit',
|
|
193
|
+
MUTE: 'mute',
|
|
194
|
+
IS_MUTED: 'isMuted',
|
|
195
|
+
IS_CONNECTED: 'isConnected',
|
|
196
|
+
IS_HELD: 'isHeld',
|
|
197
|
+
UPDATE_MEDIA: 'updateMedia',
|
|
198
|
+
SET_BROADWORKS_CORRELATION_INFO: 'setBroadworksCorrelationInfo',
|
|
199
|
+
GET_BROADWORKS_CORRELATION_INFO: 'getBroadworksCorrelationInfo',
|
|
200
|
+
GET_CALL_RTP_STATS: 'getCallRtpStats',
|
|
201
|
+
REGISTER: 'register',
|
|
202
|
+
DEREGISTER: 'deregister',
|
|
203
|
+
NORMALIZE_LINE: 'normalizeLine',
|
|
204
|
+
LINE_EMITTER: 'lineEmitter',
|
|
205
|
+
GET_LOGGING_LEVEL: 'getLoggingLevel',
|
|
206
|
+
GET_ACTIVE_MOBIUS_URL: 'getActiveMobiusUrl',
|
|
207
|
+
GET_STATUS: 'getStatus',
|
|
208
|
+
GET_DEVICE_ID: 'getDeviceId',
|
|
209
|
+
MAKE_CALL: 'makeCall',
|
|
210
|
+
INCOMING_CALL_LISTENER: 'incomingCallListener',
|
|
211
|
+
SET_MOBIUS_SERVERS: 'setMobiusServers',
|
|
212
|
+
HANDLE_CONNECTION_RESTORATION: 'handleConnectionRestoration',
|
|
213
|
+
RECONNECT_ON_FAILURE: 'reconnectOnFailure',
|
|
214
|
+
DETECT_NETWORK_CHANGE: 'detectNetworkChange',
|
|
215
|
+
GET_CLIENT_REGION_INFO: 'getClientRegionInfo',
|
|
216
|
+
GET_MOBIUS_SERVERS: 'getMobiusServers',
|
|
217
|
+
REGISTER_CALLS_CLEARED_LISTENER: 'registerCallsClearedListener',
|
|
218
|
+
CALLS_CLEARED_HANDLER: 'callsClearedHandler',
|
|
219
|
+
REGISTER_SESSIONS_LISTENER: 'registerSessionsListener',
|
|
220
|
+
CREATE_LINE: 'createLine',
|
|
221
|
+
GET_LINES: 'getLines',
|
|
222
|
+
UPLOAD_LOGS: 'uploadLogs',
|
|
223
|
+
GET_SDK_CONNECTOR: 'getSDKConnector',
|
|
224
|
+
GET_CONNECTED_CALL: 'getConnectedCall',
|
|
225
|
+
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { v4 as uuid } from 'uuid';
|
|
2
|
+
import { METHOD_START_MESSAGE } from '../../common/constants';
|
|
2
3
|
import { CallDirection, RegistrationStatus, ServiceIndicator, } from '../../common/types';
|
|
3
4
|
import { LINE_EVENTS } from './types';
|
|
4
|
-
import { LINE_FILE, VALID_PHONE_REGEX } from '../constants';
|
|
5
|
+
import { LINE_FILE, METHODS, VALID_PHONE_REGEX } from '../constants';
|
|
5
6
|
import log from '../../Logger';
|
|
6
7
|
import { createRegistration } from '../registration';
|
|
7
8
|
import { Eventing } from '../../Events/impl';
|
|
@@ -59,6 +60,10 @@ export default class Line extends Eventing {
|
|
|
59
60
|
this.incomingCallListener();
|
|
60
61
|
}
|
|
61
62
|
async register() {
|
|
63
|
+
log.info(METHOD_START_MESSAGE, {
|
|
64
|
+
file: LINE_FILE,
|
|
65
|
+
method: METHODS.REGISTER,
|
|
66
|
+
});
|
|
62
67
|
await this.#mutex.runExclusive(async () => {
|
|
63
68
|
this.emit(LINE_EVENTS.CONNECTING);
|
|
64
69
|
this.registration.setMobiusServers(this.#primaryMobiusUris, this.#backupMobiusUris);
|
|
@@ -69,6 +74,10 @@ export default class Line extends Eventing {
|
|
|
69
74
|
}
|
|
70
75
|
}
|
|
71
76
|
async deregister() {
|
|
77
|
+
log.info(METHOD_START_MESSAGE, {
|
|
78
|
+
file: LINE_FILE,
|
|
79
|
+
method: METHODS.DEREGISTER,
|
|
80
|
+
});
|
|
72
81
|
await this.registration.deregister();
|
|
73
82
|
this.registration.setStatus(RegistrationStatus.IDLE);
|
|
74
83
|
}
|
|
@@ -86,6 +95,10 @@ export default class Line extends Eventing {
|
|
|
86
95
|
this.voicePortalExtension = voicePortalExtension;
|
|
87
96
|
}
|
|
88
97
|
lineEmitter = (event, deviceInfo, lineError) => {
|
|
98
|
+
log.info(METHOD_START_MESSAGE, {
|
|
99
|
+
file: LINE_FILE,
|
|
100
|
+
method: METHODS.LINE_EMITTER,
|
|
101
|
+
});
|
|
89
102
|
switch (event) {
|
|
90
103
|
case LINE_EVENTS.REGISTERED:
|
|
91
104
|
if (deviceInfo) {
|
|
@@ -116,6 +129,10 @@ export default class Line extends Eventing {
|
|
|
116
129
|
getStatus = () => this.registration.getStatus();
|
|
117
130
|
getDeviceId = () => this.registration.getDeviceInfo().device?.deviceId;
|
|
118
131
|
makeCall = (dest) => {
|
|
132
|
+
log.info(METHOD_START_MESSAGE, {
|
|
133
|
+
file: LINE_FILE,
|
|
134
|
+
method: METHODS.MAKE_CALL,
|
|
135
|
+
});
|
|
119
136
|
let call;
|
|
120
137
|
if (dest) {
|
|
121
138
|
const match = dest.address.match(VALID_PHONE_REGEX);
|
|
@@ -129,10 +146,16 @@ export default class Line extends Eventing {
|
|
|
129
146
|
address: `tel:${sanitizedNumber}`,
|
|
130
147
|
};
|
|
131
148
|
call = this.callManager.createCall(CallDirection.OUTBOUND, this.registration.getDeviceInfo().device?.deviceId, this.lineId, formattedDest);
|
|
132
|
-
log.log(`New call created, callId: ${call
|
|
149
|
+
log.log(`New call created, callId: ${call?.getCallId()}`, {
|
|
150
|
+
file: LINE_FILE,
|
|
151
|
+
method: METHODS.MAKE_CALL,
|
|
152
|
+
});
|
|
133
153
|
}
|
|
134
154
|
else {
|
|
135
|
-
log.warn('Invalid phone number detected', {
|
|
155
|
+
log.warn('Invalid phone number detected', {
|
|
156
|
+
file: LINE_FILE,
|
|
157
|
+
method: METHODS.MAKE_CALL,
|
|
158
|
+
});
|
|
136
159
|
const err = new LineError('An invalid phone number was detected. Check the number and try again.', {}, ERROR_TYPE.CALL_ERROR, RegistrationStatus.ACTIVE);
|
|
137
160
|
this.emit(LINE_EVENTS.ERROR, err);
|
|
138
161
|
}
|
|
@@ -140,17 +163,23 @@ export default class Line extends Eventing {
|
|
|
140
163
|
}
|
|
141
164
|
if (this.serviceData.indicator === ServiceIndicator.GUEST_CALLING) {
|
|
142
165
|
call = this.callManager.createCall(CallDirection.OUTBOUND, this.registration.getDeviceInfo().device?.deviceId, this.lineId);
|
|
143
|
-
log.
|
|
166
|
+
log.info(`New guest call created, callId: ${call.getCallId()}`, {
|
|
167
|
+
file: LINE_FILE,
|
|
168
|
+
method: METHODS.MAKE_CALL,
|
|
169
|
+
});
|
|
144
170
|
return call;
|
|
145
171
|
}
|
|
146
172
|
return undefined;
|
|
147
173
|
};
|
|
148
174
|
incomingCallListener() {
|
|
149
|
-
|
|
175
|
+
log.info(METHOD_START_MESSAGE, {
|
|
150
176
|
file: LINE_FILE,
|
|
151
|
-
method:
|
|
152
|
-
};
|
|
153
|
-
log.
|
|
177
|
+
method: METHODS.INCOMING_CALL_LISTENER,
|
|
178
|
+
});
|
|
179
|
+
log.info('Listening for incoming calls... ', {
|
|
180
|
+
file: LINE_FILE,
|
|
181
|
+
method: METHODS.INCOMING_CALL_LISTENER,
|
|
182
|
+
});
|
|
154
183
|
this.callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj) => {
|
|
155
184
|
this.emit(LINE_EVENTS.INCOMING_CALL, callObj);
|
|
156
185
|
});
|