@wazo/sdk 0.38.0 → 0.38.3

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 (45) hide show
  1. package/README.md +293 -0
  2. package/dist/wazo-sdk.js +5 -5
  3. package/esm/__tests__/web-rtc-client.test.js +1 -1
  4. package/esm/checker/Checker.js +1 -1
  5. package/esm/checker/checks/index.js +1 -1
  6. package/esm/checker/checks/webrtc-transport.js +1 -1
  7. package/esm/checker/checks/webrtc.js +1 -1
  8. package/esm/index.js +267 -25
  9. package/esm/simple/Auth.js +267 -25
  10. package/esm/simple/Configuration.js +267 -25
  11. package/esm/simple/Phone.js +267 -25
  12. package/esm/simple/Softphone.js +266 -24
  13. package/esm/simple/index.js +267 -25
  14. package/esm/simple/room/LocalParticipant.js +267 -25
  15. package/esm/simple/room/Participant.js +267 -25
  16. package/esm/simple/room/RemoteParticipant.js +267 -25
  17. package/esm/simple/room/Room.js +267 -25
  18. package/esm/simple/room/SipRoom.js +267 -25
  19. package/esm/simple/room/Stream.js +267 -25
  20. package/esm/simple/room/__tests__/RemoteParticipant.test.js +267 -25
  21. package/esm/simple/utils.js +267 -25
  22. package/esm/web-rtc-client.js +1 -1
  23. package/lib/__tests__/web-rtc-client.test.js +1 -1
  24. package/lib/checker/Checker.js +1 -1
  25. package/lib/checker/checks/index.js +1 -1
  26. package/lib/checker/checks/webrtc-transport.js +1 -1
  27. package/lib/checker/checks/webrtc.js +1 -1
  28. package/lib/index.js +267 -25
  29. package/lib/simple/Auth.js +267 -25
  30. package/lib/simple/Configuration.js +267 -25
  31. package/lib/simple/Phone.js +267 -25
  32. package/lib/simple/Softphone.js +266 -24
  33. package/lib/simple/index.js +267 -25
  34. package/lib/simple/room/LocalParticipant.js +267 -25
  35. package/lib/simple/room/Participant.js +267 -25
  36. package/lib/simple/room/RemoteParticipant.js +267 -25
  37. package/lib/simple/room/Room.js +267 -25
  38. package/lib/simple/room/SipRoom.js +267 -25
  39. package/lib/simple/room/Stream.js +267 -25
  40. package/lib/simple/room/__tests__/RemoteParticipant.test.js +267 -25
  41. package/lib/simple/utils.js +267 -25
  42. package/lib/web-rtc-client.js +1 -1
  43. package/package.json +1 -1
  44. package/src/simple/Softphone.js +264 -24
  45. package/src/web-rtc-client.js +1 -1
@@ -8338,7 +8338,7 @@ class WebRTCClient extends Emitter {
8338
8338
  }
8339
8339
 
8340
8340
  async _onHeartbeatTimeout() {
8341
- logger$8.info('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8341
+ logger$8.warn('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8342
8342
 
8343
8343
  if (this.heartbeatTimeoutCb) {
8344
8344
  this.heartbeatTimeoutCb();
@@ -13148,40 +13148,159 @@ class Checker {
13148
13148
  //
13149
13149
  /* eslint-disable no-unused-vars */
13150
13150
  /* global window, document */
13151
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13152
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13153
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13154
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13155
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13156
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13157
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13158
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13159
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13160
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13161
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13162
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13163
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13164
+ const BRIDGE_ON_CALL_LOCALLY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_LOCALLY_ACCEPTED';
13165
+ const BRIDGE_ON_CALL_REJECTED = 'bridge/BRIDGE_ON_CALL_REJECTED';
13166
+ const BRIDGE_ON_CALL_REMOTELY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_REMOTELY_ACCEPTED';
13167
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13168
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13169
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13170
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13171
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13172
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13173
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13174
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13175
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13176
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13177
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13178
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13179
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13180
+ const BRIDGE_ON_CARD_CANCELED = 'bridge/BRIDGE_ON_CARD_CANCELED';
13181
+ const BRIDGE_ENABLE_AGENT = 'bridge/BRIDGE_ENABLE_AGENT';
13182
+ const BRIDGE_SET_CARD_CONTENT = 'bridge/BRIDGE_SET_CARD_CONTENT';
13183
+ const BRIDGE_ENABLE_DEBUG = 'bridge/BRIDGE_ENABLE_DEBUG';
13184
+
13185
+ const BRIDGE_INJECT_CSS = 'bridge/BRIDGE_INJECT_CSS';
13186
+ const BRIDGE_CUSTOMIZE_APPEARANCE = 'bridge/BRIDGE_CUSTOMIZE_APPEARANCE';
13187
+
13151
13188
  const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13152
- const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13189
+ const SDK_ON_OUTGOING_CALL_MADE = 'sdk/SDK_ON_OUTGOING_CALL_MADE';
13153
13190
  const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13154
13191
  const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13155
13192
  const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13193
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13156
13194
 
13157
13195
  class Softphone {
13158
- url = 'https://softphone.wazo.io';
13159
- width = 500;
13160
- height = 600;
13161
- displayed = false;
13162
- iframe = null;
13196
+
13197
+
13198
+
13199
+
13200
+
13201
+
13202
+
13203
+ // Message waiting for the iframe to be loaded
13204
+
13163
13205
 
13164
13206
  onLinkEnabled(link ) {}
13207
+ onIFrameLoaded() {}
13165
13208
 
13166
- onCallMade(call ) {}
13209
+ onCallLocallyAnswered(call ) {}
13210
+ onCallRemotelyAnswered(call ) {}
13211
+ onOutgoingCallMade(call ) {}
13167
13212
  onCallIncoming(call ) {}
13213
+ onCallRejected(call ) {}
13168
13214
  onCallEnded(call , card , direction , fromExtension ) {}
13215
+
13216
+ onCardSaved(card ) {}
13217
+ onCardCanceled() {}
13169
13218
  onAuthenticated(session ) {}
13219
+ onLoggedOut() {}
13220
+
13221
+ onSearchOptions(fieldId , query ) {
13222
+ this.onOptionsResults(fieldId, []);
13223
+ }
13224
+
13225
+ onDisplayLinkedOption(optionId ) {}
13226
+ onWazoContactSearch(query ) {}
13227
+ onAgentLoggedIn() {}
13228
+ onAgentLoggedOut() {}
13229
+ onAgentPaused() {}
13230
+ onAgentResumed() {}
13231
+ onLanguageChanged(language ) {}
13232
+ onCallHeld() {}
13233
+ onCallResumed() {}
13234
+ onCallMuted() {}
13235
+ onCallUnMuted() {}
13236
+ onDtmfSent(tone ) {}
13237
+ onDirectTransfer(number ) {}
13238
+ onCreateIndirectTransfer(number ) {}
13239
+ onCancelIndirectTransfer() {}
13240
+ onConfirmIndirectTransfer() {}
13241
+ onIndirectCallMade(call ) {}
13242
+ onIndirectTransferDone(call ) {}
13243
+ onStartRecording() {}
13244
+ onStopRecording() {}
13245
+ onUnHandledEvent(event ) {}
13246
+
13247
+ init({
13248
+ url,
13249
+ width,
13250
+ height,
13251
+ server,
13252
+ port,
13253
+ language,
13254
+ wrapUpDuration,
13255
+ enableAgent = true,
13256
+ tenantId,
13257
+ debug = false,
13258
+ } = {}) {
13259
+ this.url = url || 'https://softphone.wazo.io';
13260
+ this.width = width || 500;
13261
+ this.height = height || 600;
13262
+ this.displayed = false;
13263
+ this.iframeLoaded = false;
13264
+
13265
+ this.iframeLoaded = false;
13266
+ this._pendingMessages = [];
13267
+ window.addEventListener('message', this._onMessage.bind(this), false);
13268
+
13269
+ if (!server) {
13270
+ // eslint-disable-next-line no-param-reassign
13271
+ server = 'stack.dev.wazo.io';
13272
+ }
13170
13273
 
13171
- init(url , width , height ) {
13172
- if (url) {
13173
- this.url = url;
13274
+ const config = { server };
13275
+ if (language) {
13276
+ config.language = language;
13277
+ }
13278
+ if (port) {
13279
+ config.port = port;
13174
13280
  }
13175
- if (width) {
13176
- this.width = width;
13281
+ if (tenantId) {
13282
+ config.tenantId = tenantId;
13177
13283
  }
13178
- if (height) {
13179
- this.height = height;
13284
+ if (wrapUpDuration) {
13285
+ config.wrapUpDuration = wrapUpDuration;
13180
13286
  }
13181
13287
 
13182
- window.addEventListener('message', this._onMessage.bind(this), false);
13288
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, { config });
13183
13289
 
13184
- this._createIframe();
13290
+ if (enableAgent) {
13291
+ this._sendMessage(BRIDGE_ENABLE_AGENT);
13292
+ }
13293
+
13294
+ if (debug) {
13295
+ this._sendMessage(BRIDGE_ENABLE_DEBUG);
13296
+ }
13297
+
13298
+ this._createIframe(() => {
13299
+ this.iframeLoaded = true;
13300
+ this._pendingMessages.forEach(([type, payload]) => this._sendMessage(type, payload));
13301
+
13302
+ this.onIFrameLoaded();
13303
+ });
13185
13304
  }
13186
13305
 
13187
13306
  parseLinks() {
@@ -13197,9 +13316,7 @@ class Softphone {
13197
13316
  makeCall(number ) {
13198
13317
  this.displaySoftphone();
13199
13318
 
13200
- if (this.iframe) {
13201
- this.iframe.contentWindow.postMessage({ type: SDK_CLICK_TO_CALL, number }, '*');
13202
- }
13319
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13203
13320
  }
13204
13321
 
13205
13322
  toggleSoftphoneDisplay() {
@@ -13208,8 +13325,6 @@ class Softphone {
13208
13325
  } else {
13209
13326
  this.displaySoftphone();
13210
13327
  }
13211
-
13212
- this.displayed = !this.displayed;
13213
13328
  }
13214
13329
 
13215
13330
  displaySoftphone() {
@@ -13220,15 +13335,42 @@ class Softphone {
13220
13335
  if (this.iframe) {
13221
13336
  this.iframe.style.display = 'block';
13222
13337
  }
13338
+
13339
+ this.displayed = true;
13223
13340
  }
13224
13341
 
13225
13342
  hideSoftphone() {
13226
13343
  if (this.iframe) {
13227
13344
  this.iframe.style.display = 'none';
13228
13345
  }
13346
+ this.displayed = false;
13347
+ }
13348
+
13349
+ optionsFetched(fieldId , options ) {
13350
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
13351
+ }
13352
+
13353
+ onOptionsResults(fieldId , options ) {
13354
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
13355
+ }
13356
+
13357
+ setFormSchema(schema , uiSchema ) {
13358
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
13359
+ }
13360
+
13361
+ setCardValue(field , value ) {
13362
+ this._sendMessage(BRIDGE_SET_CARD_CONTENT, { field, value });
13363
+ }
13364
+
13365
+ injectCss(css ) {
13366
+ this._sendMessage(BRIDGE_INJECT_CSS, { css });
13229
13367
  }
13230
13368
 
13231
- _createIframe() {
13369
+ customizeAppearance(themes , translations , assets ) {
13370
+ this._sendMessage(BRIDGE_CUSTOMIZE_APPEARANCE, { themes, translations, assets });
13371
+ }
13372
+
13373
+ _createIframe(cb = () => {}) {
13232
13374
  this.iframe = document.createElement('iframe');
13233
13375
  // $FlowFixMe
13234
13376
  this.iframe.width = this.width;
@@ -13240,10 +13382,13 @@ class Softphone {
13240
13382
  this.iframe.style.left = '0';
13241
13383
  this.iframe.style.bottom = '0';
13242
13384
  this.iframe.style.border = '1px solid #aaa';
13385
+ this.iframe.style.backgroundColor = 'white';
13243
13386
  this.iframe.src = this.url;
13244
13387
  this.iframe.style.display = 'none';
13245
13388
  this.iframe.id = 'wazo-softphone';
13246
13389
 
13390
+ this.iframe.onload = cb;
13391
+
13247
13392
  // $FlowFixMe
13248
13393
  document.body.appendChild(this.iframe);
13249
13394
  }
@@ -13270,8 +13415,8 @@ class Softphone {
13270
13415
  }
13271
13416
 
13272
13417
  switch (event.data.type) {
13273
- case SDK_ON_CALL_MADE:
13274
- this.onCallMade(event.data.callSession);
13418
+ case SDK_ON_OUTGOING_CALL_MADE:
13419
+ this.onOutgoingCallMade(event.data.callSession);
13275
13420
  break;
13276
13421
  case SDK_CALL_ENDED: {
13277
13422
  const { callSession, content, direction, userExtension } = event.data;
@@ -13286,8 +13431,105 @@ class Softphone {
13286
13431
  this._onAuthenticated(event.data.session);
13287
13432
  this.onAuthenticated(event.data.session);
13288
13433
  break;
13434
+ case SDK_LOGGED_OUT:
13435
+ this.onLoggedOut();
13436
+ break;
13437
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
13438
+ const { content } = event.data;
13439
+ this.onCardSaved(content);
13440
+ break;
13441
+ }
13442
+ case BRIDGE_SEARCH_OPTIONS: {
13443
+ const { fieldId, query } = event.data;
13444
+ this.onSearchOptions(fieldId, query);
13445
+ break;
13446
+ }
13447
+ case BRIDGE_DISPLAY_LINKED_OPTION:
13448
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
13449
+ break;
13450
+ case BRIDGE_WAZO_CONTACT_SEARCH:
13451
+ this.onWazoContactSearch(event.data.query);
13452
+ break;
13453
+ case BRIDGE_ON_AGENT_LOGGED_IN:
13454
+ this.onAgentLoggedIn();
13455
+ break;
13456
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
13457
+ this.onAgentLoggedOut();
13458
+ break;
13459
+ case BRIDGE_ON_AGENT_PAUSED:
13460
+ this.onAgentPaused();
13461
+ break;
13462
+ case BRIDGE_ON_AGENT_RESUMED:
13463
+ this.onAgentResumed();
13464
+ break;
13465
+ case BRIDGE_ON_LANGUAGE_CHANGED:
13466
+ this.onLanguageChanged(event.data.language);
13467
+ break;
13468
+ case BRIDGE_ON_CALL_HELD:
13469
+ this.onCallHeld();
13470
+ break;
13471
+ case BRIDGE_ON_CALL_RESUMED:
13472
+ this.onCallResumed();
13473
+ break;
13474
+ case BRIDGE_ON_CALL_MUTED:
13475
+ this.onCallMuted();
13476
+ break;
13477
+ case BRIDGE_ON_CALL_UN_MUTED:
13478
+ this.onCallUnMuted();
13479
+ break;
13480
+ case BRIDGE_ON_DTMF:
13481
+ this.onDtmfSent(event.data.tone);
13482
+ break;
13483
+ case BRIDGE_ON_DIRECT_TRANSFER:
13484
+ this.onDirectTransfer(event.data.number);
13485
+ break;
13486
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
13487
+ this.onCreateIndirectTransfer(event.data.number);
13488
+ break;
13489
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
13490
+ this.onCancelIndirectTransfer();
13491
+ break;
13492
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
13493
+ this.onConfirmIndirectTransfer();
13494
+ break;
13495
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
13496
+ this.onIndirectCallMade(event.data.call);
13497
+ break;
13498
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
13499
+ this.onIndirectTransferDone(event.data.call);
13500
+ break;
13501
+ case BRIDGE_ON_START_RECORDING:
13502
+ this.onStartRecording();
13503
+ break;
13504
+ case BRIDGE_ON_STOP_RECORDING:
13505
+ this.onStopRecording();
13506
+ break;
13507
+ case BRIDGE_ON_CARD_CANCELED:
13508
+ this.onCardCanceled();
13509
+ break;
13510
+ case BRIDGE_ON_CALL_LOCALLY_ACCEPTED:
13511
+ this.onCallLocallyAnswered(event.data.call);
13512
+ break;
13513
+ case BRIDGE_ON_CALL_REJECTED:
13514
+ this.onCallRejected(event.data.call);
13515
+ break;
13516
+ case BRIDGE_ON_CALL_REMOTELY_ACCEPTED:
13517
+ this.onCallRemotelyAnswered(event.data.call);
13518
+ break;
13519
+ default:
13520
+ this.onUnHandledEvent(event);
13521
+ break;
13289
13522
  }
13290
13523
  }
13524
+
13525
+ _sendMessage(type , payload = {}) {
13526
+ if (!this.iframe || !this.iframeLoaded) {
13527
+ this._pendingMessages.push([type, payload]);
13528
+ return;
13529
+ }
13530
+
13531
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
13532
+ }
13291
13533
  }
13292
13534
 
13293
13535
  var Softphone$1 = new Softphone();