@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.
@@ -1811,34 +1811,31 @@ var AriClient = class {
1811
1811
  `WebSocket client para o app '${app}' n\xE3o est\xE1 conectado.`
1812
1812
  );
1813
1813
  }
1814
- console.log(`[${app}] Registrando eventos do WebSocket...`);
1815
1814
  const eventHandlers = {
1816
- PlaybackFinished: (data) => {
1815
+ PlaybackStarted: (data) => {
1817
1816
  if ("playbackId" in data) {
1818
- this.playbacks.emitPlaybackEvent("PlaybackFinished", data);
1817
+ console.log(`[${app}] PlaybackStarted:`, data);
1819
1818
  }
1820
- console.log(`[${app}] PlaybackFinished:`, data);
1821
- this.emitGlobalEvent(data);
1822
1819
  },
1823
- ChannelStateChange: (data) => {
1824
- if ("channel" in data) {
1825
- console.log(`[${app}] Estado do canal alterado:`, data.channel);
1826
- this.channels.emitChannelEvent("ChannelStateChange", data);
1820
+ PlaybackFinished: (data) => {
1821
+ if ("playbackId" in data) {
1822
+ console.log(`[${app}] PlaybackFinished:`, data);
1827
1823
  }
1828
- this.emitGlobalEvent(data);
1829
1824
  },
1830
- BridgeDestroyed: (data) => {
1831
- if ("bridge" in data) {
1832
- console.log(`[${app}] Bridge destru\xEDda:`, data.bridge);
1825
+ ChannelDtmfReceived: (data) => {
1826
+ if (data.type === "ChannelDtmfReceived" && "digit" in data) {
1827
+ console.log(`[${app}] DTMF recebido: ${data.digit}`);
1828
+ } else {
1829
+ console.warn(
1830
+ `[${app}] Evento inesperado em ChannelDtmfReceived`,
1831
+ data
1832
+ );
1833
1833
  }
1834
- this.emitGlobalEvent(data);
1835
1834
  },
1836
- ChannelDtmfReceived: (data) => {
1835
+ ChannelStateChange: (data) => {
1837
1836
  if ("channel" in data) {
1838
- console.log(`[${app}] DTMF recebido no canal:`, data.channel);
1839
- this.channels.emitChannelEvent("ChannelDtmfReceived", data);
1837
+ console.log(`[${app}] Estado do canal alterado:`, data.channel);
1840
1838
  }
1841
- this.emitGlobalEvent(data);
1842
1839
  }
1843
1840
  };
1844
1841
  for (const [eventType, handler] of Object.entries(eventHandlers)) {
@@ -1882,6 +1879,17 @@ var AriClient = class {
1882
1879
  unregisterPlaybackListener(eventType, playbackId, callback) {
1883
1880
  this.playbacks.unregisterListener(eventType, playbackId, callback);
1884
1881
  }
1882
+ registerListener(eventType, condition, callback) {
1883
+ if (!this.isWebSocketConnected()) {
1884
+ throw new Error("WebSocket n\xE3o est\xE1 conectado.");
1885
+ }
1886
+ const handler = (eventData) => {
1887
+ if (eventData.type === eventType && condition(eventData)) {
1888
+ callback(eventData);
1889
+ }
1890
+ };
1891
+ this.wsClient?.on(eventType, handler);
1892
+ }
1885
1893
  /**
1886
1894
  * Registers a listener for playback events.
1887
1895
  * The listener is triggered for events such as "PlaybackFinished".
@@ -1891,7 +1899,34 @@ var AriClient = class {
1891
1899
  * @param callback - The callback function to execute when the event occurs.
1892
1900
  */
1893
1901
  registerPlaybackListener(eventType, playbackId, callback) {
1894
- this.playbacks.registerListener(eventType, playbackId, callback);
1902
+ if (!this.isWebSocketConnected()) {
1903
+ throw new Error("WebSocket n\xE3o est\xE1 conectado.");
1904
+ }
1905
+ console.log(
1906
+ `Registrando listener para evento ${eventType} com playbackId ${playbackId}`
1907
+ );
1908
+ const handler = (eventData) => {
1909
+ if ("playbackId" in eventData && eventData.playbackId === playbackId) {
1910
+ callback(eventData);
1911
+ }
1912
+ };
1913
+ this.wsClient?.on(eventType, handler);
1914
+ }
1915
+ registerChannelListener(eventType, channelId, callback) {
1916
+ if (!this.isWebSocketConnected()) {
1917
+ throw new Error("WebSocket n\xE3o est\xE1 conectado.");
1918
+ }
1919
+ console.log(
1920
+ `Registrando listener para evento ${eventType} com channelId ${channelId}`
1921
+ );
1922
+ const handler = (eventData) => {
1923
+ if (eventData.type === eventType && "channel" in eventData && eventData.channel?.id === channelId) {
1924
+ callback(
1925
+ eventData
1926
+ );
1927
+ }
1928
+ };
1929
+ this.wsClient?.on(eventType, handler);
1895
1930
  }
1896
1931
  /**
1897
1932
  * Checks if a listener is already registered for a specific event and playback.