@ipcom/asterisk-ari 0.0.75 → 0.0.77
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/cjs/index.cjs +74 -9
- package/dist/cjs/index.cjs.map +2 -2
- package/dist/esm/index.js +74 -9
- package/dist/esm/index.js.map +2 -2
- package/dist/types/ari-client/baseClient.d.ts +21 -3
- package/dist/types/ari-client/baseClient.d.ts.map +1 -1
- package/dist/types/ari-client/resources/channels.d.ts.map +1 -1
- package/dist/types/ari-client/resources/playbacks.d.ts +4 -0
- package/dist/types/ari-client/resources/playbacks.d.ts.map +1 -1
- package/dist/types/ari-client/websocketClient.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -4,6 +4,8 @@ import axios from "axios";
|
|
|
4
4
|
var BaseClient = class {
|
|
5
5
|
client;
|
|
6
6
|
eventEmitter = new EventEmitter();
|
|
7
|
+
wsClients = /* @__PURE__ */ new Map();
|
|
8
|
+
// Gerencia os WebSocket clients
|
|
7
9
|
constructor(baseUrl, username, password) {
|
|
8
10
|
this.client = axios.create({
|
|
9
11
|
baseURL: baseUrl,
|
|
@@ -44,9 +46,46 @@ var BaseClient = class {
|
|
|
44
46
|
const response = await this.client.delete(path);
|
|
45
47
|
return response.data;
|
|
46
48
|
}
|
|
49
|
+
// Gerenciamento de WebSocket clients
|
|
47
50
|
/**
|
|
48
|
-
*
|
|
51
|
+
* Adiciona um WebSocket client ao gerenciador.
|
|
52
|
+
* @param app - Nome do aplicativo ou contexto associado.
|
|
53
|
+
* @param wsClient - Instância do WebSocketClient.
|
|
49
54
|
*/
|
|
55
|
+
addWebSocketClient(app, wsClient) {
|
|
56
|
+
if (this.wsClients.has(app)) {
|
|
57
|
+
throw new Error(`J\xE1 existe um WebSocket client registrado para '${app}'`);
|
|
58
|
+
}
|
|
59
|
+
this.wsClients.set(app, wsClient);
|
|
60
|
+
console.log(`WebSocket client adicionado para '${app}'`);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Remove um WebSocket client do gerenciador.
|
|
64
|
+
* @param app - Nome do aplicativo ou contexto associado.
|
|
65
|
+
*/
|
|
66
|
+
removeWebSocketClient(app) {
|
|
67
|
+
if (!this.wsClients.has(app)) {
|
|
68
|
+
throw new Error(`Nenhum WebSocket client encontrado para '${app}'`);
|
|
69
|
+
}
|
|
70
|
+
this.wsClients.delete(app);
|
|
71
|
+
console.log(`WebSocket client removido para '${app}'`);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Obtém todos os WebSocket clients.
|
|
75
|
+
* @returns Um Map contendo todos os WebSocket clients registrados.
|
|
76
|
+
*/
|
|
77
|
+
getWebSocketClients() {
|
|
78
|
+
return this.wsClients;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Obtém um WebSocket client específico.
|
|
82
|
+
* @param app - Nome do aplicativo ou contexto associado.
|
|
83
|
+
* @returns O WebSocket client correspondente.
|
|
84
|
+
*/
|
|
85
|
+
getWebSocketClient(app) {
|
|
86
|
+
return this.wsClients.get(app);
|
|
87
|
+
}
|
|
88
|
+
// Gerenciamento de eventos WebSocket
|
|
50
89
|
onWebSocketEvent(callback) {
|
|
51
90
|
console.log("Registrando callback para eventos do WebSocket");
|
|
52
91
|
this.eventEmitter.on("websocketEvent", (event) => {
|
|
@@ -54,9 +93,6 @@ var BaseClient = class {
|
|
|
54
93
|
callback(event);
|
|
55
94
|
});
|
|
56
95
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Emite eventos do WebSocket.
|
|
59
|
-
*/
|
|
60
96
|
emitWebSocketEvent(event) {
|
|
61
97
|
console.log("Emitindo evento do WebSocket:", event);
|
|
62
98
|
this.eventEmitter.emit("websocketEvent", event);
|
|
@@ -314,11 +350,11 @@ var ChannelInstance = class extends EventEmitter2 {
|
|
|
314
350
|
);
|
|
315
351
|
if (!wsClient) {
|
|
316
352
|
throw new Error(
|
|
317
|
-
`Nenhum WebSocket conectado dispon\xEDvel para o canal: ${this.
|
|
353
|
+
`Nenhum WebSocket conectado dispon\xEDvel para o canal: ${this.id}`
|
|
318
354
|
);
|
|
319
355
|
}
|
|
320
356
|
wsClient.on("message", (event) => {
|
|
321
|
-
if (isChannelEvent(event)) {
|
|
357
|
+
if (isChannelEvent(event, this.id)) {
|
|
322
358
|
console.log(`Evento recebido no ChannelInstance: ${event.type}`, event);
|
|
323
359
|
this.emit(event.type, event);
|
|
324
360
|
}
|
|
@@ -769,8 +805,21 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
769
805
|
this.baseClient = baseClient;
|
|
770
806
|
this.playbackId = playbackId;
|
|
771
807
|
this.id = playbackId || `playback-${Date.now()}`;
|
|
772
|
-
this.baseClient.
|
|
773
|
-
|
|
808
|
+
const wsClients = this.baseClient.getWebSocketClients();
|
|
809
|
+
const wsClient = Array.from(wsClients.values()).find(
|
|
810
|
+
(client) => client.isConnected()
|
|
811
|
+
);
|
|
812
|
+
if (!wsClient) {
|
|
813
|
+
throw new Error(
|
|
814
|
+
`Nenhum WebSocket conectado dispon\xEDvel para o playback: ${this.id}`
|
|
815
|
+
);
|
|
816
|
+
}
|
|
817
|
+
wsClient.on("message", (event) => {
|
|
818
|
+
if (this.isPlaybackEvent(event)) {
|
|
819
|
+
console.log(
|
|
820
|
+
`Evento recebido no PlaybackInstance: ${event.type}`,
|
|
821
|
+
event
|
|
822
|
+
);
|
|
774
823
|
this.emit(event.type, event);
|
|
775
824
|
}
|
|
776
825
|
});
|
|
@@ -781,7 +830,15 @@ var PlaybackInstance = class extends EventEmitter3 {
|
|
|
781
830
|
* Verifica se o evento é relacionado a um playback.
|
|
782
831
|
*/
|
|
783
832
|
isPlaybackEvent(event) {
|
|
784
|
-
|
|
833
|
+
const isPlaybackType = event?.type.startsWith("Playback");
|
|
834
|
+
const isPlaybackEvent = isPlaybackType && "playbackId" in event && event.playbackId === this.id;
|
|
835
|
+
if (!isPlaybackEvent) {
|
|
836
|
+
console.log(
|
|
837
|
+
`Evento ignorado no isPlaybackEvent: tipo=${event.type}, playback esperado=${this.id}, evento recebido=`,
|
|
838
|
+
event
|
|
839
|
+
);
|
|
840
|
+
}
|
|
841
|
+
return isPlaybackEvent;
|
|
785
842
|
}
|
|
786
843
|
/**
|
|
787
844
|
* Obtém os detalhes do playback.
|
|
@@ -850,6 +907,12 @@ var Playbacks = class extends EventEmitter3 {
|
|
|
850
907
|
}
|
|
851
908
|
});
|
|
852
909
|
}
|
|
910
|
+
/**
|
|
911
|
+
* Obtém os clientes WebSocket disponíveis.
|
|
912
|
+
*/
|
|
913
|
+
getWebSocketClients() {
|
|
914
|
+
return this.client.getWebSocketClients();
|
|
915
|
+
}
|
|
853
916
|
/**
|
|
854
917
|
* Verifica se o evento é relacionado a um playback.
|
|
855
918
|
*/
|
|
@@ -1070,6 +1133,7 @@ var WebSocketClient = class extends EventEmitter4 {
|
|
|
1070
1133
|
const decodedData = JSON.parse(rawData.toString());
|
|
1071
1134
|
if (decodedData?.type) {
|
|
1072
1135
|
this.emit(decodedData.type, decodedData);
|
|
1136
|
+
this.emit("message", decodedData);
|
|
1073
1137
|
} else {
|
|
1074
1138
|
console.warn("Mensagem recebida sem tipo:", decodedData);
|
|
1075
1139
|
}
|
|
@@ -1187,6 +1251,7 @@ var AriClient = class {
|
|
|
1187
1251
|
this.channelInstances.set(channelId, channelInstance);
|
|
1188
1252
|
}
|
|
1189
1253
|
event.instanceChannel = this.channelInstances.get(channelId);
|
|
1254
|
+
event.instanceChannel?.emit(event.type, event);
|
|
1190
1255
|
}
|
|
1191
1256
|
}
|
|
1192
1257
|
callback(event);
|