@ipcom/asterisk-ari 0.0.39 → 0.0.40

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.
package/dist/esm/index.js CHANGED
@@ -1789,34 +1789,31 @@ var AriClient = class {
1789
1789
  `WebSocket client para o app '${app}' n\xE3o est\xE1 conectado.`
1790
1790
  );
1791
1791
  }
1792
- console.log(`[${app}] Registrando eventos do WebSocket...`);
1793
1792
  const eventHandlers = {
1794
- PlaybackFinished: (data) => {
1793
+ PlaybackStarted: (data) => {
1795
1794
  if ("playbackId" in data) {
1796
- this.playbacks.emitPlaybackEvent("PlaybackFinished", data);
1795
+ console.log(`[${app}] PlaybackStarted:`, data);
1797
1796
  }
1798
- console.log(`[${app}] PlaybackFinished:`, data);
1799
- this.emitGlobalEvent(data);
1800
1797
  },
1801
- ChannelStateChange: (data) => {
1802
- if ("channel" in data) {
1803
- console.log(`[${app}] Estado do canal alterado:`, data.channel);
1804
- this.channels.emitChannelEvent("ChannelStateChange", data);
1798
+ PlaybackFinished: (data) => {
1799
+ if ("playbackId" in data) {
1800
+ console.log(`[${app}] PlaybackFinished:`, data);
1805
1801
  }
1806
- this.emitGlobalEvent(data);
1807
1802
  },
1808
- BridgeDestroyed: (data) => {
1809
- if ("bridge" in data) {
1810
- console.log(`[${app}] Bridge destru\xEDda:`, data.bridge);
1803
+ ChannelDtmfReceived: (data) => {
1804
+ if (data.type === "ChannelDtmfReceived" && "digit" in data) {
1805
+ console.log(`[${app}] DTMF recebido: ${data.digit}`);
1806
+ } else {
1807
+ console.warn(
1808
+ `[${app}] Evento inesperado em ChannelDtmfReceived`,
1809
+ data
1810
+ );
1811
1811
  }
1812
- this.emitGlobalEvent(data);
1813
1812
  },
1814
- ChannelDtmfReceived: (data) => {
1813
+ ChannelStateChange: (data) => {
1815
1814
  if ("channel" in data) {
1816
- console.log(`[${app}] DTMF recebido no canal:`, data.channel);
1817
- this.channels.emitChannelEvent("ChannelDtmfReceived", data);
1815
+ console.log(`[${app}] Estado do canal alterado:`, data.channel);
1818
1816
  }
1819
- this.emitGlobalEvent(data);
1820
1817
  }
1821
1818
  };
1822
1819
  for (const [eventType, handler] of Object.entries(eventHandlers)) {
@@ -1860,6 +1857,17 @@ var AriClient = class {
1860
1857
  unregisterPlaybackListener(eventType, playbackId, callback) {
1861
1858
  this.playbacks.unregisterListener(eventType, playbackId, callback);
1862
1859
  }
1860
+ registerListener(eventType, condition, callback) {
1861
+ if (!this.isWebSocketConnected()) {
1862
+ throw new Error("WebSocket n\xE3o est\xE1 conectado.");
1863
+ }
1864
+ const handler = (eventData) => {
1865
+ if (eventData.type === eventType && condition(eventData)) {
1866
+ callback(eventData);
1867
+ }
1868
+ };
1869
+ this.wsClient?.on(eventType, handler);
1870
+ }
1863
1871
  /**
1864
1872
  * Registers a listener for playback events.
1865
1873
  * The listener is triggered for events such as "PlaybackFinished".
@@ -1869,7 +1877,34 @@ var AriClient = class {
1869
1877
  * @param callback - The callback function to execute when the event occurs.
1870
1878
  */
1871
1879
  registerPlaybackListener(eventType, playbackId, callback) {
1872
- this.playbacks.registerListener(eventType, playbackId, callback);
1880
+ if (!this.isWebSocketConnected()) {
1881
+ throw new Error("WebSocket n\xE3o est\xE1 conectado.");
1882
+ }
1883
+ console.log(
1884
+ `Registrando listener para evento ${eventType} com playbackId ${playbackId}`
1885
+ );
1886
+ const handler = (eventData) => {
1887
+ if ("playbackId" in eventData && eventData.playbackId === playbackId) {
1888
+ callback(eventData);
1889
+ }
1890
+ };
1891
+ this.wsClient?.on(eventType, handler);
1892
+ }
1893
+ registerChannelListener(eventType, channelId, callback) {
1894
+ if (!this.isWebSocketConnected()) {
1895
+ throw new Error("WebSocket n\xE3o est\xE1 conectado.");
1896
+ }
1897
+ console.log(
1898
+ `Registrando listener para evento ${eventType} com channelId ${channelId}`
1899
+ );
1900
+ const handler = (eventData) => {
1901
+ if (eventData.type === eventType && "channel" in eventData && eventData.channel?.id === channelId) {
1902
+ callback(
1903
+ eventData
1904
+ );
1905
+ }
1906
+ };
1907
+ this.wsClient?.on(eventType, handler);
1873
1908
  }
1874
1909
  /**
1875
1910
  * Checks if a listener is already registered for a specific event and playback.