@webex/calling 3.8.0-next.32 → 3.8.0-next.33

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.
Files changed (139) hide show
  1. package/dist/CallHistory/CallHistory.js +100 -63
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallHistory/CallHistory.test.js +115 -19
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -1
  5. package/dist/CallHistory/constants.js +9 -1
  6. package/dist/CallHistory/constants.js.map +1 -1
  7. package/dist/CallSettings/CallSettings.js +46 -13
  8. package/dist/CallSettings/CallSettings.js.map +1 -1
  9. package/dist/CallSettings/UcmBackendConnector.js +62 -18
  10. package/dist/CallSettings/UcmBackendConnector.js.map +1 -1
  11. package/dist/CallSettings/UcmBackendConnector.test.js +70 -7
  12. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -1
  13. package/dist/CallSettings/WxCallBackendConnector.js +153 -103
  14. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -1
  15. package/dist/CallSettings/WxCallBackendConnector.test.js +52 -15
  16. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -1
  17. package/dist/CallSettings/constants.js +15 -1
  18. package/dist/CallSettings/constants.js.map +1 -1
  19. package/dist/CallingClient/CallingClient.js +148 -107
  20. package/dist/CallingClient/CallingClient.js.map +1 -1
  21. package/dist/CallingClient/CallingClient.test.js +53 -24
  22. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  23. package/dist/CallingClient/calling/call.js +251 -189
  24. package/dist/CallingClient/calling/call.js.map +1 -1
  25. package/dist/CallingClient/calling/call.test.js +96 -41
  26. package/dist/CallingClient/calling/call.test.js.map +1 -1
  27. package/dist/CallingClient/calling/callManager.js +73 -48
  28. package/dist/CallingClient/calling/callManager.js.map +1 -1
  29. package/dist/CallingClient/calling/callManager.test.js +96 -37
  30. package/dist/CallingClient/calling/callManager.test.js.map +1 -1
  31. package/dist/CallingClient/constants.js +101 -1
  32. package/dist/CallingClient/constants.js.map +1 -1
  33. package/dist/CallingClient/line/index.js +47 -18
  34. package/dist/CallingClient/line/index.js.map +1 -1
  35. package/dist/CallingClient/registration/register.js +151 -115
  36. package/dist/CallingClient/registration/register.js.map +1 -1
  37. package/dist/CallingClient/registration/register.test.js +43 -21
  38. package/dist/CallingClient/registration/register.test.js.map +1 -1
  39. package/dist/Contacts/ContactsClient.js +156 -102
  40. package/dist/Contacts/ContactsClient.js.map +1 -1
  41. package/dist/Contacts/ContactsClient.test.js +197 -49
  42. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  43. package/dist/Contacts/constants.js +11 -1
  44. package/dist/Contacts/constants.js.map +1 -1
  45. package/dist/Events/impl/index.js +1 -1
  46. package/dist/Events/impl/index.js.map +1 -1
  47. package/dist/Metrics/index.js +93 -39
  48. package/dist/Metrics/index.js.map +1 -1
  49. package/dist/Metrics/types.js +4 -1
  50. package/dist/Metrics/types.js.map +1 -1
  51. package/dist/SDKConnector/types.js.map +1 -1
  52. package/dist/Voicemail/BroadworksBackendConnector.js +154 -91
  53. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -1
  54. package/dist/Voicemail/BroadworksBackendConnector.test.js +99 -19
  55. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -1
  56. package/dist/Voicemail/UcmBackendConnector.js +105 -54
  57. package/dist/Voicemail/UcmBackendConnector.js.map +1 -1
  58. package/dist/Voicemail/UcmBackendConnector.test.js +127 -17
  59. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -1
  60. package/dist/Voicemail/Voicemail.js +198 -79
  61. package/dist/Voicemail/Voicemail.js.map +1 -1
  62. package/dist/Voicemail/Voicemail.test.js +188 -23
  63. package/dist/Voicemail/Voicemail.test.js.map +1 -1
  64. package/dist/Voicemail/WxCallBackendConnector.js +123 -76
  65. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
  66. package/dist/Voicemail/WxCallBackendConnector.test.js +69 -6
  67. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -1
  68. package/dist/Voicemail/constants.js +25 -1
  69. package/dist/Voicemail/constants.js.map +1 -1
  70. package/dist/common/Utils.js +113 -64
  71. package/dist/common/Utils.js.map +1 -1
  72. package/dist/common/Utils.test.js +154 -21
  73. package/dist/common/Utils.test.js.map +1 -1
  74. package/dist/common/constants.js +2 -1
  75. package/dist/common/constants.js.map +1 -1
  76. package/dist/common/types.js.map +1 -1
  77. package/dist/module/CallHistory/CallHistory.js +32 -13
  78. package/dist/module/CallHistory/constants.js +6 -0
  79. package/dist/module/CallSettings/CallSettings.js +36 -3
  80. package/dist/module/CallSettings/UcmBackendConnector.js +50 -5
  81. package/dist/module/CallSettings/WxCallBackendConnector.js +54 -18
  82. package/dist/module/CallSettings/constants.js +12 -0
  83. package/dist/module/CallingClient/CallingClient.js +52 -14
  84. package/dist/module/CallingClient/calling/call.js +172 -121
  85. package/dist/module/CallingClient/calling/callManager.js +51 -26
  86. package/dist/module/CallingClient/constants.js +98 -0
  87. package/dist/module/CallingClient/line/index.js +37 -8
  88. package/dist/module/CallingClient/registration/register.js +37 -11
  89. package/dist/module/Contacts/ContactsClient.js +65 -21
  90. package/dist/module/Contacts/constants.js +10 -0
  91. package/dist/module/Events/impl/index.js +1 -1
  92. package/dist/module/Metrics/index.js +49 -1
  93. package/dist/module/Metrics/types.js +3 -0
  94. package/dist/module/Voicemail/BroadworksBackendConnector.js +66 -17
  95. package/dist/module/Voicemail/UcmBackendConnector.js +51 -11
  96. package/dist/module/Voicemail/Voicemail.js +109 -9
  97. package/dist/module/Voicemail/WxCallBackendConnector.js +50 -17
  98. package/dist/module/Voicemail/constants.js +21 -0
  99. package/dist/module/common/Utils.js +26 -4
  100. package/dist/module/common/constants.js +1 -0
  101. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  102. package/dist/types/CallHistory/constants.d.ts +6 -0
  103. package/dist/types/CallHistory/constants.d.ts.map +1 -1
  104. package/dist/types/CallSettings/CallSettings.d.ts.map +1 -1
  105. package/dist/types/CallSettings/UcmBackendConnector.d.ts.map +1 -1
  106. package/dist/types/CallSettings/WxCallBackendConnector.d.ts.map +1 -1
  107. package/dist/types/CallSettings/constants.d.ts +12 -0
  108. package/dist/types/CallSettings/constants.d.ts.map +1 -1
  109. package/dist/types/CallingClient/CallingClient.d.ts +2 -3
  110. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  111. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  112. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  113. package/dist/types/CallingClient/constants.d.ts +98 -0
  114. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  115. package/dist/types/CallingClient/line/index.d.ts.map +1 -1
  116. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  117. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  118. package/dist/types/Contacts/constants.d.ts +10 -0
  119. package/dist/types/Contacts/constants.d.ts.map +1 -1
  120. package/dist/types/Metrics/index.d.ts +1 -1
  121. package/dist/types/Metrics/index.d.ts.map +1 -1
  122. package/dist/types/Metrics/types.d.ts +5 -1
  123. package/dist/types/Metrics/types.d.ts.map +1 -1
  124. package/dist/types/SDKConnector/types.d.ts +8 -2
  125. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  126. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts.map +1 -1
  127. package/dist/types/Voicemail/UcmBackendConnector.d.ts.map +1 -1
  128. package/dist/types/Voicemail/Voicemail.d.ts +1 -1
  129. package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
  130. package/dist/types/Voicemail/WxCallBackendConnector.d.ts.map +1 -1
  131. package/dist/types/Voicemail/constants.d.ts +21 -0
  132. package/dist/types/Voicemail/constants.d.ts.map +1 -1
  133. package/dist/types/common/Utils.d.ts +2 -2
  134. package/dist/types/common/Utils.d.ts.map +1 -1
  135. package/dist/types/common/constants.d.ts +1 -0
  136. package/dist/types/common/constants.d.ts.map +1 -1
  137. package/dist/types/common/types.d.ts +12 -0
  138. package/dist/types/common/types.d.ts.map +1 -1
  139. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import { CALL_MANAGER_FILE } from '../constants';
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: 'dequeueWsEvents',
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.log(`Dropping midcall event of type: ${midCallEvent.eventType} as it doesn't match with any existing call`, {
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
105
+ method: METHODS.DEQUEUE_WS_EVENTS,
85
106
  });
86
107
  newCall.setCallId(callId);
87
108
  if (mobiusEvent.data.broadworksCorrelationInfo) {
88
- log.log(`Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`, {
109
+ log.info(`Found broadworksCorrelationInfo: ${mobiusEvent.data.broadworksCorrelationInfo}`, {
89
110
  file: CALL_MANAGER_FILE,
90
- method: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
240
+ method: METHODS.DEQUEUE_WS_EVENTS,
220
241
  });
221
242
  }
222
243
  }
223
244
  }
224
245
  else {
225
- log.log(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {
246
+ log.info(`CorrelationId: ${correlationId} doesn't exist , discarding..`, {
226
247
  file: CALL_MANAGER_FILE,
227
- method: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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: 'dequeueWsEvents',
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;
@@ -124,3 +124,101 @@ export const MOBIUS_EU_PROD = 'mobius-eu-central-1.prod.infra.webex.com';
124
124
  export const MOBIUS_US_INT = 'mobius-us-east-1.int.infra.webex.com';
125
125
  export const MOBIUS_EU_INT = 'mobius-eu-central-1.int.infra.webex.com';
126
126
  export const ICE_CANDIDATES_TIMEOUT = 3000;
127
+ export const METHODS = {
128
+ CONSTRUCTOR: 'constructor',
129
+ CREATE_CALL: 'createCall',
130
+ HANDLE_INCOMING_CALL_SETUP: 'handleIncomingCallSetup',
131
+ HANDLE_OUTGOING_CALL_SETUP: 'handleOutgoingCallSetup',
132
+ HANDLE_CALL_HOLD: 'handleCallHold',
133
+ HANDLE_CALL_RESUME: 'handleCallResume',
134
+ HANDLE_INCOMING_CALL_PROGRESS: 'handleIncomingCallProgress',
135
+ HANDLE_INCOMING_ROAP_OFFER_REQUEST: 'handleIncomingRoapOfferRequest',
136
+ HANDLE_OUTGOING_CALL_ALERTING: 'handleOutgoingCallAlerting',
137
+ HANDLE_INCOMING_CALL_CONNECT: 'handleIncomingCallConnect',
138
+ HANDLE_OUTGOING_CALL_CONNECT: 'handleOutgoingCallConnect',
139
+ HANDLE_INCOMING_CALL_DISCONNECT: 'handleIncomingCallDisconnect',
140
+ HANDLE_OUTGOING_CALL_DISCONNECT: 'handleOutgoingCallDisconnect',
141
+ HANDLE_CALL_ESTABLISHED: 'handleCallEstablished',
142
+ HANDLE_UNKNOWN_STATE: 'handleUnknownState',
143
+ HANDLE_TIMEOUT: 'handleTimeout',
144
+ GET_EMITTER_CALLBACK: 'getEmitterCallback',
145
+ HANDLE_ROAP_ESTABLISHED: 'handleRoapEstablished',
146
+ HANDLE_ROAP_ERROR: 'handleRoapError',
147
+ HANDLE_OUTGOING_ROAP_OFFER: 'handleOutgoingRoapOffer',
148
+ HANDLE_OUTGOING_ROAP_ANSWER: 'handleOutgoingRoapAnswer',
149
+ HANDLE_INCOMING_ROAP_OFFER: 'handleIncomingRoapOffer',
150
+ HANDLE_INCOMING_ROAP_ANSWER: 'handleIncomingRoapAnswer',
151
+ FORCE_SEND_STATS_REPORT: 'forceSendStatsReport',
152
+ UPDATE_ACTIVE_MOBIUS: 'updateActiveMobius',
153
+ DEQUEUE_WS_EVENTS: 'dequeueWsEvents',
154
+ GET_CALL: 'getCall',
155
+ GET_ACTIVE_CALLS: 'getActiveCalls',
156
+ UPDATE_LINE: 'updateLine',
157
+ GET_LINE_ID: 'getLineId',
158
+ INIT_MEDIA_CONNECTION: 'initMediaConnection',
159
+ GET_DIRECTION: 'getDirection',
160
+ GET_CALL_ID: 'getCallId',
161
+ GET_CORRELATION_ID: 'getCorrelationId',
162
+ SEND_CALL_STATE_MACHINE_EVT: 'sendCallStateMachineEvt',
163
+ SEND_MEDIA_STATE_MACHINE_EVT: 'sendMediaStateMachineEvt',
164
+ SET_CALL_ID: 'setCallId',
165
+ SET_DISCONNECT_REASON: 'setDisconnectReason',
166
+ GET_DISCONNECT_REASON: 'getDisconnectReason',
167
+ ANSWER: 'answer',
168
+ DIAL: 'dial',
169
+ POST: 'post',
170
+ PATCH: 'patch',
171
+ POST_SS_REQUEST: 'postSSRequest',
172
+ POST_STATUS: 'postStatus',
173
+ COMPLETE_TRANSFER: 'completeTransfer',
174
+ GET_CALL_STATS: 'getCallStats',
175
+ POST_MEDIA: 'postMedia',
176
+ MEDIA_ROAP_EVENTS_LISTENER: 'mediaRoapEventsListener',
177
+ MEDIA_TRACK_LISTENER: 'mediaTrackListener',
178
+ ON_EFFECT_ENABLED: 'onEffectEnabled',
179
+ ON_EFFECT_DISABLED: 'onEffectDisabled',
180
+ UPDATE_TRACK: 'updateTrack',
181
+ REGISTER_EFFECT_LISTENER: 'registerEffectListener',
182
+ UNREGISTER_LISTENERS: 'unregisterListeners',
183
+ REGISTER_LISTENERS: 'registerListeners',
184
+ DELETE: 'delete',
185
+ SUBMIT_CALL_ERROR_METRIC: 'submitCallErrorMetric',
186
+ HANDLE_MID_CALL_EVENT: 'handleMidCallEvent',
187
+ GET_CALLER_INFO: 'getCallerInfo',
188
+ END: 'end',
189
+ DO_HOLD_RESUME: 'doHoldResume',
190
+ START_CALLER_ID_RESOLUTION: 'startCallerIdResolution',
191
+ SEND_DIGIT: 'sendDigit',
192
+ MUTE: 'mute',
193
+ IS_MUTED: 'isMuted',
194
+ IS_CONNECTED: 'isConnected',
195
+ IS_HELD: 'isHeld',
196
+ UPDATE_MEDIA: 'updateMedia',
197
+ SET_BROADWORKS_CORRELATION_INFO: 'setBroadworksCorrelationInfo',
198
+ GET_BROADWORKS_CORRELATION_INFO: 'getBroadworksCorrelationInfo',
199
+ GET_CALL_RTP_STATS: 'getCallRtpStats',
200
+ REGISTER: 'register',
201
+ DEREGISTER: 'deregister',
202
+ NORMALIZE_LINE: 'normalizeLine',
203
+ LINE_EMITTER: 'lineEmitter',
204
+ GET_LOGGING_LEVEL: 'getLoggingLevel',
205
+ GET_ACTIVE_MOBIUS_URL: 'getActiveMobiusUrl',
206
+ GET_STATUS: 'getStatus',
207
+ GET_DEVICE_ID: 'getDeviceId',
208
+ MAKE_CALL: 'makeCall',
209
+ INCOMING_CALL_LISTENER: 'incomingCallListener',
210
+ SET_MOBIUS_SERVERS: 'setMobiusServers',
211
+ HANDLE_CONNECTION_RESTORATION: 'handleConnectionRestoration',
212
+ RECONNECT_ON_FAILURE: 'reconnectOnFailure',
213
+ DETECT_NETWORK_CHANGE: 'detectNetworkChange',
214
+ GET_CLIENT_REGION_INFO: 'getClientRegionInfo',
215
+ GET_MOBIUS_SERVERS: 'getMobiusServers',
216
+ REGISTER_CALLS_CLEARED_LISTENER: 'registerCallsClearedListener',
217
+ CALLS_CLEARED_HANDLER: 'callsClearedHandler',
218
+ REGISTER_SESSIONS_LISTENER: 'registerSessionsListener',
219
+ CREATE_LINE: 'createLine',
220
+ GET_LINES: 'getLines',
221
+ UPLOAD_LOGS: 'uploadLogs',
222
+ GET_SDK_CONNECTOR: 'getSDKConnector',
223
+ GET_CONNECTED_CALL: 'getConnectedCall',
224
+ };
@@ -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.getCallId()}`, {});
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.log(`New guest call created, callId: ${call.getCallId()}`, {});
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
- const logContext = {
175
+ log.info(METHOD_START_MESSAGE, {
150
176
  file: LINE_FILE,
151
- method: this.incomingCallListener.name,
152
- };
153
- log.log('Listening for incoming calls... ', logContext);
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
  });
@@ -1,12 +1,13 @@
1
1
  import { v4 as uuid } from 'uuid';
2
- import { emitFinalFailure, handleRegistrationErrors } from '../../common';
2
+ import { METHOD_START_MESSAGE } from '../../common/constants';
3
+ import { emitFinalFailure, handleRegistrationErrors, uploadLogs } from '../../common';
3
4
  import { METRIC_EVENT, METRIC_TYPE, REG_ACTION } from '../../Metrics/types';
4
5
  import { getMetricManager } from '../../Metrics';
5
6
  import { getCallManager } from '../calling';
6
7
  import log from '../../Logger';
7
8
  import SDKConnector from '../../SDKConnector';
8
9
  import { ALLOWED_SERVICES, HTTP_METHODS, RegistrationStatus, ServiceIndicator, } from '../../common/types';
9
- import { CALLING_USER_AGENT, CISCO_DEVICE_URL, DEVICES_ENDPOINT_RESOURCE, SPARK_USER_AGENT, WEBEX_WEB_CLIENT, BASE_REG_RETRY_TIMER_VAL_IN_SEC, BASE_REG_TIMER_MFACTOR, SEC_TO_MSEC_MFACTOR, REG_RANDOM_T_FACTOR_UPPER_LIMIT, REG_TRY_BACKUP_TIMER_VAL_IN_SEC, MINUTES_TO_SEC_MFACTOR, REG_429_RETRY_UTIL, REG_FAILBACK_429_MAX_RETRIES, FAILBACK_UTIL, REGISTRATION_FILE, DEFAULT_REHOMING_INTERVAL_MIN, DEFAULT_REHOMING_INTERVAL_MAX, DEFAULT_KEEPALIVE_INTERVAL, REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC, FAILOVER_UTIL, REGISTER_UTIL, RETRY_TIMER_UPPER_LIMIT, } from '../constants';
10
+ import { CALLING_USER_AGENT, CISCO_DEVICE_URL, DEVICES_ENDPOINT_RESOURCE, SPARK_USER_AGENT, WEBEX_WEB_CLIENT, BASE_REG_RETRY_TIMER_VAL_IN_SEC, BASE_REG_TIMER_MFACTOR, SEC_TO_MSEC_MFACTOR, REG_RANDOM_T_FACTOR_UPPER_LIMIT, REG_TRY_BACKUP_TIMER_VAL_IN_SEC, MINUTES_TO_SEC_MFACTOR, REG_429_RETRY_UTIL, REG_FAILBACK_429_MAX_RETRIES, FAILBACK_UTIL, REGISTRATION_FILE, DEFAULT_REHOMING_INTERVAL_MIN, DEFAULT_REHOMING_INTERVAL_MAX, DEFAULT_KEEPALIVE_INTERVAL, REG_TRY_BACKUP_TIMER_VAL_FOR_CC_IN_SEC, FAILOVER_UTIL, REGISTER_UTIL, RETRY_TIMER_UPPER_LIMIT, METHODS, } from '../constants';
10
11
  import { LINE_EVENTS } from '../line/types';
11
12
  export class Registration {
12
13
  sdkConnector;
@@ -60,11 +61,15 @@ export class Registration {
60
61
  return this.activeMobiusUrl;
61
62
  }
62
63
  setActiveMobiusUrl(url) {
63
- log.info(`ActiveMobiusUrl: ${url}`, { method: 'setActiveMobiusUrl', file: REGISTRATION_FILE });
64
+ log.info(`${METHOD_START_MESSAGE} with ${url}`, {
65
+ method: METHODS.UPDATE_ACTIVE_MOBIUS,
66
+ file: REGISTRATION_FILE,
67
+ });
64
68
  this.activeMobiusUrl = url;
65
69
  this.callManager.updateActiveMobius(url);
66
70
  }
67
71
  setMobiusServers(primaryMobiusUris, backupMobiusUris) {
72
+ log.log(METHOD_START_MESSAGE, { method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE });
68
73
  this.primaryMobiusUris = primaryMobiusUris;
69
74
  this.backupMobiusUris = backupMobiusUris;
70
75
  }
@@ -93,7 +98,10 @@ export class Registration {
93
98
  });
94
99
  }
95
100
  catch (error) {
96
- log.warn(`Delete failed with Mobius`, {});
101
+ log.warn(`Delete failed with Mobius ${error}`, {
102
+ file: REGISTRATION_FILE,
103
+ method: METHODS.DEREGISTER,
104
+ });
97
105
  }
98
106
  this.setStatus(RegistrationStatus.INACTIVE);
99
107
  this.lineEmitter(LINE_EVENTS.UNREGISTERED);
@@ -187,7 +195,7 @@ export class Registration {
187
195
  log.log(`Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`, loggerContext);
188
196
  }
189
197
  else if (this.backupMobiusUris.length) {
190
- log.log('Failing over to backup servers.', loggerContext);
198
+ log.info('Failing over to backup servers.', loggerContext);
191
199
  this.failoverImmediately = false;
192
200
  abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);
193
201
  if (!abort && !this.isDeviceRegistered()) {
@@ -199,6 +207,7 @@ export class Registration {
199
207
  await this.mutex.runExclusive(async () => {
200
208
  abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);
201
209
  if (!abort && !this.isDeviceRegistered()) {
210
+ await uploadLogs();
202
211
  emitFinalFailure((clientError) => {
203
212
  this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);
204
213
  }, loggerContext);
@@ -209,6 +218,7 @@ export class Registration {
209
218
  }
210
219
  }
211
220
  else {
221
+ await uploadLogs();
212
222
  emitFinalFailure((clientError) => {
213
223
  this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);
214
224
  }, loggerContext);
@@ -315,9 +325,13 @@ export class Registration {
315
325
  }
316
326
  }
317
327
  async handleConnectionRestoration(retry) {
328
+ log.info(METHOD_START_MESSAGE, {
329
+ method: METHODS.HANDLE_CONNECTION_RESTORATION,
330
+ file: REGISTRATION_FILE,
331
+ });
318
332
  await this.mutex.runExclusive(async () => {
319
333
  if (retry) {
320
- log.info('Mercury connection is up again, re-registering with Webex Calling if needed', {
334
+ log.log('Mercury connection is up again, re-registering with Webex Calling if needed', {
321
335
  file: REGISTRATION_FILE,
322
336
  method: this.handleConnectionRestoration.name,
323
337
  });
@@ -375,7 +389,7 @@ export class Registration {
375
389
  return abort;
376
390
  }
377
391
  if (this.isDeviceRegistered()) {
378
- log.log(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {
392
+ log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {
379
393
  file: REGISTRATION_FILE,
380
394
  method: REGISTER_UTIL,
381
395
  });
@@ -386,7 +400,7 @@ export class Registration {
386
400
  abort = false;
387
401
  this.registrationStatus = RegistrationStatus.INACTIVE;
388
402
  this.lineEmitter(LINE_EVENTS.CONNECTING);
389
- log.log(`[${caller}] : Mobius url to contact: ${url}`, {
403
+ log.info(`[${caller}] : Mobius url to contact: ${url}`, {
390
404
  file: REGISTRATION_FILE,
391
405
  method: REGISTER_UTIL,
392
406
  });
@@ -394,6 +408,10 @@ export class Registration {
394
408
  this.deviceInfo = resp.body;
395
409
  this.registrationStatus = RegistrationStatus.ACTIVE;
396
410
  this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body);
411
+ log.log(`Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId}`, {
412
+ file: REGISTRATION_FILE,
413
+ method: METHODS.REGISTER,
414
+ });
397
415
  this.setActiveMobiusUrl(url);
398
416
  this.setIntervalValues(this.deviceInfo);
399
417
  this.metricManager.setDeviceInfo(this.deviceInfo);
@@ -441,7 +459,7 @@ export class Registration {
441
459
  if (this.isDeviceRegistered() && keepAliveRetryCount < RETRY_COUNT_THRESHOLD) {
442
460
  try {
443
461
  const res = await this.postKeepAlive(url);
444
- log.info(`Sent Keepalive, status: ${res.statusCode}`, logContext);
462
+ log.log(`Sent Keepalive, status: ${res.statusCode}`, logContext);
445
463
  if (keepAliveRetryCount > 0) {
446
464
  this.lineEmitter(LINE_EVENTS.RECONNECTED);
447
465
  }
@@ -487,9 +505,16 @@ export class Registration {
487
505
  async deregister() {
488
506
  try {
489
507
  await this.deleteRegistration(this.activeMobiusUrl, this.deviceInfo.device?.deviceId, this.deviceInfo.device?.clientDeviceUri);
508
+ log.log('Registration successfully deregistered', {
509
+ file: REGISTRATION_FILE,
510
+ method: METHODS.DEREGISTER,
511
+ });
490
512
  }
491
513
  catch (err) {
492
- log.warn(`Delete failed with Mobius`, {});
514
+ log.warn(`Delete failed with Mobius: ${err}`, {
515
+ file: REGISTRATION_FILE,
516
+ method: METHODS.DEREGISTER,
517
+ });
493
518
  }
494
519
  this.clearKeepaliveTimer();
495
520
  this.setStatus(RegistrationStatus.INACTIVE);
@@ -518,6 +543,7 @@ export class Registration {
518
543
  return false;
519
544
  }
520
545
  async reconnectOnFailure(caller) {
546
+ log.info(METHOD_START_MESSAGE, { method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE });
521
547
  this.reconnectPending = false;
522
548
  if (!this.isDeviceRegistered()) {
523
549
  if (Object.keys(this.callManager.getActiveCalls()).length === 0) {
@@ -530,7 +556,7 @@ export class Registration {
530
556
  this.reconnectPending = true;
531
557
  log.info('Active call(s) present, deferred reconnect till call cleanup.', {
532
558
  file: REGISTRATION_FILE,
533
- method: this.reconnectOnFailure.name,
559
+ method: METHODS.RECONNECT_ON_FAILURE,
534
560
  });
535
561
  }
536
562
  }