@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
@@ -8025,7 +8025,7 @@ class WebRTCClient extends Emitter {
8025
8025
  }
8026
8026
 
8027
8027
  async _onHeartbeatTimeout() {
8028
- logger$9.info('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8028
+ logger$9.warn('sdk webrtc heartbeat timed out', { userAgent: !!this.userAgent, cb: !!this.heartbeatTimeoutCb });
8029
8029
 
8030
8030
  if (this.heartbeatTimeoutCb) {
8031
8031
  this.heartbeatTimeoutCb();
@@ -13562,40 +13562,159 @@ class Checker {
13562
13562
  //
13563
13563
  /* eslint-disable no-unused-vars */
13564
13564
  /* global window, document */
13565
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13566
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13567
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13568
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13569
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13570
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13571
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13572
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13573
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13574
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13575
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13576
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13577
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13578
+ const BRIDGE_ON_CALL_LOCALLY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_LOCALLY_ACCEPTED';
13579
+ const BRIDGE_ON_CALL_REJECTED = 'bridge/BRIDGE_ON_CALL_REJECTED';
13580
+ const BRIDGE_ON_CALL_REMOTELY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_REMOTELY_ACCEPTED';
13581
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13582
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13583
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13584
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13585
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13586
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13587
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13588
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13589
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13590
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13591
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13592
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13593
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13594
+ const BRIDGE_ON_CARD_CANCELED = 'bridge/BRIDGE_ON_CARD_CANCELED';
13595
+ const BRIDGE_ENABLE_AGENT = 'bridge/BRIDGE_ENABLE_AGENT';
13596
+ const BRIDGE_SET_CARD_CONTENT = 'bridge/BRIDGE_SET_CARD_CONTENT';
13597
+ const BRIDGE_ENABLE_DEBUG = 'bridge/BRIDGE_ENABLE_DEBUG';
13598
+
13599
+ const BRIDGE_INJECT_CSS = 'bridge/BRIDGE_INJECT_CSS';
13600
+ const BRIDGE_CUSTOMIZE_APPEARANCE = 'bridge/BRIDGE_CUSTOMIZE_APPEARANCE';
13601
+
13565
13602
  const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13566
- const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13603
+ const SDK_ON_OUTGOING_CALL_MADE = 'sdk/SDK_ON_OUTGOING_CALL_MADE';
13567
13604
  const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13568
13605
  const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13569
13606
  const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13607
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13570
13608
 
13571
13609
  class Softphone {
13572
- url = 'https://softphone.wazo.io';
13573
- width = 500;
13574
- height = 600;
13575
- displayed = false;
13576
- iframe = null;
13610
+
13611
+
13612
+
13613
+
13614
+
13615
+
13616
+
13617
+ // Message waiting for the iframe to be loaded
13618
+
13577
13619
 
13578
13620
  onLinkEnabled(link ) {}
13621
+ onIFrameLoaded() {}
13579
13622
 
13580
- onCallMade(call ) {}
13623
+ onCallLocallyAnswered(call ) {}
13624
+ onCallRemotelyAnswered(call ) {}
13625
+ onOutgoingCallMade(call ) {}
13581
13626
  onCallIncoming(call ) {}
13627
+ onCallRejected(call ) {}
13582
13628
  onCallEnded(call , card , direction , fromExtension ) {}
13629
+
13630
+ onCardSaved(card ) {}
13631
+ onCardCanceled() {}
13583
13632
  onAuthenticated(session ) {}
13633
+ onLoggedOut() {}
13634
+
13635
+ onSearchOptions(fieldId , query ) {
13636
+ this.onOptionsResults(fieldId, []);
13637
+ }
13638
+
13639
+ onDisplayLinkedOption(optionId ) {}
13640
+ onWazoContactSearch(query ) {}
13641
+ onAgentLoggedIn() {}
13642
+ onAgentLoggedOut() {}
13643
+ onAgentPaused() {}
13644
+ onAgentResumed() {}
13645
+ onLanguageChanged(language ) {}
13646
+ onCallHeld() {}
13647
+ onCallResumed() {}
13648
+ onCallMuted() {}
13649
+ onCallUnMuted() {}
13650
+ onDtmfSent(tone ) {}
13651
+ onDirectTransfer(number ) {}
13652
+ onCreateIndirectTransfer(number ) {}
13653
+ onCancelIndirectTransfer() {}
13654
+ onConfirmIndirectTransfer() {}
13655
+ onIndirectCallMade(call ) {}
13656
+ onIndirectTransferDone(call ) {}
13657
+ onStartRecording() {}
13658
+ onStopRecording() {}
13659
+ onUnHandledEvent(event ) {}
13660
+
13661
+ init({
13662
+ url,
13663
+ width,
13664
+ height,
13665
+ server,
13666
+ port,
13667
+ language,
13668
+ wrapUpDuration,
13669
+ enableAgent = true,
13670
+ tenantId,
13671
+ debug = false,
13672
+ } = {}) {
13673
+ this.url = url || 'https://softphone.wazo.io';
13674
+ this.width = width || 500;
13675
+ this.height = height || 600;
13676
+ this.displayed = false;
13677
+ this.iframeLoaded = false;
13678
+
13679
+ this.iframeLoaded = false;
13680
+ this._pendingMessages = [];
13681
+ window.addEventListener('message', this._onMessage.bind(this), false);
13682
+
13683
+ if (!server) {
13684
+ // eslint-disable-next-line no-param-reassign
13685
+ server = 'stack.dev.wazo.io';
13686
+ }
13584
13687
 
13585
- init(url , width , height ) {
13586
- if (url) {
13587
- this.url = url;
13688
+ const config = { server };
13689
+ if (language) {
13690
+ config.language = language;
13691
+ }
13692
+ if (port) {
13693
+ config.port = port;
13588
13694
  }
13589
- if (width) {
13590
- this.width = width;
13695
+ if (tenantId) {
13696
+ config.tenantId = tenantId;
13591
13697
  }
13592
- if (height) {
13593
- this.height = height;
13698
+ if (wrapUpDuration) {
13699
+ config.wrapUpDuration = wrapUpDuration;
13594
13700
  }
13595
13701
 
13596
- window.addEventListener('message', this._onMessage.bind(this), false);
13702
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, { config });
13597
13703
 
13598
- this._createIframe();
13704
+ if (enableAgent) {
13705
+ this._sendMessage(BRIDGE_ENABLE_AGENT);
13706
+ }
13707
+
13708
+ if (debug) {
13709
+ this._sendMessage(BRIDGE_ENABLE_DEBUG);
13710
+ }
13711
+
13712
+ this._createIframe(() => {
13713
+ this.iframeLoaded = true;
13714
+ this._pendingMessages.forEach(([type, payload]) => this._sendMessage(type, payload));
13715
+
13716
+ this.onIFrameLoaded();
13717
+ });
13599
13718
  }
13600
13719
 
13601
13720
  parseLinks() {
@@ -13611,9 +13730,7 @@ class Softphone {
13611
13730
  makeCall(number ) {
13612
13731
  this.displaySoftphone();
13613
13732
 
13614
- if (this.iframe) {
13615
- this.iframe.contentWindow.postMessage({ type: SDK_CLICK_TO_CALL, number }, '*');
13616
- }
13733
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13617
13734
  }
13618
13735
 
13619
13736
  toggleSoftphoneDisplay() {
@@ -13622,8 +13739,6 @@ class Softphone {
13622
13739
  } else {
13623
13740
  this.displaySoftphone();
13624
13741
  }
13625
-
13626
- this.displayed = !this.displayed;
13627
13742
  }
13628
13743
 
13629
13744
  displaySoftphone() {
@@ -13634,15 +13749,42 @@ class Softphone {
13634
13749
  if (this.iframe) {
13635
13750
  this.iframe.style.display = 'block';
13636
13751
  }
13752
+
13753
+ this.displayed = true;
13637
13754
  }
13638
13755
 
13639
13756
  hideSoftphone() {
13640
13757
  if (this.iframe) {
13641
13758
  this.iframe.style.display = 'none';
13642
13759
  }
13760
+ this.displayed = false;
13761
+ }
13762
+
13763
+ optionsFetched(fieldId , options ) {
13764
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
13765
+ }
13766
+
13767
+ onOptionsResults(fieldId , options ) {
13768
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
13769
+ }
13770
+
13771
+ setFormSchema(schema , uiSchema ) {
13772
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
13773
+ }
13774
+
13775
+ setCardValue(field , value ) {
13776
+ this._sendMessage(BRIDGE_SET_CARD_CONTENT, { field, value });
13777
+ }
13778
+
13779
+ injectCss(css ) {
13780
+ this._sendMessage(BRIDGE_INJECT_CSS, { css });
13643
13781
  }
13644
13782
 
13645
- _createIframe() {
13783
+ customizeAppearance(themes , translations , assets ) {
13784
+ this._sendMessage(BRIDGE_CUSTOMIZE_APPEARANCE, { themes, translations, assets });
13785
+ }
13786
+
13787
+ _createIframe(cb = () => {}) {
13646
13788
  this.iframe = document.createElement('iframe');
13647
13789
  // $FlowFixMe
13648
13790
  this.iframe.width = this.width;
@@ -13654,10 +13796,13 @@ class Softphone {
13654
13796
  this.iframe.style.left = '0';
13655
13797
  this.iframe.style.bottom = '0';
13656
13798
  this.iframe.style.border = '1px solid #aaa';
13799
+ this.iframe.style.backgroundColor = 'white';
13657
13800
  this.iframe.src = this.url;
13658
13801
  this.iframe.style.display = 'none';
13659
13802
  this.iframe.id = 'wazo-softphone';
13660
13803
 
13804
+ this.iframe.onload = cb;
13805
+
13661
13806
  // $FlowFixMe
13662
13807
  document.body.appendChild(this.iframe);
13663
13808
  }
@@ -13684,8 +13829,8 @@ class Softphone {
13684
13829
  }
13685
13830
 
13686
13831
  switch (event.data.type) {
13687
- case SDK_ON_CALL_MADE:
13688
- this.onCallMade(event.data.callSession);
13832
+ case SDK_ON_OUTGOING_CALL_MADE:
13833
+ this.onOutgoingCallMade(event.data.callSession);
13689
13834
  break;
13690
13835
  case SDK_CALL_ENDED: {
13691
13836
  const { callSession, content, direction, userExtension } = event.data;
@@ -13700,8 +13845,105 @@ class Softphone {
13700
13845
  this._onAuthenticated(event.data.session);
13701
13846
  this.onAuthenticated(event.data.session);
13702
13847
  break;
13848
+ case SDK_LOGGED_OUT:
13849
+ this.onLoggedOut();
13850
+ break;
13851
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
13852
+ const { content } = event.data;
13853
+ this.onCardSaved(content);
13854
+ break;
13855
+ }
13856
+ case BRIDGE_SEARCH_OPTIONS: {
13857
+ const { fieldId, query } = event.data;
13858
+ this.onSearchOptions(fieldId, query);
13859
+ break;
13860
+ }
13861
+ case BRIDGE_DISPLAY_LINKED_OPTION:
13862
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
13863
+ break;
13864
+ case BRIDGE_WAZO_CONTACT_SEARCH:
13865
+ this.onWazoContactSearch(event.data.query);
13866
+ break;
13867
+ case BRIDGE_ON_AGENT_LOGGED_IN:
13868
+ this.onAgentLoggedIn();
13869
+ break;
13870
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
13871
+ this.onAgentLoggedOut();
13872
+ break;
13873
+ case BRIDGE_ON_AGENT_PAUSED:
13874
+ this.onAgentPaused();
13875
+ break;
13876
+ case BRIDGE_ON_AGENT_RESUMED:
13877
+ this.onAgentResumed();
13878
+ break;
13879
+ case BRIDGE_ON_LANGUAGE_CHANGED:
13880
+ this.onLanguageChanged(event.data.language);
13881
+ break;
13882
+ case BRIDGE_ON_CALL_HELD:
13883
+ this.onCallHeld();
13884
+ break;
13885
+ case BRIDGE_ON_CALL_RESUMED:
13886
+ this.onCallResumed();
13887
+ break;
13888
+ case BRIDGE_ON_CALL_MUTED:
13889
+ this.onCallMuted();
13890
+ break;
13891
+ case BRIDGE_ON_CALL_UN_MUTED:
13892
+ this.onCallUnMuted();
13893
+ break;
13894
+ case BRIDGE_ON_DTMF:
13895
+ this.onDtmfSent(event.data.tone);
13896
+ break;
13897
+ case BRIDGE_ON_DIRECT_TRANSFER:
13898
+ this.onDirectTransfer(event.data.number);
13899
+ break;
13900
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
13901
+ this.onCreateIndirectTransfer(event.data.number);
13902
+ break;
13903
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
13904
+ this.onCancelIndirectTransfer();
13905
+ break;
13906
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
13907
+ this.onConfirmIndirectTransfer();
13908
+ break;
13909
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
13910
+ this.onIndirectCallMade(event.data.call);
13911
+ break;
13912
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
13913
+ this.onIndirectTransferDone(event.data.call);
13914
+ break;
13915
+ case BRIDGE_ON_START_RECORDING:
13916
+ this.onStartRecording();
13917
+ break;
13918
+ case BRIDGE_ON_STOP_RECORDING:
13919
+ this.onStopRecording();
13920
+ break;
13921
+ case BRIDGE_ON_CARD_CANCELED:
13922
+ this.onCardCanceled();
13923
+ break;
13924
+ case BRIDGE_ON_CALL_LOCALLY_ACCEPTED:
13925
+ this.onCallLocallyAnswered(event.data.call);
13926
+ break;
13927
+ case BRIDGE_ON_CALL_REJECTED:
13928
+ this.onCallRejected(event.data.call);
13929
+ break;
13930
+ case BRIDGE_ON_CALL_REMOTELY_ACCEPTED:
13931
+ this.onCallRemotelyAnswered(event.data.call);
13932
+ break;
13933
+ default:
13934
+ this.onUnHandledEvent(event);
13935
+ break;
13703
13936
  }
13704
13937
  }
13938
+
13939
+ _sendMessage(type , payload = {}) {
13940
+ if (!this.iframe || !this.iframeLoaded) {
13941
+ this._pendingMessages.push([type, payload]);
13942
+ return;
13943
+ }
13944
+
13945
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
13946
+ }
13705
13947
  }
13706
13948
 
13707
13949
  var Softphone$1 = new Softphone();