@ipcom/asterisk-ari 0.0.121 → 0.0.122
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
CHANGED
|
@@ -2032,7 +2032,6 @@ var AriClient = class {
|
|
|
2032
2032
|
this.asterisk = new Asterisk(this.baseClient);
|
|
2033
2033
|
this.bridges = new Bridges(this.baseClient);
|
|
2034
2034
|
}
|
|
2035
|
-
scopedListeners = /* @__PURE__ */ new Map();
|
|
2036
2035
|
eventListeners = /* @__PURE__ */ new Map();
|
|
2037
2036
|
wsClients = /* @__PURE__ */ new Map();
|
|
2038
2037
|
// Map para armazenar conexões por app
|
|
@@ -2062,16 +2061,6 @@ var AriClient = class {
|
|
|
2062
2061
|
}
|
|
2063
2062
|
}
|
|
2064
2063
|
}
|
|
2065
|
-
async reconnectWebSocket(app) {
|
|
2066
|
-
console.log(`Tentando reconectar o WebSocket para o app '${app}'...`);
|
|
2067
|
-
try {
|
|
2068
|
-
await this.connectSingleWebSocket(app);
|
|
2069
|
-
this.processPendingListeners();
|
|
2070
|
-
console.log(`Reconex\xE3o bem-sucedida para o app '${app}'.`);
|
|
2071
|
-
} catch (error) {
|
|
2072
|
-
console.error(`Erro ao reconectar o WebSocket para '${app}':`, error);
|
|
2073
|
-
}
|
|
2074
|
-
}
|
|
2075
2064
|
channels;
|
|
2076
2065
|
endpoints;
|
|
2077
2066
|
applications;
|
|
@@ -2083,53 +2072,49 @@ var AriClient = class {
|
|
|
2083
2072
|
getWebSocketClients() {
|
|
2084
2073
|
return this.wsClients;
|
|
2085
2074
|
}
|
|
2086
|
-
addScopedListener(app, eventType, instanceId, callback) {
|
|
2087
|
-
const key = `${app}:${instanceId}:${eventType}`;
|
|
2088
|
-
if (this.scopedListeners.has(key)) {
|
|
2089
|
-
console.warn(`Listener escopado j\xE1 registrado para '${key}'.`);
|
|
2090
|
-
return;
|
|
2091
|
-
}
|
|
2092
|
-
const scopedListener = (data) => {
|
|
2093
|
-
if (data.application === app && (data.type.startsWith("Channel") && "channel" in data && data.channel?.id === instanceId || data.type.startsWith("Playback") && "playbackId" in data && data.playbackId === instanceId)) {
|
|
2094
|
-
callback(data);
|
|
2095
|
-
}
|
|
2096
|
-
};
|
|
2097
|
-
this.scopedListeners.set(key, scopedListener);
|
|
2098
|
-
const wsClient = this.wsClients.get(app);
|
|
2099
|
-
wsClient?.on(eventType, scopedListener);
|
|
2100
|
-
console.log(`Listener escopado adicionado para '${key}'.`);
|
|
2101
|
-
}
|
|
2102
|
-
removeScopedListener(app, eventType, instanceId) {
|
|
2103
|
-
const key = `${app}:${instanceId}:${eventType}`;
|
|
2104
|
-
const scopedListener = this.scopedListeners.get(key);
|
|
2105
|
-
if (scopedListener) {
|
|
2106
|
-
const wsClient = this.wsClients.get(app);
|
|
2107
|
-
wsClient?.off(eventType, scopedListener);
|
|
2108
|
-
this.scopedListeners.delete(key);
|
|
2109
|
-
console.log(`Listener escopado removido para '${key}'.`);
|
|
2110
|
-
}
|
|
2111
|
-
}
|
|
2112
2075
|
/**
|
|
2113
2076
|
* Registra listeners globais para eventos de WebSocket.
|
|
2114
2077
|
*/
|
|
2115
2078
|
on(eventType, callback, app) {
|
|
2116
2079
|
if (!app) {
|
|
2117
2080
|
throw new Error(
|
|
2118
|
-
"O nome do app \xE9 obrigat\xF3rio para registrar um listener."
|
|
2081
|
+
"O nome do app \xE9 obrigat\xF3rio para registrar um listener de evento."
|
|
2119
2082
|
);
|
|
2120
2083
|
}
|
|
2084
|
+
console.log(
|
|
2085
|
+
`Registrando listener para evento '${eventType}' no app '${app}'.`
|
|
2086
|
+
);
|
|
2121
2087
|
const callbackKey = `${app}:${eventType}`;
|
|
2122
2088
|
if (this.eventListeners.has(callbackKey)) {
|
|
2123
|
-
console.log(
|
|
2089
|
+
console.log(
|
|
2090
|
+
`Listener para evento '${eventType}' j\xE1 est\xE1 registrado no app '${app}'. Ignorando duplicata.`
|
|
2091
|
+
);
|
|
2124
2092
|
return;
|
|
2125
2093
|
}
|
|
2094
|
+
const wrappedCallback = (event) => {
|
|
2095
|
+
if (isChannelEvent(event)) {
|
|
2096
|
+
const channelId = event.channel.id;
|
|
2097
|
+
if (channelId) {
|
|
2098
|
+
if (!this.channelInstances.has(channelId)) {
|
|
2099
|
+
const channelInstance = this.createChannelInstance(channelId, app);
|
|
2100
|
+
this.channelInstances.set(channelId, channelInstance);
|
|
2101
|
+
}
|
|
2102
|
+
event.instanceChannel = this.channelInstances.get(channelId);
|
|
2103
|
+
event.instanceChannel?.emit(event.type, event);
|
|
2104
|
+
}
|
|
2105
|
+
}
|
|
2106
|
+
callback(event);
|
|
2107
|
+
};
|
|
2126
2108
|
const wsClient = this.wsClients.get(app);
|
|
2127
2109
|
if (wsClient) {
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2110
|
+
const scopedEvent = `${app}:${eventType}`;
|
|
2111
|
+
wsClient.on(scopedEvent, wrappedCallback);
|
|
2112
|
+
this.eventListeners.set(callbackKey, wrappedCallback);
|
|
2113
|
+
console.log(
|
|
2114
|
+
`Listener para evento '${eventType}' registrado com sucesso no app '${app}'.`
|
|
2115
|
+
);
|
|
2131
2116
|
} else {
|
|
2132
|
-
console.warn(`WebSocket para '${app}' n\xE3o est\xE1 conectado.`);
|
|
2117
|
+
console.warn(`WebSocket para o app '${app}' n\xE3o est\xE1 conectado.`);
|
|
2133
2118
|
}
|
|
2134
2119
|
}
|
|
2135
2120
|
removeListener(eventType, app) {
|
|
@@ -2241,11 +2226,6 @@ var AriClient = class {
|
|
|
2241
2226
|
if (!app) {
|
|
2242
2227
|
throw new Error("O nome do aplicativo \xE9 obrigat\xF3rio.");
|
|
2243
2228
|
}
|
|
2244
|
-
console.log(`Conectando WebSocket para o app '${app}'...`);
|
|
2245
|
-
if (this.wsClients.has(app)) {
|
|
2246
|
-
console.log(`WebSocket para '${app}' j\xE1 est\xE1 conectado.`);
|
|
2247
|
-
return;
|
|
2248
|
-
}
|
|
2249
2229
|
if (this.webSocketReady.get(app)) {
|
|
2250
2230
|
console.log(`Conex\xE3o WebSocket para '${app}' j\xE1 est\xE1 ativa.`);
|
|
2251
2231
|
return this.webSocketReady.get(app);
|
|
@@ -2309,26 +2289,27 @@ var AriClient = class {
|
|
|
2309
2289
|
`WebSocket client para o app '${app}' n\xE3o est\xE1 conectado.`
|
|
2310
2290
|
);
|
|
2311
2291
|
}
|
|
2292
|
+
console.log(
|
|
2293
|
+
"**************** INTEGRANDO EVENTOS DE PLAYBACK **************"
|
|
2294
|
+
);
|
|
2295
|
+
console.log(wsClient.eventNames());
|
|
2296
|
+
console.log(
|
|
2297
|
+
"**************** INTEGRANDO EVENTOS DE PLAYBACK **************"
|
|
2298
|
+
);
|
|
2312
2299
|
if (wsClient.listenerCount("PlaybackStarted") > 0) {
|
|
2313
2300
|
return;
|
|
2314
2301
|
}
|
|
2315
2302
|
const eventHandlers = {
|
|
2316
|
-
StasisStart: (data) => {
|
|
2317
|
-
console.log(`[${app}] Evento 'StasisStart' recebido:`, data);
|
|
2318
|
-
},
|
|
2319
2303
|
PlaybackStarted: (data) => {
|
|
2320
2304
|
if ("playbackId" in data) {
|
|
2321
|
-
console.log(`[${app}] PlaybackStarted:`, data);
|
|
2322
2305
|
}
|
|
2323
2306
|
},
|
|
2324
2307
|
PlaybackFinished: (data) => {
|
|
2325
2308
|
if ("playbackId" in data) {
|
|
2326
|
-
console.log(`[${app}] PlaybackFinished:`, data);
|
|
2327
2309
|
}
|
|
2328
2310
|
},
|
|
2329
2311
|
ChannelDtmfReceived: (data) => {
|
|
2330
2312
|
if (data.type === "ChannelDtmfReceived" && "digit" in data) {
|
|
2331
|
-
console.log(`[${app}] DTMF recebido: ${data.digit}`);
|
|
2332
2313
|
} else {
|
|
2333
2314
|
console.warn(
|
|
2334
2315
|
`[${app}] Evento inesperado em ChannelDtmfReceived`,
|
|
@@ -2338,7 +2319,6 @@ var AriClient = class {
|
|
|
2338
2319
|
},
|
|
2339
2320
|
ChannelStateChange: (data) => {
|
|
2340
2321
|
if ("channel" in data) {
|
|
2341
|
-
console.log(`[${app}] Estado do canal alterado:`, data.channel);
|
|
2342
2322
|
}
|
|
2343
2323
|
}
|
|
2344
2324
|
};
|