@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();
@@ -13654,40 +13654,159 @@ class Checker {
13654
13654
  //
13655
13655
  /* eslint-disable no-unused-vars */
13656
13656
  /* global window, document */
13657
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13658
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13659
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13660
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13661
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13662
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13663
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13664
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13665
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13666
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13667
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13668
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13669
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13670
+ const BRIDGE_ON_CALL_LOCALLY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_LOCALLY_ACCEPTED';
13671
+ const BRIDGE_ON_CALL_REJECTED = 'bridge/BRIDGE_ON_CALL_REJECTED';
13672
+ const BRIDGE_ON_CALL_REMOTELY_ACCEPTED = 'bridge/BRIDGE_ON_CALL_REMOTELY_ACCEPTED';
13673
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13674
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13675
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13676
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13677
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13678
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13679
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13680
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13681
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13682
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13683
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13684
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13685
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13686
+ const BRIDGE_ON_CARD_CANCELED = 'bridge/BRIDGE_ON_CARD_CANCELED';
13687
+ const BRIDGE_ENABLE_AGENT = 'bridge/BRIDGE_ENABLE_AGENT';
13688
+ const BRIDGE_SET_CARD_CONTENT = 'bridge/BRIDGE_SET_CARD_CONTENT';
13689
+ const BRIDGE_ENABLE_DEBUG = 'bridge/BRIDGE_ENABLE_DEBUG';
13690
+
13691
+ const BRIDGE_INJECT_CSS = 'bridge/BRIDGE_INJECT_CSS';
13692
+ const BRIDGE_CUSTOMIZE_APPEARANCE = 'bridge/BRIDGE_CUSTOMIZE_APPEARANCE';
13693
+
13657
13694
  const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13658
- const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13695
+ const SDK_ON_OUTGOING_CALL_MADE = 'sdk/SDK_ON_OUTGOING_CALL_MADE';
13659
13696
  const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13660
13697
  const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13661
13698
  const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13699
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13662
13700
 
13663
13701
  class Softphone {
13664
- url = 'https://softphone.wazo.io';
13665
- width = 500;
13666
- height = 600;
13667
- displayed = false;
13668
- iframe = null;
13702
+
13703
+
13704
+
13705
+
13706
+
13707
+
13708
+
13709
+ // Message waiting for the iframe to be loaded
13710
+
13669
13711
 
13670
13712
  onLinkEnabled(link ) {}
13713
+ onIFrameLoaded() {}
13671
13714
 
13672
- onCallMade(call ) {}
13715
+ onCallLocallyAnswered(call ) {}
13716
+ onCallRemotelyAnswered(call ) {}
13717
+ onOutgoingCallMade(call ) {}
13673
13718
  onCallIncoming(call ) {}
13719
+ onCallRejected(call ) {}
13674
13720
  onCallEnded(call , card , direction , fromExtension ) {}
13721
+
13722
+ onCardSaved(card ) {}
13723
+ onCardCanceled() {}
13675
13724
  onAuthenticated(session ) {}
13725
+ onLoggedOut() {}
13726
+
13727
+ onSearchOptions(fieldId , query ) {
13728
+ this.onOptionsResults(fieldId, []);
13729
+ }
13730
+
13731
+ onDisplayLinkedOption(optionId ) {}
13732
+ onWazoContactSearch(query ) {}
13733
+ onAgentLoggedIn() {}
13734
+ onAgentLoggedOut() {}
13735
+ onAgentPaused() {}
13736
+ onAgentResumed() {}
13737
+ onLanguageChanged(language ) {}
13738
+ onCallHeld() {}
13739
+ onCallResumed() {}
13740
+ onCallMuted() {}
13741
+ onCallUnMuted() {}
13742
+ onDtmfSent(tone ) {}
13743
+ onDirectTransfer(number ) {}
13744
+ onCreateIndirectTransfer(number ) {}
13745
+ onCancelIndirectTransfer() {}
13746
+ onConfirmIndirectTransfer() {}
13747
+ onIndirectCallMade(call ) {}
13748
+ onIndirectTransferDone(call ) {}
13749
+ onStartRecording() {}
13750
+ onStopRecording() {}
13751
+ onUnHandledEvent(event ) {}
13752
+
13753
+ init({
13754
+ url,
13755
+ width,
13756
+ height,
13757
+ server,
13758
+ port,
13759
+ language,
13760
+ wrapUpDuration,
13761
+ enableAgent = true,
13762
+ tenantId,
13763
+ debug = false,
13764
+ } = {}) {
13765
+ this.url = url || 'https://softphone.wazo.io';
13766
+ this.width = width || 500;
13767
+ this.height = height || 600;
13768
+ this.displayed = false;
13769
+ this.iframeLoaded = false;
13770
+
13771
+ this.iframeLoaded = false;
13772
+ this._pendingMessages = [];
13773
+ window.addEventListener('message', this._onMessage.bind(this), false);
13774
+
13775
+ if (!server) {
13776
+ // eslint-disable-next-line no-param-reassign
13777
+ server = 'stack.dev.wazo.io';
13778
+ }
13676
13779
 
13677
- init(url , width , height ) {
13678
- if (url) {
13679
- this.url = url;
13780
+ const config = { server };
13781
+ if (language) {
13782
+ config.language = language;
13783
+ }
13784
+ if (port) {
13785
+ config.port = port;
13680
13786
  }
13681
- if (width) {
13682
- this.width = width;
13787
+ if (tenantId) {
13788
+ config.tenantId = tenantId;
13683
13789
  }
13684
- if (height) {
13685
- this.height = height;
13790
+ if (wrapUpDuration) {
13791
+ config.wrapUpDuration = wrapUpDuration;
13686
13792
  }
13687
13793
 
13688
- window.addEventListener('message', this._onMessage.bind(this), false);
13794
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, { config });
13689
13795
 
13690
- this._createIframe();
13796
+ if (enableAgent) {
13797
+ this._sendMessage(BRIDGE_ENABLE_AGENT);
13798
+ }
13799
+
13800
+ if (debug) {
13801
+ this._sendMessage(BRIDGE_ENABLE_DEBUG);
13802
+ }
13803
+
13804
+ this._createIframe(() => {
13805
+ this.iframeLoaded = true;
13806
+ this._pendingMessages.forEach(([type, payload]) => this._sendMessage(type, payload));
13807
+
13808
+ this.onIFrameLoaded();
13809
+ });
13691
13810
  }
13692
13811
 
13693
13812
  parseLinks() {
@@ -13703,9 +13822,7 @@ class Softphone {
13703
13822
  makeCall(number ) {
13704
13823
  this.displaySoftphone();
13705
13824
 
13706
- if (this.iframe) {
13707
- this.iframe.contentWindow.postMessage({ type: SDK_CLICK_TO_CALL, number }, '*');
13708
- }
13825
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13709
13826
  }
13710
13827
 
13711
13828
  toggleSoftphoneDisplay() {
@@ -13714,8 +13831,6 @@ class Softphone {
13714
13831
  } else {
13715
13832
  this.displaySoftphone();
13716
13833
  }
13717
-
13718
- this.displayed = !this.displayed;
13719
13834
  }
13720
13835
 
13721
13836
  displaySoftphone() {
@@ -13726,15 +13841,42 @@ class Softphone {
13726
13841
  if (this.iframe) {
13727
13842
  this.iframe.style.display = 'block';
13728
13843
  }
13844
+
13845
+ this.displayed = true;
13729
13846
  }
13730
13847
 
13731
13848
  hideSoftphone() {
13732
13849
  if (this.iframe) {
13733
13850
  this.iframe.style.display = 'none';
13734
13851
  }
13852
+ this.displayed = false;
13853
+ }
13854
+
13855
+ optionsFetched(fieldId , options ) {
13856
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
13857
+ }
13858
+
13859
+ onOptionsResults(fieldId , options ) {
13860
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
13861
+ }
13862
+
13863
+ setFormSchema(schema , uiSchema ) {
13864
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
13865
+ }
13866
+
13867
+ setCardValue(field , value ) {
13868
+ this._sendMessage(BRIDGE_SET_CARD_CONTENT, { field, value });
13869
+ }
13870
+
13871
+ injectCss(css ) {
13872
+ this._sendMessage(BRIDGE_INJECT_CSS, { css });
13735
13873
  }
13736
13874
 
13737
- _createIframe() {
13875
+ customizeAppearance(themes , translations , assets ) {
13876
+ this._sendMessage(BRIDGE_CUSTOMIZE_APPEARANCE, { themes, translations, assets });
13877
+ }
13878
+
13879
+ _createIframe(cb = () => {}) {
13738
13880
  this.iframe = document.createElement('iframe');
13739
13881
  // $FlowFixMe
13740
13882
  this.iframe.width = this.width;
@@ -13746,10 +13888,13 @@ class Softphone {
13746
13888
  this.iframe.style.left = '0';
13747
13889
  this.iframe.style.bottom = '0';
13748
13890
  this.iframe.style.border = '1px solid #aaa';
13891
+ this.iframe.style.backgroundColor = 'white';
13749
13892
  this.iframe.src = this.url;
13750
13893
  this.iframe.style.display = 'none';
13751
13894
  this.iframe.id = 'wazo-softphone';
13752
13895
 
13896
+ this.iframe.onload = cb;
13897
+
13753
13898
  // $FlowFixMe
13754
13899
  document.body.appendChild(this.iframe);
13755
13900
  }
@@ -13776,8 +13921,8 @@ class Softphone {
13776
13921
  }
13777
13922
 
13778
13923
  switch (event.data.type) {
13779
- case SDK_ON_CALL_MADE:
13780
- this.onCallMade(event.data.callSession);
13924
+ case SDK_ON_OUTGOING_CALL_MADE:
13925
+ this.onOutgoingCallMade(event.data.callSession);
13781
13926
  break;
13782
13927
  case SDK_CALL_ENDED: {
13783
13928
  const { callSession, content, direction, userExtension } = event.data;
@@ -13792,8 +13937,105 @@ class Softphone {
13792
13937
  this._onAuthenticated(event.data.session);
13793
13938
  this.onAuthenticated(event.data.session);
13794
13939
  break;
13940
+ case SDK_LOGGED_OUT:
13941
+ this.onLoggedOut();
13942
+ break;
13943
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
13944
+ const { content } = event.data;
13945
+ this.onCardSaved(content);
13946
+ break;
13947
+ }
13948
+ case BRIDGE_SEARCH_OPTIONS: {
13949
+ const { fieldId, query } = event.data;
13950
+ this.onSearchOptions(fieldId, query);
13951
+ break;
13952
+ }
13953
+ case BRIDGE_DISPLAY_LINKED_OPTION:
13954
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
13955
+ break;
13956
+ case BRIDGE_WAZO_CONTACT_SEARCH:
13957
+ this.onWazoContactSearch(event.data.query);
13958
+ break;
13959
+ case BRIDGE_ON_AGENT_LOGGED_IN:
13960
+ this.onAgentLoggedIn();
13961
+ break;
13962
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
13963
+ this.onAgentLoggedOut();
13964
+ break;
13965
+ case BRIDGE_ON_AGENT_PAUSED:
13966
+ this.onAgentPaused();
13967
+ break;
13968
+ case BRIDGE_ON_AGENT_RESUMED:
13969
+ this.onAgentResumed();
13970
+ break;
13971
+ case BRIDGE_ON_LANGUAGE_CHANGED:
13972
+ this.onLanguageChanged(event.data.language);
13973
+ break;
13974
+ case BRIDGE_ON_CALL_HELD:
13975
+ this.onCallHeld();
13976
+ break;
13977
+ case BRIDGE_ON_CALL_RESUMED:
13978
+ this.onCallResumed();
13979
+ break;
13980
+ case BRIDGE_ON_CALL_MUTED:
13981
+ this.onCallMuted();
13982
+ break;
13983
+ case BRIDGE_ON_CALL_UN_MUTED:
13984
+ this.onCallUnMuted();
13985
+ break;
13986
+ case BRIDGE_ON_DTMF:
13987
+ this.onDtmfSent(event.data.tone);
13988
+ break;
13989
+ case BRIDGE_ON_DIRECT_TRANSFER:
13990
+ this.onDirectTransfer(event.data.number);
13991
+ break;
13992
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
13993
+ this.onCreateIndirectTransfer(event.data.number);
13994
+ break;
13995
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
13996
+ this.onCancelIndirectTransfer();
13997
+ break;
13998
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
13999
+ this.onConfirmIndirectTransfer();
14000
+ break;
14001
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
14002
+ this.onIndirectCallMade(event.data.call);
14003
+ break;
14004
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
14005
+ this.onIndirectTransferDone(event.data.call);
14006
+ break;
14007
+ case BRIDGE_ON_START_RECORDING:
14008
+ this.onStartRecording();
14009
+ break;
14010
+ case BRIDGE_ON_STOP_RECORDING:
14011
+ this.onStopRecording();
14012
+ break;
14013
+ case BRIDGE_ON_CARD_CANCELED:
14014
+ this.onCardCanceled();
14015
+ break;
14016
+ case BRIDGE_ON_CALL_LOCALLY_ACCEPTED:
14017
+ this.onCallLocallyAnswered(event.data.call);
14018
+ break;
14019
+ case BRIDGE_ON_CALL_REJECTED:
14020
+ this.onCallRejected(event.data.call);
14021
+ break;
14022
+ case BRIDGE_ON_CALL_REMOTELY_ACCEPTED:
14023
+ this.onCallRemotelyAnswered(event.data.call);
14024
+ break;
14025
+ default:
14026
+ this.onUnHandledEvent(event);
14027
+ break;
13795
14028
  }
13796
14029
  }
14030
+
14031
+ _sendMessage(type , payload = {}) {
14032
+ if (!this.iframe || !this.iframeLoaded) {
14033
+ this._pendingMessages.push([type, payload]);
14034
+ return;
14035
+ }
14036
+
14037
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
14038
+ }
13797
14039
  }
13798
14040
 
13799
14041
  var Softphone$1 = new Softphone();