@wazo/sdk 0.37.42 → 0.38.1

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 (109) hide show
  1. package/README.md +218 -0
  2. package/dist/wazo-sdk.js +5 -5
  3. package/esm/__tests__/api-client.test.js +12 -7
  4. package/esm/__tests__/web-rtc-client.test.js +17 -10
  5. package/esm/api/agentd.js +12 -7
  6. package/esm/api/amid.js +12 -7
  7. package/esm/api/application.js +12 -7
  8. package/esm/api/auth.js +12 -7
  9. package/esm/api/call-logd.js +12 -7
  10. package/esm/api/calld.js +12 -7
  11. package/esm/api/chatd.js +12 -7
  12. package/esm/api/confd.js +12 -7
  13. package/esm/api/ctid-ng.js +12 -7
  14. package/esm/api/dird.js +12 -7
  15. package/esm/api/webhookd.js +12 -7
  16. package/esm/api-client.js +12 -7
  17. package/esm/checker/Checker.js +18 -11
  18. package/esm/checker/checks/aor.js +12 -7
  19. package/esm/checker/checks/api.js +12 -7
  20. package/esm/checker/checks/index.js +18 -11
  21. package/esm/checker/checks/wazo-websocket.js +13 -8
  22. package/esm/checker/checks/webrtc-transport.js +17 -10
  23. package/esm/checker/checks/webrtc.js +17 -10
  24. package/esm/domain/AdHocAPIConference.js +12 -7
  25. package/esm/domain/Features.js +12 -7
  26. package/esm/domain/Phone/CTIPhone.js +12 -7
  27. package/esm/domain/Phone/WebRTCPhone.js +12 -7
  28. package/esm/index.js +347 -11
  29. package/esm/lib/WazoSessionDescriptionHandler.js +12 -7
  30. package/esm/service/CallApi.js +12 -7
  31. package/esm/service/IssueReporter.js +12 -7
  32. package/esm/service/__tests__/IssueReporter.test.js +18 -7
  33. package/esm/service/getApiClient.js +12 -7
  34. package/esm/simple/Auth.js +347 -11
  35. package/esm/simple/Configuration.js +347 -11
  36. package/esm/simple/Directory.js +12 -7
  37. package/esm/simple/Phone.js +347 -11
  38. package/esm/simple/Softphone.js +329 -0
  39. package/esm/simple/Websocket.js +13 -8
  40. package/esm/simple/index.js +347 -11
  41. package/esm/simple/room/LocalParticipant.js +347 -11
  42. package/esm/simple/room/Participant.js +347 -11
  43. package/esm/simple/room/RemoteParticipant.js +347 -11
  44. package/esm/simple/room/Room.js +347 -11
  45. package/esm/simple/room/SipRoom.js +347 -11
  46. package/esm/simple/room/Stream.js +347 -11
  47. package/esm/simple/room/__tests__/RemoteParticipant.test.js +347 -11
  48. package/esm/simple/utils.js +347 -11
  49. package/esm/utils/__tests__/api-requester.test.js +12 -7
  50. package/esm/utils/api-requester.js +12 -7
  51. package/esm/web-rtc-client.js +17 -10
  52. package/esm/websocket-client.js +13 -8
  53. package/lib/__tests__/api-client.test.js +12 -7
  54. package/lib/__tests__/web-rtc-client.test.js +17 -10
  55. package/lib/api/agentd.js +12 -7
  56. package/lib/api/amid.js +12 -7
  57. package/lib/api/application.js +12 -7
  58. package/lib/api/auth.js +12 -7
  59. package/lib/api/call-logd.js +12 -7
  60. package/lib/api/calld.js +12 -7
  61. package/lib/api/chatd.js +12 -7
  62. package/lib/api/confd.js +12 -7
  63. package/lib/api/ctid-ng.js +12 -7
  64. package/lib/api/dird.js +12 -7
  65. package/lib/api/webhookd.js +12 -7
  66. package/lib/api-client.js +12 -7
  67. package/lib/checker/Checker.js +18 -11
  68. package/lib/checker/checks/aor.js +12 -7
  69. package/lib/checker/checks/api.js +12 -7
  70. package/lib/checker/checks/index.js +18 -11
  71. package/lib/checker/checks/wazo-websocket.js +13 -8
  72. package/lib/checker/checks/webrtc-transport.js +17 -10
  73. package/lib/checker/checks/webrtc.js +17 -10
  74. package/lib/domain/AdHocAPIConference.js +12 -7
  75. package/lib/domain/Features.js +12 -7
  76. package/lib/domain/Phone/CTIPhone.js +12 -7
  77. package/lib/domain/Phone/WebRTCPhone.js +12 -7
  78. package/lib/index.js +347 -11
  79. package/lib/lib/WazoSessionDescriptionHandler.js +12 -7
  80. package/lib/service/CallApi.js +12 -7
  81. package/lib/service/IssueReporter.js +12 -7
  82. package/lib/service/__tests__/IssueReporter.test.js +18 -7
  83. package/lib/service/getApiClient.js +12 -7
  84. package/lib/simple/Auth.js +347 -11
  85. package/lib/simple/Configuration.js +347 -11
  86. package/lib/simple/Directory.js +12 -7
  87. package/lib/simple/Phone.js +347 -11
  88. package/lib/simple/Softphone.js +331 -0
  89. package/lib/simple/Websocket.js +13 -8
  90. package/lib/simple/index.js +347 -11
  91. package/lib/simple/room/LocalParticipant.js +347 -11
  92. package/lib/simple/room/Participant.js +347 -11
  93. package/lib/simple/room/RemoteParticipant.js +347 -11
  94. package/lib/simple/room/Room.js +347 -11
  95. package/lib/simple/room/SipRoom.js +347 -11
  96. package/lib/simple/room/Stream.js +347 -11
  97. package/lib/simple/room/__tests__/RemoteParticipant.test.js +347 -11
  98. package/lib/simple/utils.js +347 -11
  99. package/lib/utils/__tests__/api-requester.test.js +12 -7
  100. package/lib/utils/api-requester.js +12 -7
  101. package/lib/web-rtc-client.js +17 -10
  102. package/lib/websocket-client.js +13 -8
  103. package/package.json +1 -1
  104. package/src/service/IssueReporter.js +12 -7
  105. package/src/service/__tests__/IssueReporter.test.js +6 -0
  106. package/src/simple/Softphone.js +327 -0
  107. package/src/simple/index.js +2 -0
  108. package/src/web-rtc-client.js +5 -3
  109. package/src/websocket-client.js +1 -1
@@ -1919,13 +1919,9 @@ class IssueReporter {
1919
1919
 
1920
1920
  setTimeout(() => {
1921
1921
  if (isArray) {
1922
- payload = payload.map(message => {
1923
- message._retry = retry + 1;
1924
- return message;
1925
- });
1926
- } else {
1927
- // $FlowFixMe
1928
- payload._retry = retry + 1;
1922
+ payload = payload.map(message => this._writeRetryCount(message, retry + 1));
1923
+ } else if (payload && typeof payload === 'object') {
1924
+ payload = this._writeRetryCount(payload, retry + 1);
1929
1925
  }
1930
1926
 
1931
1927
  this._sendDebugToGrafana(payload, retry + 1);
@@ -1933,6 +1929,15 @@ class IssueReporter {
1933
1929
  });
1934
1930
  }
1935
1931
 
1932
+ _writeRetryCount(message , count ) {
1933
+ if (message && typeof message === 'object') {
1934
+ // $FlowFixMe
1935
+ message._retry = count;
1936
+ }
1937
+
1938
+ return message;
1939
+ }
1940
+
1936
1941
  _isLevelAbove(level1 , level2 ) {
1937
1942
  const index1 = LOG_LEVELS.indexOf(level1);
1938
1943
  const index2 = LOG_LEVELS.indexOf(level2);
@@ -7184,8 +7189,10 @@ class WebRTCClient extends Emitter {
7184
7189
  conference: isConference,
7185
7190
  };
7186
7191
 
7187
- // Avoid sdh to created a new stream
7188
- session.sessionDescriptionHandler.localMediaStreamConstraints = options.constraints;
7192
+ // Avoid sdh to create a new stream
7193
+ if (session.sessionDescriptionHandler) {
7194
+ session.sessionDescriptionHandler.localMediaStreamConstraints = options.constraints;
7195
+ }
7189
7196
 
7190
7197
  // Send re-INVITE
7191
7198
  return session.invite(options);
@@ -8028,7 +8035,7 @@ class WebRTCClient extends Emitter {
8028
8035
  }
8029
8036
 
8030
8037
  async _onHeartbeatTimeout() {
8031
- 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 });
8032
8039
 
8033
8040
  if (this.heartbeatTimeoutCb) {
8034
8041
  this.heartbeatTimeoutCb();
@@ -11196,7 +11203,7 @@ class WebSocketClient extends Emitter {
11196
11203
  this.close();
11197
11204
  }
11198
11205
  const url = `wss://${this.host || ''}/api/websocketd/?token=${this.token || ''}&version=${this.version}`;
11199
- logger$6.log('Wazo WS url computed to reconnect', { url });
11206
+ logger$6.info('Wazo WS url computed to reconnect', { url });
11200
11207
 
11201
11208
  return url;
11202
11209
  }
@@ -13654,6 +13661,334 @@ class Checker {
13654
13661
  }
13655
13662
  }
13656
13663
 
13664
+ //
13665
+ /* eslint-disable no-unused-vars */
13666
+ /* global window, document */
13667
+ const BRIDGE_CONFIG_RETRIEVED = 'bridge/CONFIG_RETRIEVED';
13668
+ const BRIDGE_ENABLE_CARD = 'bridge/ENABLE_CARD';
13669
+ const BRIDGE_CHANGE_REQUIRED_SUBSCRIPTION_TYPE = 'bridge/CHANGE_REQUIRED_SUBSCRIPTION_TYPE';
13670
+ const BRIDGE_CREATE_OR_UPDATE_CARD = 'bridge/BRIDGE_CREATE_OR_UPDATE_CARD';
13671
+ const BRIDGE_OPTIONS_FETCHED = 'bridge/BRIDGE_OPTIONS_FETCHED';
13672
+ const BRIDGE_OPTIONS_FOUND = 'bridge/BRIDGE_OPTIONS_FOUND';
13673
+ const BRIDGE_SEARCH_OPTIONS = 'bridge/BRIDGE_SEARCH_OPTIONS';
13674
+ const BRIDGE_DISPLAY_LINKED_OPTION = 'bridge/DISPLAY_LINKED_OPTION';
13675
+ const BRIDGE_UPDATE_FORM_SCHEMA = 'bridge/BRIDGE_UPDATE_FORM_SCHEMA';
13676
+ const BRIDGE_WAZO_CONTACT_SEARCH = 'bridge/BRIDGE_WAZO_CONTACT_SEARCH';
13677
+ const BRIDGE_ON_AGENT_LOGGED_IN = 'bridge/BRIDGE_ON_AGENT_LOGGED_IN';
13678
+ const BRIDGE_ON_AGENT_LOGGED_OUT = 'bridge/BRIDGE_ON_AGENT_LOGGED_OUT';
13679
+ const BRIDGE_ON_AGENT_PAUSED = 'bridge/BRIDGE_ON_AGENT_PAUSED';
13680
+ const BRIDGE_ON_AGENT_RESUMED = 'bridge/BRIDGE_ON_AGENT_RESUMED';
13681
+ const BRIDGE_ON_LANGUAGE_CHANGED = 'bridge/BRIDGE_ON_LANGUAGE_CHANGED';
13682
+ const BRIDGE_ON_CALL_HELD = 'bridge/BRIDGE_ON_CALL_HELD';
13683
+ const BRIDGE_ON_CALL_RESUMED = 'bridge/BRIDGE_ON_CALL_RESUMED';
13684
+ const BRIDGE_ON_CALL_MUTED = 'bridge/BRIDGE_ON_CALL_MUTED';
13685
+ const BRIDGE_ON_CALL_UN_MUTED = 'bridge/BRIDGE_ON_CALL_UN_MUTED';
13686
+ const BRIDGE_ON_DTMF = 'bridge/BRIDGE_ON_DTMF';
13687
+ const BRIDGE_ON_DIRECT_TRANSFER = 'bridge/BRIDGE_ON_DIRECT_TRANSFER';
13688
+ const BRIDGE_ON_CREATE_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CREATE_INDIRECT_TRANSFER';
13689
+ const BRIDGE_ON_CANCEL_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CANCEL_INDIRECT_TRANSFER';
13690
+ const BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER = 'bridge/BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER';
13691
+ const BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE';
13692
+ const BRIDGE_ON_INDIRECT_TRANSFER_DONE = 'bridge/BRIDGE_ON_INDIRECT_TRANSFER_DONE';
13693
+ const BRIDGE_ON_START_RECORDING = 'bridge/BRIDGE_ON_START_RECORDING';
13694
+ const BRIDGE_ON_STOP_RECORDING = 'bridge/BRIDGE_ON_STOP_RECORDING';
13695
+
13696
+ const SDK_CLICK_TO_CALL = 'sdk/CLICK_TO_CALL';
13697
+ const SDK_ON_CALL_MADE = 'sdk/SDK_ON_CALL_MADE';
13698
+ const SDK_CALL_ENDED = 'sdk/ON_CALL_ENDED';
13699
+ const SDK_CALL_INCOMING = 'sdk/SDK_CALL_INCOMING';
13700
+ const SDK_AUTHENTICATED = 'sdk/SDK_AUTHENTICATED';
13701
+ const SDK_LOGGED_OUT = 'sdk/SDK_LOGGED_OUT';
13702
+
13703
+ class Softphone {
13704
+ url = 'https://softphone.wazo.io';
13705
+ width = 500;
13706
+ height = 600;
13707
+ displayed = false;
13708
+ iframe = null;
13709
+
13710
+ onLinkEnabled(link ) {}
13711
+ onIFrameLoaded() {}
13712
+
13713
+ onCallMade(call ) {}
13714
+ onCallIncoming(call ) {}
13715
+ onCallEnded(call , card , direction , fromExtension ) {}
13716
+ onCardSaved(card ) {}
13717
+ onAuthenticated(session ) {}
13718
+ onLoggedOut() {}
13719
+ onSearchOptions(fieldId , query ) {}
13720
+ onDisplayLinkedOption(optionId ) {}
13721
+ onWazoContactSearch(query ) {}
13722
+ onAgentLoggedIn() {}
13723
+ onAgentLoggedOut() {}
13724
+ onAgentPaused() {}
13725
+ onAgentResumed() {}
13726
+ onLanguageChanged(language ) {}
13727
+ onCallHeld() {}
13728
+ onCallResumed() {}
13729
+ onCallMuted() {}
13730
+ onCallUnMuted() {}
13731
+ onDtmfSent(tone ) {}
13732
+ onDirectTransfer(number ) {}
13733
+ onCreateIndirectTransfer(number ) {}
13734
+ onCancelIndirectTransfer() {}
13735
+ onConfirmIndirectTransfer() {}
13736
+ onIndirectCallMade(call ) {}
13737
+ onIndirectTransferDone(call ) {}
13738
+ onStartRecording() {}
13739
+ onStopRecording() {}
13740
+ onUnHandledEvent(event ) {}
13741
+
13742
+ init({ url, width, height, server, port, language, wrapUpDuration, shouldDisplayLinkedEntities,
13743
+ allowContactCreation, withCard, subscriptionType, enableAgent } = {}) {
13744
+ if (url) {
13745
+ this.url = url;
13746
+ }
13747
+ if (width) {
13748
+ this.width = width;
13749
+ }
13750
+ if (height) {
13751
+ this.height = height;
13752
+ }
13753
+
13754
+ window.addEventListener('message', this._onMessage.bind(this), false);
13755
+
13756
+ if (!server) {
13757
+ // eslint-disable-next-line no-param-reassign
13758
+ server = 'stack.dev.wazo.io';
13759
+ }
13760
+
13761
+ this._createIframe(() => {
13762
+ this._sendMessage(BRIDGE_CONFIG_RETRIEVED, {
13763
+ config: {
13764
+ server,
13765
+ port,
13766
+ language,
13767
+ wrapUpDuration,
13768
+ shouldDisplayLinkedEntities,
13769
+ allowContactCreation,
13770
+ },
13771
+ });
13772
+
13773
+ if (withCard) {
13774
+ this._sendMessage(BRIDGE_ENABLE_CARD);
13775
+ }
13776
+
13777
+ if (subscriptionType) {
13778
+ this._sendMessage(BRIDGE_CHANGE_REQUIRED_SUBSCRIPTION_TYPE, { subscriptionType });
13779
+ }
13780
+
13781
+ this.onIFrameLoaded();
13782
+ });
13783
+ }
13784
+
13785
+ parseLinks() {
13786
+ const links = this._getLinks();
13787
+
13788
+ links.forEach(link => {
13789
+ link.setAttribute('data-wazo-parsed', true);
13790
+ link.addEventListener('click', this._onLinkClick.bind(this));
13791
+ this.onLinkEnabled(link);
13792
+ });
13793
+ }
13794
+
13795
+ makeCall(number ) {
13796
+ this.displaySoftphone();
13797
+
13798
+ this._sendMessage(SDK_CLICK_TO_CALL, { number });
13799
+ }
13800
+
13801
+ toggleSoftphoneDisplay() {
13802
+ if (this.displayed) {
13803
+ this.hideSoftphone();
13804
+ } else {
13805
+ this.displaySoftphone();
13806
+ }
13807
+ }
13808
+
13809
+ displaySoftphone() {
13810
+ if (!this.iframe) {
13811
+ this._createIframe();
13812
+ }
13813
+
13814
+ if (this.iframe) {
13815
+ this.iframe.style.display = 'block';
13816
+ }
13817
+
13818
+ this.displayed = true;
13819
+ }
13820
+
13821
+ hideSoftphone() {
13822
+ if (this.iframe) {
13823
+ this.iframe.style.display = 'none';
13824
+ }
13825
+ this.displayed = false;
13826
+ }
13827
+
13828
+ optionsFetched(fieldId , options ) {
13829
+ this._sendMessage(BRIDGE_OPTIONS_FETCHED, { fieldId, options });
13830
+ }
13831
+
13832
+ onOptionsResults(fieldId , options ) {
13833
+ this._sendMessage(BRIDGE_OPTIONS_FOUND, { fieldId, options });
13834
+ }
13835
+
13836
+ setFormSchema(schema , uiSchema ) {
13837
+ this._sendMessage(BRIDGE_UPDATE_FORM_SCHEMA, { schema, uiSchema });
13838
+ }
13839
+
13840
+ _createIframe(cb = () => {}) {
13841
+ this.iframe = document.createElement('iframe');
13842
+ // $FlowFixMe
13843
+ this.iframe.width = this.width;
13844
+ // $FlowFixMe
13845
+ this.iframe.height = this.height;
13846
+ // $FlowFixMe
13847
+ this.iframe.allow = 'camera *; microphone *; autoplay *; display-capture *';
13848
+ this.iframe.style.position = 'absolute';
13849
+ this.iframe.style.left = '0';
13850
+ this.iframe.style.bottom = '0';
13851
+ this.iframe.style.border = '1px solid #aaa';
13852
+ this.iframe.style.backgroundColor = 'white';
13853
+ this.iframe.src = this.url;
13854
+ this.iframe.style.display = 'none';
13855
+ this.iframe.id = 'wazo-softphone';
13856
+
13857
+ this.iframe.onload = cb;
13858
+
13859
+ // $FlowFixMe
13860
+ document.body.appendChild(this.iframe);
13861
+ }
13862
+
13863
+ _getLinks() {
13864
+ return [].slice.call(document.querySelectorAll('a:not([data-wazo-parsed])'), 0)
13865
+ .filter(link => link.href.indexOf('tel:') === 0 || link.href.indexOf('callto:') === 0);
13866
+ }
13867
+
13868
+ _onLinkClick(e ) {
13869
+ e.preventDefault();
13870
+ const number = e.target.href.split(':')[1];
13871
+
13872
+ this.makeCall(number);
13873
+ }
13874
+
13875
+ _onAuthenticated() {
13876
+ this.parseLinks();
13877
+ }
13878
+
13879
+ _onMessage(event ) {
13880
+ if (!event.data) {
13881
+ return;
13882
+ }
13883
+
13884
+ switch (event.data.type) {
13885
+ case SDK_ON_CALL_MADE:
13886
+ this.onCallMade(event.data.callSession);
13887
+ break;
13888
+ case SDK_CALL_ENDED: {
13889
+ const { callSession, content, direction, userExtension } = event.data;
13890
+ this.onCallEnded(callSession, content, direction, userExtension);
13891
+ break;
13892
+ }
13893
+ case SDK_CALL_INCOMING:
13894
+ this.onCallIncoming(event.data.callSession);
13895
+ break;
13896
+ case SDK_AUTHENTICATED:
13897
+ // $FlowFixMe
13898
+ this._onAuthenticated(event.data.session);
13899
+ this.onAuthenticated(event.data.session);
13900
+ break;
13901
+ case SDK_LOGGED_OUT:
13902
+ this.onLoggedOut();
13903
+ break;
13904
+ case BRIDGE_CREATE_OR_UPDATE_CARD: {
13905
+ const { content } = event.data;
13906
+ this.onCardSaved(content);
13907
+ break;
13908
+ }
13909
+ case BRIDGE_SEARCH_OPTIONS: {
13910
+ const { fieldId, query } = event.data;
13911
+ this.onSearchOptions(fieldId, query);
13912
+ break;
13913
+ }
13914
+ case BRIDGE_DISPLAY_LINKED_OPTION:
13915
+ this.onDisplayLinkedOption(event.data.linkedOptionId);
13916
+ break;
13917
+ case BRIDGE_WAZO_CONTACT_SEARCH:
13918
+ this.onWazoContactSearch(event.data.query);
13919
+ break;
13920
+ case BRIDGE_ON_AGENT_LOGGED_IN:
13921
+ this.onAgentLoggedIn();
13922
+ break;
13923
+ case BRIDGE_ON_AGENT_LOGGED_OUT:
13924
+ this.onAgentLoggedOut();
13925
+ break;
13926
+ case BRIDGE_ON_AGENT_PAUSED:
13927
+ this.onAgentPaused();
13928
+ break;
13929
+ case BRIDGE_ON_AGENT_RESUMED:
13930
+ this.onAgentResumed();
13931
+ break;
13932
+ case BRIDGE_ON_LANGUAGE_CHANGED:
13933
+ this.onLanguageChanged(event.data.language);
13934
+ break;
13935
+ case BRIDGE_ON_CALL_HELD:
13936
+ this.onCallHeld();
13937
+ break;
13938
+ case BRIDGE_ON_CALL_RESUMED:
13939
+ this.onCallResumed();
13940
+ break;
13941
+ case BRIDGE_ON_CALL_MUTED:
13942
+ this.onCallMuted();
13943
+ break;
13944
+ case BRIDGE_ON_CALL_UN_MUTED:
13945
+ this.onCallUnMuted();
13946
+ break;
13947
+ case BRIDGE_ON_DTMF:
13948
+ this.onDtmfSent(event.data.tone);
13949
+ break;
13950
+ case BRIDGE_ON_DIRECT_TRANSFER:
13951
+ this.onDirectTransfer(event.data.number);
13952
+ break;
13953
+ case BRIDGE_ON_CREATE_INDIRECT_TRANSFER:
13954
+ this.onCreateIndirectTransfer(event.data.number);
13955
+ break;
13956
+ case BRIDGE_ON_CANCEL_INDIRECT_TRANSFER:
13957
+ this.onCancelIndirectTransfer();
13958
+ break;
13959
+ case BRIDGE_ON_CONFIRM_INDIRECT_TRANSFER:
13960
+ this.onConfirmIndirectTransfer();
13961
+ break;
13962
+ case BRIDGE_ON_INDIRECT_TRANSFER_CALL_MADE:
13963
+ this.onIndirectCallMade(event.data.call);
13964
+ break;
13965
+ case BRIDGE_ON_INDIRECT_TRANSFER_DONE:
13966
+ this.onIndirectTransferDone(event.data.call);
13967
+ break;
13968
+ case BRIDGE_ON_START_RECORDING:
13969
+ this.onStartRecording();
13970
+ break;
13971
+ case BRIDGE_ON_STOP_RECORDING:
13972
+ this.onStopRecording();
13973
+ break;
13974
+ default:
13975
+ this.onUnHandledEvent(event);
13976
+ break;
13977
+ }
13978
+ }
13979
+
13980
+ _sendMessage(type , payload = {}) {
13981
+ if (!this.iframe) {
13982
+ console.warn(`Could not send message of type ${type} to the Wazo Softphone, iframe not created yet`);
13983
+ return;
13984
+ }
13985
+
13986
+ this.iframe.contentWindow.postMessage({ type, ...payload }, '*');
13987
+ }
13988
+ }
13989
+
13990
+ var Softphone$1 = new Softphone();
13991
+
13657
13992
  /* global window */
13658
13993
 
13659
13994
  const Wazo = {
@@ -13674,6 +14009,7 @@ const Wazo = {
13674
14009
  loggerFor: IssueReporter$1.loggerFor.bind(IssueReporter$1),
13675
14010
  Features: Features$1,
13676
14011
  Checker,
14012
+ Softphone: Softphone$1,
13677
14013
 
13678
14014
  // Domain
13679
14015
  domain: {
@@ -402,13 +402,9 @@ class IssueReporter {
402
402
 
403
403
  setTimeout(() => {
404
404
  if (isArray) {
405
- payload = payload.map(message => {
406
- message._retry = retry + 1;
407
- return message;
408
- });
409
- } else {
410
- // $FlowFixMe
411
- payload._retry = retry + 1;
405
+ payload = payload.map(message => this._writeRetryCount(message, retry + 1));
406
+ } else if (payload && typeof payload === 'object') {
407
+ payload = this._writeRetryCount(payload, retry + 1);
412
408
  }
413
409
 
414
410
  this._sendDebugToGrafana(payload, retry + 1);
@@ -416,6 +412,15 @@ class IssueReporter {
416
412
  });
417
413
  }
418
414
 
415
+ _writeRetryCount(message , count ) {
416
+ if (message && typeof message === 'object') {
417
+ // $FlowFixMe
418
+ message._retry = count;
419
+ }
420
+
421
+ return message;
422
+ }
423
+
419
424
  _isLevelAbove(level1 , level2 ) {
420
425
  const index1 = LOG_LEVELS.indexOf(level1);
421
426
  const index2 = LOG_LEVELS.indexOf(level2);