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