@webex/calling 3.0.0-next.2 → 3.0.0-next.4

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 (283) hide show
  1. package/CHANGELOG.md +1403 -0
  2. package/README.md +74 -74
  3. package/dist/module/CallHistory/CallHistory.js +81 -81
  4. package/dist/module/CallHistory/callHistoryFixtures.js +307 -307
  5. package/dist/module/CallHistory/constants.js +9 -9
  6. package/dist/module/CallHistory/types.js +1 -1
  7. package/dist/module/CallSettings/CallSettings.js +65 -65
  8. package/dist/module/CallSettings/UcmBackendConnector.js +100 -100
  9. package/dist/module/CallSettings/WxCallBackendConnector.js +287 -287
  10. package/dist/module/CallSettings/constants.js +11 -11
  11. package/dist/module/CallSettings/testFixtures.js +62 -62
  12. package/dist/module/CallSettings/types.js +1 -1
  13. package/dist/module/CallingClient/CallingClient.js +248 -248
  14. package/dist/module/CallingClient/callRecordFixtures.js +93 -93
  15. package/dist/module/CallingClient/calling/CallerId/index.js +169 -169
  16. package/dist/module/CallingClient/calling/CallerId/types.js +1 -1
  17. package/dist/module/CallingClient/calling/call.js +1658 -1658
  18. package/dist/module/CallingClient/calling/callManager.js +284 -284
  19. package/dist/module/CallingClient/calling/index.js +2 -2
  20. package/dist/module/CallingClient/calling/types.js +53 -53
  21. package/dist/module/CallingClient/callingClientFixtures.js +38 -38
  22. package/dist/module/CallingClient/constants.js +122 -122
  23. package/dist/module/CallingClient/line/index.js +158 -158
  24. package/dist/module/CallingClient/line/types.js +15 -15
  25. package/dist/module/CallingClient/registration/index.js +1 -1
  26. package/dist/module/CallingClient/registration/register.js +507 -507
  27. package/dist/module/CallingClient/registration/registerFixtures.js +28 -28
  28. package/dist/module/CallingClient/registration/types.js +1 -1
  29. package/dist/module/CallingClient/types.js +1 -1
  30. package/dist/module/Contacts/ContactsClient.js +484 -484
  31. package/dist/module/Contacts/constants.js +20 -20
  32. package/dist/module/Contacts/contactFixtures.js +284 -284
  33. package/dist/module/Contacts/types.js +10 -10
  34. package/dist/module/Errors/catalog/CallError.js +26 -26
  35. package/dist/module/Errors/catalog/CallingDeviceError.js +18 -18
  36. package/dist/module/Errors/catalog/ExtendedError.js +10 -10
  37. package/dist/module/Errors/catalog/LineError.js +24 -24
  38. package/dist/module/Errors/index.js +2 -2
  39. package/dist/module/Errors/types.js +48 -48
  40. package/dist/module/Events/impl/index.js +19 -19
  41. package/dist/module/Events/types.js +83 -83
  42. package/dist/module/Logger/index.js +114 -114
  43. package/dist/module/Logger/types.js +25 -25
  44. package/dist/module/Metrics/index.js +232 -232
  45. package/dist/module/Metrics/types.js +37 -37
  46. package/dist/module/SDKConnector/index.js +39 -39
  47. package/dist/module/SDKConnector/types.js +1 -1
  48. package/dist/module/SDKConnector/utils.js +12 -12
  49. package/dist/module/Voicemail/BroadworksBackendConnector.js +291 -291
  50. package/dist/module/Voicemail/UcmBackendConnector.js +279 -279
  51. package/dist/module/Voicemail/Voicemail.js +110 -110
  52. package/dist/module/Voicemail/WxCallBackendConnector.js +279 -279
  53. package/dist/module/Voicemail/constants.js +29 -29
  54. package/dist/module/Voicemail/types.js +1 -1
  55. package/dist/module/Voicemail/voicemailFixture.js +510 -510
  56. package/dist/module/api.js +6 -6
  57. package/dist/module/common/Utils.js +802 -802
  58. package/dist/module/common/constants.js +41 -41
  59. package/dist/module/common/index.js +1 -1
  60. package/dist/module/common/testUtil.js +938 -938
  61. package/dist/module/common/types.js +57 -57
  62. package/dist/module/index.js +8 -8
  63. package/dist/types/CallHistory/CallHistory.d.ts +17 -17
  64. package/dist/types/CallHistory/callHistoryFixtures.d.ts +94 -94
  65. package/dist/types/CallHistory/constants.d.ts +9 -9
  66. package/dist/types/CallHistory/types.d.ts +18 -18
  67. package/dist/types/CallSettings/CallSettings.d.ts +19 -19
  68. package/dist/types/CallSettings/UcmBackendConnector.d.ts +19 -19
  69. package/dist/types/CallSettings/WxCallBackendConnector.d.ts +21 -21
  70. package/dist/types/CallSettings/constants.d.ts +11 -11
  71. package/dist/types/CallSettings/testFixtures.d.ts +15 -15
  72. package/dist/types/CallSettings/types.d.ts +107 -107
  73. package/dist/types/CallingClient/CallingClient.d.ts +35 -35
  74. package/dist/types/CallingClient/callRecordFixtures.d.ts +3 -3
  75. package/dist/types/CallingClient/calling/CallerId/index.d.ts +17 -17
  76. package/dist/types/CallingClient/calling/CallerId/types.d.ts +41 -41
  77. package/dist/types/CallingClient/calling/call.d.ts +96 -96
  78. package/dist/types/CallingClient/calling/callManager.d.ts +25 -25
  79. package/dist/types/CallingClient/calling/index.d.ts +2 -2
  80. package/dist/types/CallingClient/calling/types.d.ts +206 -206
  81. package/dist/types/CallingClient/callingClientFixtures.d.ts +18 -18
  82. package/dist/types/CallingClient/constants.d.ts +122 -122
  83. package/dist/types/CallingClient/line/index.d.ts +43 -43
  84. package/dist/types/CallingClient/line/types.d.ts +55 -55
  85. package/dist/types/CallingClient/registration/index.d.ts +1 -1
  86. package/dist/types/CallingClient/registration/register.d.ts +64 -64
  87. package/dist/types/CallingClient/registration/registerFixtures.d.ts +28 -28
  88. package/dist/types/CallingClient/registration/types.d.ts +20 -20
  89. package/dist/types/CallingClient/types.d.ts +29 -29
  90. package/dist/types/Contacts/ContactsClient.d.ts +26 -26
  91. package/dist/types/Contacts/constants.d.ts +19 -19
  92. package/dist/types/Contacts/contactFixtures.d.ts +280 -280
  93. package/dist/types/Contacts/types.d.ts +72 -72
  94. package/dist/types/Errors/catalog/CallError.d.ts +11 -11
  95. package/dist/types/Errors/catalog/CallingDeviceError.d.ts +10 -10
  96. package/dist/types/Errors/catalog/ExtendedError.d.ts +6 -6
  97. package/dist/types/Errors/catalog/LineError.d.ts +10 -10
  98. package/dist/types/Errors/index.d.ts +2 -2
  99. package/dist/types/Errors/types.d.ts +60 -60
  100. package/dist/types/Events/impl/index.d.ts +8 -8
  101. package/dist/types/Events/types.d.ts +288 -288
  102. package/dist/types/Logger/index.d.ts +12 -12
  103. package/dist/types/Logger/types.d.ts +25 -25
  104. package/dist/types/Metrics/index.d.ts +5 -5
  105. package/dist/types/Metrics/types.d.ts +42 -42
  106. package/dist/types/SDKConnector/index.d.ts +12 -12
  107. package/dist/types/SDKConnector/types.d.ts +128 -128
  108. package/dist/types/SDKConnector/utils.d.ts +5 -5
  109. package/dist/types/Voicemail/BroadworksBackendConnector.d.ts +27 -27
  110. package/dist/types/Voicemail/UcmBackendConnector.d.ts +34 -34
  111. package/dist/types/Voicemail/Voicemail.d.ts +27 -27
  112. package/dist/types/Voicemail/WxCallBackendConnector.d.ts +23 -23
  113. package/dist/types/Voicemail/constants.d.ts +29 -29
  114. package/dist/types/Voicemail/types.d.ts +133 -133
  115. package/dist/types/Voicemail/voicemailFixture.d.ts +417 -417
  116. package/dist/types/api.d.ts +16 -16
  117. package/dist/types/common/Utils.d.ts +34 -34
  118. package/dist/types/common/constants.d.ts +41 -41
  119. package/dist/types/common/index.d.ts +1 -1
  120. package/dist/types/common/testUtil.d.ts +3611 -3611
  121. package/dist/types/common/types.d.ts +191 -191
  122. package/dist/types/index.d.ts +8 -8
  123. package/package.json +4 -4
  124. package/dist/CallHistory/CallHistory.js +0 -203
  125. package/dist/CallHistory/CallHistory.js.map +0 -1
  126. package/dist/CallHistory/CallHistory.test.js +0 -133
  127. package/dist/CallHistory/CallHistory.test.js.map +0 -1
  128. package/dist/CallHistory/callHistoryFixtures.js +0 -310
  129. package/dist/CallHistory/callHistoryFixtures.js.map +0 -1
  130. package/dist/CallHistory/constants.js +0 -26
  131. package/dist/CallHistory/constants.js.map +0 -1
  132. package/dist/CallHistory/types.js +0 -7
  133. package/dist/CallHistory/types.js.map +0 -1
  134. package/dist/CallSettings/CallSettings.js +0 -276
  135. package/dist/CallSettings/CallSettings.js.map +0 -1
  136. package/dist/CallSettings/CallSettings.test.js +0 -122
  137. package/dist/CallSettings/CallSettings.test.js.map +0 -1
  138. package/dist/CallSettings/UcmBackendConnector.js +0 -217
  139. package/dist/CallSettings/UcmBackendConnector.js.map +0 -1
  140. package/dist/CallSettings/UcmBackendConnector.test.js +0 -227
  141. package/dist/CallSettings/UcmBackendConnector.test.js.map +0 -1
  142. package/dist/CallSettings/WxCallBackendConnector.js +0 -541
  143. package/dist/CallSettings/WxCallBackendConnector.js.map +0 -1
  144. package/dist/CallSettings/WxCallBackendConnector.test.js +0 -802
  145. package/dist/CallSettings/WxCallBackendConnector.test.js.map +0 -1
  146. package/dist/CallSettings/constants.js +0 -30
  147. package/dist/CallSettings/constants.js.map +0 -1
  148. package/dist/CallSettings/testFixtures.js +0 -72
  149. package/dist/CallSettings/testFixtures.js.map +0 -1
  150. package/dist/CallSettings/types.js +0 -7
  151. package/dist/CallSettings/types.js.map +0 -1
  152. package/dist/CallingClient/CallingClient.js +0 -572
  153. package/dist/CallingClient/CallingClient.js.map +0 -1
  154. package/dist/CallingClient/CallingClient.test.js +0 -931
  155. package/dist/CallingClient/CallingClient.test.js.map +0 -1
  156. package/dist/CallingClient/callRecordFixtures.js +0 -103
  157. package/dist/CallingClient/callRecordFixtures.js.map +0 -1
  158. package/dist/CallingClient/calling/CallerId/index.js +0 -287
  159. package/dist/CallingClient/calling/CallerId/index.js.map +0 -1
  160. package/dist/CallingClient/calling/CallerId/index.test.js +0 -274
  161. package/dist/CallingClient/calling/CallerId/index.test.js.map +0 -1
  162. package/dist/CallingClient/calling/CallerId/types.js +0 -7
  163. package/dist/CallingClient/calling/CallerId/types.js.map +0 -1
  164. package/dist/CallingClient/calling/call.js +0 -2995
  165. package/dist/CallingClient/calling/call.js.map +0 -1
  166. package/dist/CallingClient/calling/call.test.js +0 -2614
  167. package/dist/CallingClient/calling/call.test.js.map +0 -1
  168. package/dist/CallingClient/calling/callManager.js +0 -443
  169. package/dist/CallingClient/calling/callManager.js.map +0 -1
  170. package/dist/CallingClient/calling/callManager.test.js +0 -683
  171. package/dist/CallingClient/calling/callManager.test.js.map +0 -1
  172. package/dist/CallingClient/calling/index.js +0 -30
  173. package/dist/CallingClient/calling/index.js.map +0 -1
  174. package/dist/CallingClient/calling/types.js +0 -71
  175. package/dist/CallingClient/calling/types.js.map +0 -1
  176. package/dist/CallingClient/callingClientFixtures.js +0 -53
  177. package/dist/CallingClient/callingClientFixtures.js.map +0 -1
  178. package/dist/CallingClient/constants.js +0 -226
  179. package/dist/CallingClient/constants.js.map +0 -1
  180. package/dist/CallingClient/line/index.js +0 -312
  181. package/dist/CallingClient/line/index.js.map +0 -1
  182. package/dist/CallingClient/line/line.test.js +0 -270
  183. package/dist/CallingClient/line/line.test.js.map +0 -1
  184. package/dist/CallingClient/line/types.js +0 -25
  185. package/dist/CallingClient/line/types.js.map +0 -1
  186. package/dist/CallingClient/registration/index.js +0 -19
  187. package/dist/CallingClient/registration/index.js.map +0 -1
  188. package/dist/CallingClient/registration/register.js +0 -1295
  189. package/dist/CallingClient/registration/register.js.map +0 -1
  190. package/dist/CallingClient/registration/register.test.js +0 -838
  191. package/dist/CallingClient/registration/register.test.js.map +0 -1
  192. package/dist/CallingClient/registration/registerFixtures.js +0 -41
  193. package/dist/CallingClient/registration/registerFixtures.js.map +0 -1
  194. package/dist/CallingClient/registration/types.js +0 -7
  195. package/dist/CallingClient/registration/types.js.map +0 -1
  196. package/dist/CallingClient/types.js +0 -7
  197. package/dist/CallingClient/types.js.map +0 -1
  198. package/dist/Contacts/ContactsClient.js +0 -1139
  199. package/dist/Contacts/ContactsClient.js.map +0 -1
  200. package/dist/Contacts/ContactsClient.test.js +0 -725
  201. package/dist/Contacts/ContactsClient.test.js.map +0 -1
  202. package/dist/Contacts/constants.js +0 -36
  203. package/dist/Contacts/constants.js.map +0 -1
  204. package/dist/Contacts/contactFixtures.js +0 -340
  205. package/dist/Contacts/contactFixtures.js.map +0 -1
  206. package/dist/Contacts/types.js +0 -20
  207. package/dist/Contacts/types.js.map +0 -1
  208. package/dist/Errors/catalog/CallError.js +0 -94
  209. package/dist/Errors/catalog/CallError.js.map +0 -1
  210. package/dist/Errors/catalog/CallingDeviceError.js +0 -88
  211. package/dist/Errors/catalog/CallingDeviceError.js.map +0 -1
  212. package/dist/Errors/catalog/ExtendedError.js +0 -45
  213. package/dist/Errors/catalog/ExtendedError.js.map +0 -1
  214. package/dist/Errors/catalog/LineError.js +0 -90
  215. package/dist/Errors/catalog/LineError.js.map +0 -1
  216. package/dist/Errors/index.js +0 -21
  217. package/dist/Errors/index.js.map +0 -1
  218. package/dist/Errors/types.js +0 -62
  219. package/dist/Errors/types.js.map +0 -1
  220. package/dist/Events/impl/index.js +0 -82
  221. package/dist/Events/impl/index.js.map +0 -1
  222. package/dist/Events/types.js +0 -111
  223. package/dist/Events/types.js.map +0 -1
  224. package/dist/Logger/index.js +0 -221
  225. package/dist/Logger/index.js.map +0 -1
  226. package/dist/Logger/index.test.js +0 -62
  227. package/dist/Logger/index.test.js.map +0 -1
  228. package/dist/Logger/types.js +0 -37
  229. package/dist/Logger/types.js.map +0 -1
  230. package/dist/Metrics/index.js +0 -329
  231. package/dist/Metrics/index.js.map +0 -1
  232. package/dist/Metrics/index.test.js +0 -291
  233. package/dist/Metrics/index.test.js.map +0 -1
  234. package/dist/Metrics/types.js +0 -50
  235. package/dist/Metrics/types.js.map +0 -1
  236. package/dist/SDKConnector/index.js +0 -105
  237. package/dist/SDKConnector/index.js.map +0 -1
  238. package/dist/SDKConnector/index.test.js +0 -9
  239. package/dist/SDKConnector/index.test.js.map +0 -1
  240. package/dist/SDKConnector/types.js +0 -7
  241. package/dist/SDKConnector/types.js.map +0 -1
  242. package/dist/SDKConnector/utils.js +0 -40
  243. package/dist/SDKConnector/utils.js.map +0 -1
  244. package/dist/SDKConnector/utils.test.js +0 -9
  245. package/dist/SDKConnector/utils.test.js.map +0 -1
  246. package/dist/Voicemail/BroadworksBackendConnector.js +0 -632
  247. package/dist/Voicemail/BroadworksBackendConnector.js.map +0 -1
  248. package/dist/Voicemail/BroadworksBackendConnector.test.js +0 -733
  249. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +0 -1
  250. package/dist/Voicemail/UcmBackendConnector.js +0 -566
  251. package/dist/Voicemail/UcmBackendConnector.js.map +0 -1
  252. package/dist/Voicemail/UcmBackendConnector.test.js +0 -628
  253. package/dist/Voicemail/UcmBackendConnector.test.js.map +0 -1
  254. package/dist/Voicemail/Voicemail.js +0 -378
  255. package/dist/Voicemail/Voicemail.js.map +0 -1
  256. package/dist/Voicemail/Voicemail.test.js +0 -226
  257. package/dist/Voicemail/Voicemail.test.js.map +0 -1
  258. package/dist/Voicemail/WxCallBackendConnector.js +0 -540
  259. package/dist/Voicemail/WxCallBackendConnector.js.map +0 -1
  260. package/dist/Voicemail/WxCallBackendConnector.test.js +0 -942
  261. package/dist/Voicemail/WxCallBackendConnector.test.js.map +0 -1
  262. package/dist/Voicemail/constants.js +0 -66
  263. package/dist/Voicemail/constants.js.map +0 -1
  264. package/dist/Voicemail/types.js +0 -7
  265. package/dist/Voicemail/types.js.map +0 -1
  266. package/dist/Voicemail/voicemailFixture.js +0 -559
  267. package/dist/Voicemail/voicemailFixture.js.map +0 -1
  268. package/dist/api.js +0 -134
  269. package/dist/api.js.map +0 -1
  270. package/dist/common/Utils.js +0 -1264
  271. package/dist/common/Utils.js.map +0 -1
  272. package/dist/common/Utils.test.js +0 -1227
  273. package/dist/common/Utils.test.js.map +0 -1
  274. package/dist/common/constants.js +0 -90
  275. package/dist/common/constants.js.map +0 -1
  276. package/dist/common/index.js +0 -19
  277. package/dist/common/index.js.map +0 -1
  278. package/dist/common/testUtil.js +0 -968
  279. package/dist/common/testUtil.js.map +0 -1
  280. package/dist/common/types.js +0 -75
  281. package/dist/common/types.js.map +0 -1
  282. package/dist/index.js +0 -63
  283. package/dist/index.js.map +0 -1
@@ -1,158 +1,158 @@
1
- import { v4 as uuid } from 'uuid';
2
- import { CallDirection, MobiusStatus, ServiceIndicator, } from '../../common/types';
3
- import { LINE_EVENTS, LineStatus } from './types';
4
- import { LINE_FILE, VALID_PHONE } from '../constants';
5
- import log from '../../Logger';
6
- import { createRegistration } from '../registration';
7
- import { Eventing } from '../../Events/impl';
8
- import { LineError } from '../../Errors/catalog/LineError';
9
- import { validateServiceData } from '../../common';
10
- import SDKConnector from '../../SDKConnector';
11
- import { LINE_EVENT_KEYS } from '../../Events/types';
12
- import { getCallManager } from '../calling/callManager';
13
- import { ERROR_TYPE } from '../../Errors/types';
14
- export default class Line extends Eventing {
15
- #webex;
16
- #mutex;
17
- #sdkConnector;
18
- registration;
19
- userId;
20
- clientDeviceUri;
21
- lineId;
22
- mobiusDeviceId;
23
- mobiusUri;
24
- phoneNumber;
25
- extension;
26
- status;
27
- sipAddresses;
28
- voicemail;
29
- lastSeen;
30
- keepaliveInterval;
31
- callKeepaliveInterval;
32
- rehomingIntervalMin;
33
- rehomingIntervalMax;
34
- voicePortalNumber;
35
- voicePortalExtension;
36
- callManager;
37
- #primaryMobiusUris;
38
- #backupMobiusUris;
39
- constructor(userId, clientDeviceUri, status, mutex, primaryMobiusUris, backupMobiusUris, logLevel, serviceDataConfig, phoneNumber, extension, voicemail) {
40
- super();
41
- this.lineId = uuid();
42
- this.userId = userId;
43
- this.clientDeviceUri = clientDeviceUri;
44
- this.status = status;
45
- this.phoneNumber = phoneNumber;
46
- this.extension = extension;
47
- this.voicemail = voicemail;
48
- this.#sdkConnector = SDKConnector;
49
- this.#webex = this.#sdkConnector.getWebex();
50
- this.#mutex = mutex;
51
- this.#primaryMobiusUris = primaryMobiusUris;
52
- this.#backupMobiusUris = backupMobiusUris;
53
- const serviceData = serviceDataConfig?.indicator
54
- ? serviceDataConfig
55
- : { indicator: ServiceIndicator.CALLING, domain: '' };
56
- validateServiceData(serviceData);
57
- this.registration = createRegistration(this.#webex, serviceData, this.#mutex, this.lineEmitter, logLevel);
58
- this.registration.setStatus(MobiusStatus.DEFAULT);
59
- log.setLogger(logLevel, LINE_FILE);
60
- this.callManager = getCallManager(this.#webex, serviceData.indicator);
61
- this.incomingCallListener();
62
- }
63
- async register() {
64
- await this.#mutex.runExclusive(async () => {
65
- this.registration.setStatus(MobiusStatus.DEFAULT);
66
- this.emit(LINE_EVENTS.CONNECTING);
67
- this.registration.setMobiusServers(this.#primaryMobiusUris, this.#backupMobiusUris);
68
- await this.registration.triggerRegistration();
69
- });
70
- if (this.mobiusDeviceId) {
71
- this.callManager.updateLine(this.mobiusDeviceId, this);
72
- }
73
- }
74
- async deregister() {
75
- this.registration.deregister();
76
- }
77
- normalizeLine(deviceInfo) {
78
- const { device, keepaliveInterval, callKeepaliveInterval, rehomingIntervalMin, rehomingIntervalMax, voicePortalNumber, voicePortalExtension, } = deviceInfo;
79
- this.mobiusDeviceId = device?.deviceId;
80
- this.mobiusUri = device?.uri;
81
- this.lastSeen = device?.lastSeen;
82
- this.sipAddresses = device?.addresses;
83
- this.keepaliveInterval = keepaliveInterval;
84
- this.callKeepaliveInterval = callKeepaliveInterval;
85
- this.rehomingIntervalMin = rehomingIntervalMin;
86
- this.rehomingIntervalMax = rehomingIntervalMax;
87
- this.voicePortalNumber = voicePortalNumber;
88
- this.voicePortalExtension = voicePortalExtension;
89
- }
90
- lineEmitter = (event, deviceInfo, lineError) => {
91
- switch (event) {
92
- case LINE_EVENTS.REGISTERED:
93
- if (deviceInfo) {
94
- this.normalizeLine(deviceInfo);
95
- this.emit(event, this);
96
- }
97
- break;
98
- case LINE_EVENTS.UNREGISTERED:
99
- case LINE_EVENTS.RECONNECTED:
100
- case LINE_EVENTS.RECONNECTING:
101
- this.emit(event);
102
- break;
103
- case LINE_EVENTS.ERROR:
104
- if (lineError) {
105
- this.emit(event, lineError);
106
- }
107
- break;
108
- default:
109
- break;
110
- }
111
- };
112
- getLoggingLevel() {
113
- return log.getLogLevel();
114
- }
115
- getActiveMobiusUrl() {
116
- return this.registration.getActiveMobiusUrl();
117
- }
118
- getRegistrationStatus = () => this.registration.getStatus();
119
- getDeviceId = () => this.registration.getDeviceInfo().device?.deviceId;
120
- makeCall = (dest) => {
121
- let call;
122
- if (dest) {
123
- const match = dest.address.match(VALID_PHONE);
124
- if (match && match[0].length === dest.address.length) {
125
- const sanitizedNumber = dest.address
126
- .replace(/[^[*+]\d#]/gi, '')
127
- .replace(/\s+/gi, '')
128
- .replace(/-/gi, '');
129
- const formattedDest = {
130
- type: dest.type,
131
- address: `tel:${sanitizedNumber}`,
132
- };
133
- call = this.callManager.createCall(formattedDest, CallDirection.OUTBOUND, this.registration.getDeviceInfo().device?.deviceId, this.lineId);
134
- log.log(`New call created, callId: ${call.getCallId()}`, {});
135
- }
136
- else {
137
- log.warn('Invalid phone number detected', {});
138
- const err = new LineError('An invalid phone number was detected. Check the number and try again.', {}, ERROR_TYPE.CALL_ERROR, LineStatus.ACTIVE);
139
- this.emit(LINE_EVENTS.ERROR, err);
140
- }
141
- return call;
142
- }
143
- return undefined;
144
- };
145
- incomingCallListener() {
146
- const logContext = {
147
- file: LINE_FILE,
148
- method: this.incomingCallListener.name,
149
- };
150
- log.log('Listening for incoming calls... ', logContext);
151
- this.callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj) => {
152
- this.emit(LINE_EVENTS.INCOMING_CALL, callObj);
153
- });
154
- }
155
- getCall = (correlationId) => {
156
- return this.callManager.getCall(correlationId);
157
- };
158
- }
1
+ import { v4 as uuid } from 'uuid';
2
+ import { CallDirection, MobiusStatus, ServiceIndicator, } from '../../common/types';
3
+ import { LINE_EVENTS, LineStatus } from './types';
4
+ import { LINE_FILE, VALID_PHONE } from '../constants';
5
+ import log from '../../Logger';
6
+ import { createRegistration } from '../registration';
7
+ import { Eventing } from '../../Events/impl';
8
+ import { LineError } from '../../Errors/catalog/LineError';
9
+ import { validateServiceData } from '../../common';
10
+ import SDKConnector from '../../SDKConnector';
11
+ import { LINE_EVENT_KEYS } from '../../Events/types';
12
+ import { getCallManager } from '../calling/callManager';
13
+ import { ERROR_TYPE } from '../../Errors/types';
14
+ export default class Line extends Eventing {
15
+ #webex;
16
+ #mutex;
17
+ #sdkConnector;
18
+ registration;
19
+ userId;
20
+ clientDeviceUri;
21
+ lineId;
22
+ mobiusDeviceId;
23
+ mobiusUri;
24
+ phoneNumber;
25
+ extension;
26
+ status;
27
+ sipAddresses;
28
+ voicemail;
29
+ lastSeen;
30
+ keepaliveInterval;
31
+ callKeepaliveInterval;
32
+ rehomingIntervalMin;
33
+ rehomingIntervalMax;
34
+ voicePortalNumber;
35
+ voicePortalExtension;
36
+ callManager;
37
+ #primaryMobiusUris;
38
+ #backupMobiusUris;
39
+ constructor(userId, clientDeviceUri, status, mutex, primaryMobiusUris, backupMobiusUris, logLevel, serviceDataConfig, phoneNumber, extension, voicemail) {
40
+ super();
41
+ this.lineId = uuid();
42
+ this.userId = userId;
43
+ this.clientDeviceUri = clientDeviceUri;
44
+ this.status = status;
45
+ this.phoneNumber = phoneNumber;
46
+ this.extension = extension;
47
+ this.voicemail = voicemail;
48
+ this.#sdkConnector = SDKConnector;
49
+ this.#webex = this.#sdkConnector.getWebex();
50
+ this.#mutex = mutex;
51
+ this.#primaryMobiusUris = primaryMobiusUris;
52
+ this.#backupMobiusUris = backupMobiusUris;
53
+ const serviceData = serviceDataConfig?.indicator
54
+ ? serviceDataConfig
55
+ : { indicator: ServiceIndicator.CALLING, domain: '' };
56
+ validateServiceData(serviceData);
57
+ this.registration = createRegistration(this.#webex, serviceData, this.#mutex, this.lineEmitter, logLevel);
58
+ this.registration.setStatus(MobiusStatus.DEFAULT);
59
+ log.setLogger(logLevel, LINE_FILE);
60
+ this.callManager = getCallManager(this.#webex, serviceData.indicator);
61
+ this.incomingCallListener();
62
+ }
63
+ async register() {
64
+ await this.#mutex.runExclusive(async () => {
65
+ this.registration.setStatus(MobiusStatus.DEFAULT);
66
+ this.emit(LINE_EVENTS.CONNECTING);
67
+ this.registration.setMobiusServers(this.#primaryMobiusUris, this.#backupMobiusUris);
68
+ await this.registration.triggerRegistration();
69
+ });
70
+ if (this.mobiusDeviceId) {
71
+ this.callManager.updateLine(this.mobiusDeviceId, this);
72
+ }
73
+ }
74
+ async deregister() {
75
+ this.registration.deregister();
76
+ }
77
+ normalizeLine(deviceInfo) {
78
+ const { device, keepaliveInterval, callKeepaliveInterval, rehomingIntervalMin, rehomingIntervalMax, voicePortalNumber, voicePortalExtension, } = deviceInfo;
79
+ this.mobiusDeviceId = device?.deviceId;
80
+ this.mobiusUri = device?.uri;
81
+ this.lastSeen = device?.lastSeen;
82
+ this.sipAddresses = device?.addresses;
83
+ this.keepaliveInterval = keepaliveInterval;
84
+ this.callKeepaliveInterval = callKeepaliveInterval;
85
+ this.rehomingIntervalMin = rehomingIntervalMin;
86
+ this.rehomingIntervalMax = rehomingIntervalMax;
87
+ this.voicePortalNumber = voicePortalNumber;
88
+ this.voicePortalExtension = voicePortalExtension;
89
+ }
90
+ lineEmitter = (event, deviceInfo, lineError) => {
91
+ switch (event) {
92
+ case LINE_EVENTS.REGISTERED:
93
+ if (deviceInfo) {
94
+ this.normalizeLine(deviceInfo);
95
+ this.emit(event, this);
96
+ }
97
+ break;
98
+ case LINE_EVENTS.UNREGISTERED:
99
+ case LINE_EVENTS.RECONNECTED:
100
+ case LINE_EVENTS.RECONNECTING:
101
+ this.emit(event);
102
+ break;
103
+ case LINE_EVENTS.ERROR:
104
+ if (lineError) {
105
+ this.emit(event, lineError);
106
+ }
107
+ break;
108
+ default:
109
+ break;
110
+ }
111
+ };
112
+ getLoggingLevel() {
113
+ return log.getLogLevel();
114
+ }
115
+ getActiveMobiusUrl() {
116
+ return this.registration.getActiveMobiusUrl();
117
+ }
118
+ getRegistrationStatus = () => this.registration.getStatus();
119
+ getDeviceId = () => this.registration.getDeviceInfo().device?.deviceId;
120
+ makeCall = (dest) => {
121
+ let call;
122
+ if (dest) {
123
+ const match = dest.address.match(VALID_PHONE);
124
+ if (match && match[0].length === dest.address.length) {
125
+ const sanitizedNumber = dest.address
126
+ .replace(/[^[*+]\d#]/gi, '')
127
+ .replace(/\s+/gi, '')
128
+ .replace(/-/gi, '');
129
+ const formattedDest = {
130
+ type: dest.type,
131
+ address: `tel:${sanitizedNumber}`,
132
+ };
133
+ call = this.callManager.createCall(formattedDest, CallDirection.OUTBOUND, this.registration.getDeviceInfo().device?.deviceId, this.lineId);
134
+ log.log(`New call created, callId: ${call.getCallId()}`, {});
135
+ }
136
+ else {
137
+ log.warn('Invalid phone number detected', {});
138
+ const err = new LineError('An invalid phone number was detected. Check the number and try again.', {}, ERROR_TYPE.CALL_ERROR, LineStatus.ACTIVE);
139
+ this.emit(LINE_EVENTS.ERROR, err);
140
+ }
141
+ return call;
142
+ }
143
+ return undefined;
144
+ };
145
+ incomingCallListener() {
146
+ const logContext = {
147
+ file: LINE_FILE,
148
+ method: this.incomingCallListener.name,
149
+ };
150
+ log.log('Listening for incoming calls... ', logContext);
151
+ this.callManager.on(LINE_EVENT_KEYS.INCOMING_CALL, (callObj) => {
152
+ this.emit(LINE_EVENTS.INCOMING_CALL, callObj);
153
+ });
154
+ }
155
+ getCall = (correlationId) => {
156
+ return this.callManager.getCall(correlationId);
157
+ };
158
+ }
@@ -1,15 +1,15 @@
1
- export var LineStatus;
2
- (function (LineStatus) {
3
- LineStatus["INACTIVE"] = "inactive";
4
- LineStatus["ACTIVE"] = "active";
5
- })(LineStatus || (LineStatus = {}));
6
- export var LINE_EVENTS;
7
- (function (LINE_EVENTS) {
8
- LINE_EVENTS["CONNECTING"] = "connecting";
9
- LINE_EVENTS["ERROR"] = "error";
10
- LINE_EVENTS["RECONNECTED"] = "reconnected";
11
- LINE_EVENTS["RECONNECTING"] = "reconnecting";
12
- LINE_EVENTS["REGISTERED"] = "registered";
13
- LINE_EVENTS["UNREGISTERED"] = "unregistered";
14
- LINE_EVENTS["INCOMING_CALL"] = "line:incoming_call";
15
- })(LINE_EVENTS || (LINE_EVENTS = {}));
1
+ export var LineStatus;
2
+ (function (LineStatus) {
3
+ LineStatus["INACTIVE"] = "inactive";
4
+ LineStatus["ACTIVE"] = "active";
5
+ })(LineStatus || (LineStatus = {}));
6
+ export var LINE_EVENTS;
7
+ (function (LINE_EVENTS) {
8
+ LINE_EVENTS["CONNECTING"] = "connecting";
9
+ LINE_EVENTS["ERROR"] = "error";
10
+ LINE_EVENTS["RECONNECTED"] = "reconnected";
11
+ LINE_EVENTS["RECONNECTING"] = "reconnecting";
12
+ LINE_EVENTS["REGISTERED"] = "registered";
13
+ LINE_EVENTS["UNREGISTERED"] = "unregistered";
14
+ LINE_EVENTS["INCOMING_CALL"] = "line:incoming_call";
15
+ })(LINE_EVENTS || (LINE_EVENTS = {}));
@@ -1 +1 @@
1
- export * from './register';
1
+ export * from './register';