mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-19 03:42:23 -06:00
Enhance settings and integrate Baileys controller for WhatsApp functionality
- Added `wavoipToken` field to `Setting` model in both MySQL and PostgreSQL schemas. - Updated `package.json` and `package-lock.json` to include `mime-types` and `socket.io-client` dependencies. - Introduced `BaileysController` and `BaileysRouter` for handling WhatsApp interactions. - Refactored media type handling to use `mime-types` instead of `mime` across various services. - Updated DTOs and validation schemas to accommodate the new `wavoipToken` field. - Implemented voice call functionalities using the Wavoip service in the Baileys integration. - Enhanced event handling in the WebSocket controller to support new features.
This commit is contained in:
@@ -13,6 +13,7 @@ export type EmitData = {
|
||||
sender: string;
|
||||
apiKey?: string;
|
||||
local?: boolean;
|
||||
integration?: string[];
|
||||
};
|
||||
|
||||
export interface EventControllerInterface {
|
||||
@@ -23,7 +24,7 @@ export interface EventControllerInterface {
|
||||
|
||||
export class EventController {
|
||||
public prismaRepository: PrismaRepository;
|
||||
private waMonitor: WAMonitoringService;
|
||||
protected waMonitor: WAMonitoringService;
|
||||
private integrationStatus: boolean;
|
||||
private integrationName: string;
|
||||
|
||||
|
||||
@@ -99,6 +99,7 @@ export class EventManager {
|
||||
sender: string;
|
||||
apiKey?: string;
|
||||
local?: boolean;
|
||||
integration?: string[];
|
||||
}): Promise<void> {
|
||||
await this.websocket.emit(eventData);
|
||||
await this.rabbitmq.emit(eventData);
|
||||
|
||||
@@ -120,7 +120,11 @@ export class PusherController extends EventController implements EventController
|
||||
sender,
|
||||
apiKey,
|
||||
local,
|
||||
integration,
|
||||
}: EmitData): Promise<void> {
|
||||
if (integration && !integration.includes('pusher')) {
|
||||
return;
|
||||
}
|
||||
if (!this.status) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,12 @@ export class RabbitmqController extends EventController implements EventControll
|
||||
dateTime,
|
||||
sender,
|
||||
apiKey,
|
||||
integration,
|
||||
}: EmitData): Promise<void> {
|
||||
if (integration && !integration.includes('rabbitmq')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.status) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,12 @@ export class SqsController extends EventController implements EventControllerInt
|
||||
dateTime,
|
||||
sender,
|
||||
apiKey,
|
||||
integration,
|
||||
}: EmitData): Promise<void> {
|
||||
if (integration && !integration.includes('sqs')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.status) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -64,7 +64,12 @@ export class WebhookController extends EventController implements EventControlle
|
||||
sender,
|
||||
apiKey,
|
||||
local,
|
||||
integration,
|
||||
}: EmitData): Promise<void> {
|
||||
if (integration && !integration.includes('webhook')) {
|
||||
return;
|
||||
}
|
||||
|
||||
const instance = (await this.get(instanceName)) as wa.LocalWebHook;
|
||||
|
||||
const webhookConfig = configService.get<Webhook>('WEBHOOK');
|
||||
@@ -85,7 +90,7 @@ export class WebhookController extends EventController implements EventControlle
|
||||
apikey: apiKey,
|
||||
};
|
||||
|
||||
if ((local && !instance) || !instance?.enabled) {
|
||||
if (local && instance?.enabled) {
|
||||
if (Array.isArray(webhookLocal) && webhookLocal.includes(we)) {
|
||||
let baseURL: string;
|
||||
|
||||
|
||||
@@ -35,6 +35,16 @@ export class WebsocketController extends EventController implements EventControl
|
||||
socket.on('disconnect', () => {
|
||||
this.logger.info('User disconnected');
|
||||
});
|
||||
|
||||
socket.on('sendNode', async (data) => {
|
||||
try {
|
||||
await this.waMonitor.waInstances[data.instanceId].baileysSendNode(data.stanza);
|
||||
this.logger.info('Node sent successfully');
|
||||
} catch (error) {
|
||||
this.logger.error('Error sending node:');
|
||||
this.logger.error(error);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
this.logger.info('Socket.io initialized');
|
||||
@@ -65,7 +75,12 @@ export class WebsocketController extends EventController implements EventControl
|
||||
dateTime,
|
||||
sender,
|
||||
apiKey,
|
||||
integration,
|
||||
}: EmitData): Promise<void> {
|
||||
if (integration && !integration.includes('websocket')) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.status) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user