This commit is contained in:
pedro-php 2025-06-13 13:14:04 -03:00
parent 7968057a82
commit 16a9d1faf5
12 changed files with 18 additions and 102 deletions

View File

@ -2,13 +2,15 @@ services:
api:
container_name: evolution_api_${ENVIROMNENT}
build: .
image: adaptweb/evolution-api:1.6.1
image: adaptweb/evolution-api:1.7.0
restart: always
depends_on:
- redis
- postgres
ports:
- ${MIRROR_PORT}:8080
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- evolution_instances:/evolution/instances
networks:

View File

@ -1,11 +0,0 @@
import { OfferCallDto } from '@api/dto/call.dto';
import { InstanceDto } from '@api/dto/instance.dto';
import { WAMonitoringService } from '@api/services/monitor.service';
export class CallController {
constructor(private readonly waMonitor: WAMonitoringService) {}
public async offerCall({ instanceName }: InstanceDto, data: OfferCallDto) {
return await this.waMonitor.waInstances[instanceName].offerCall(data);
}
}

View File

@ -782,9 +782,6 @@ export class EvolutionStartupService extends ChannelStartupService {
public async fetchProfile() {
throw new BadRequestException('Method not available on Evolution Channel');
}
public async offerCall() {
throw new BadRequestException('Method not available on WhatsApp Business API');
}
public async sendPresence() {
throw new BadRequestException('Method not available on Evolution Channel');
}

View File

@ -1410,9 +1410,6 @@ export class BusinessStartupService extends ChannelStartupService {
public async fetchProfile() {
throw new BadRequestException('Method not available on WhatsApp Business API');
}
public async offerCall() {
throw new BadRequestException('Method not available on WhatsApp Business API');
}
public async sendPresence() {
throw new BadRequestException('Method not available on WhatsApp Business API');
}

View File

@ -1,5 +1,4 @@
import { getCollectionsDto } from '@api/dto/business.dto';
import { OfferCallDto } from '@api/dto/call.dto';
import {
ArchiveChatDto,
BlockUserDto,
@ -383,7 +382,7 @@ export class BaileysStartupService extends ChannelStartupService {
qrcodeTerminal.generate(qr, { small: true }, (qrcode) =>
this.logger.log(
`\n{ instance: ${this.instance.name} pairingCode: ${this.instance.qrcode.pairingCode}, qrcodeCount: ${this.instance.qrcode.count} }\n` +
qrcode,
qrcode,
),
);
@ -1024,18 +1023,18 @@ export class BaileysStartupService extends ChannelStartupService {
const messagesRepository: Set<string> = new Set(
chatwootImport.getRepositoryMessagesCache(instance) ??
(
await this.prismaRepository.message.findMany({
select: { key: true },
where: { instanceId: this.instanceId },
})
).map((message) => {
const key = message.key as {
id: string;
};
(
await this.prismaRepository.message.findMany({
select: { key: true },
where: { instanceId: this.instanceId },
})
).map((message) => {
const key = message.key as {
id: string;
};
return key.id;
}),
return key.id;
}),
);
if (chatwootImport.getRepositoryMessagesCache(instance) === null) {
@ -1651,13 +1650,10 @@ export class BaileysStartupService extends ChannelStartupService {
private readonly groupHandler = {
'groups.upsert': (groupMetadata: GroupMetadata[]) => {
console.dir({groupMetadata}, { depth: null });
this.sendDataWebhook(Events.GROUPS_UPSERT, groupMetadata);
},
'groups.update': (groupMetadataUpdate: Partial<GroupMetadata>[]) => {
console.dir({groupMetadataUpdate}, { depth: null });
console.dir("1-groupMetadataUpdate");
this.sendDataWebhook(Events.GROUPS_UPDATE, groupMetadataUpdate);
groupMetadataUpdate.forEach((group) => {
@ -1672,7 +1668,6 @@ export class BaileysStartupService extends ChannelStartupService {
participants: string[];
action: ParticipantAction;
}) => {
console.dir(participantsUpdate, { depth: null })
this.sendDataWebhook(Events.GROUP_PARTICIPANTS_UPDATE, participantsUpdate);
this.updateGroupMetadataCache(participantsUpdate.id);
@ -2002,19 +1997,6 @@ export class BaileysStartupService extends ChannelStartupService {
}
}
public async offerCall({ number, isVideo, callDuration }: OfferCallDto) {
const jid = createJid(number);
try {
const call = await this.client.offerCall(jid, isVideo);
setTimeout(() => this.client.terminateCall(call.id, call.to), callDuration * 1000);
return call;
} catch (error) {
return error;
}
}
private async sendMessage(
sender: string,
message: any,
@ -3448,7 +3430,6 @@ export class BaileysStartupService extends ChannelStartupService {
const filteredNumbers = numbersToVerify.filter(
(jid) => !cachedNumbers.some((cached) => cached.jidOptions.includes(jid)),
);
const verify = await this.client.onWhatsApp(...filteredNumbers);
const users: OnWhatsAppDto[] = await Promise.all(
jids.users.map(async (user) => {
@ -3515,7 +3496,6 @@ export class BaileysStartupService extends ChannelStartupService {
};
}),
);
await saveOnWhatsappCache(users.filter((user) => user.exists).map((user) => ({ remoteJid: user.jid })));
onWhatsapp.push(...users);

View File

@ -113,7 +113,6 @@ export class EventManager {
local?: boolean;
integration?: string[];
}): Promise<void> {
if(eventData.event === 'groups.update') console.dir(3);
await this.websocket.emit(eventData);
await this.rabbitmq.emit(eventData);
await this.nats.emit(eventData);

View File

@ -65,13 +65,10 @@ export class WebhookController extends EventController implements EventControlle
local,
integration,
}: EmitData): Promise<void> {
if(event === 'groups.update')console.dir(4);
if (integration && !integration.includes('webhook')) {
return;
}
if(event === 'groups.update')console.dir(5);
const instance = (await this.get(instanceName)) as wa.LocalWebHook;
if(event === 'groups.update')console.dir(6);
const webhookConfig = configService.get<Webhook>('WEBHOOK');
const webhookLocal = instance?.events;
const webhookHeaders = instance?.headers;
@ -90,42 +87,29 @@ export class WebhookController extends EventController implements EventControlle
server_url: serverUrl,
apikey: apiKey,
};
if(event === 'groups.update')console.dir(7);
if (local && instance?.enabled) {
if(event === 'groups.update')console.dir(7.1);
console.dir({webhookLocal, we})
if (Array.isArray(webhookLocal) && webhookLocal.includes(we)) {
let baseURL: string;
if(event === 'groups.update')console.dir(7.2);
if (instance?.webhookByEvents) {
if(event === 'groups.update')console.dir(7.21);
baseURL = `${instance?.url}/${transformedWe}`;
} else {
if(event === 'groups.update')console.dir(7.22);
baseURL = instance?.url;
}
if(event === 'groups.update')console.dir(7.3);
if (enabledLog) {
const logData = {
local: `${origin}.sendData-Webhook`,
url: baseURL,
...webhookData,
};
if(event === 'groups.update')console.dir(7.4);
this.logger.log(logData);
}
try {
if(event === 'groups.update')console.dir(7.5);
if (instance?.enabled && regex.test(instance.url)) {
if(event === 'groups.update')console.dir(7.6);
const httpService = axios.create({
baseURL,
headers: webhookHeaders as Record<string, string> | undefined,
});
if(event === 'groups.update')console.dir(7.7);
console.dir({url:`${origin}.sendData-Webhook`, baseURL, serverUrl}, {depth: null})
if(event === 'groups.update')console.dir(7.8);
await this.retryWebhookRequest(httpService, webhookData, `${origin}.sendData-Webhook`, baseURL, serverUrl);
}
} catch (error) {
@ -144,7 +128,6 @@ export class WebhookController extends EventController implements EventControlle
}
}
}
if(event === 'groups.update')console.dir(8);
if (webhookConfig.GLOBAL?.ENABLED) {
if (webhookConfig.EVENTS[we]) {
let globalURL = webhookConfig.GLOBAL.URL;
@ -191,7 +174,6 @@ export class WebhookController extends EventController implements EventControlle
}
}
}
if(event === 'groups.update')console.dir(9)
}
private async retryWebhookRequest(

View File

@ -1,25 +0,0 @@
import { RouterBroker } from '@api/abstract/abstract.router';
import { OfferCallDto } from '@api/dto/call.dto';
import { callController } from '@api/server.module';
import { offerCallSchema } from '@validate/validate.schema';
import { RequestHandler, Router } from 'express';
import { HttpStatus } from './index.router';
export class CallRouter extends RouterBroker {
constructor(...guards: RequestHandler[]) {
super();
this.router.post(this.routerPath('offer'), ...guards, async (req, res) => {
const response = await this.dataValidate<OfferCallDto>({
request: req,
schema: offerCallSchema,
ClassRef: OfferCallDto,
execute: (instance, data) => callController.offerCall(instance, data),
});
return res.status(HttpStatus.CREATED).json(response);
});
}
public readonly router: Router = Router();
}

View File

@ -12,7 +12,6 @@ import mimeTypes from 'mime-types';
import path from 'path';
import { BusinessRouter } from './business.router';
import { CallRouter } from './call.router';
import { ChatRouter } from './chat.router';
import { GroupRouter } from './group.router';
import { HealthRouter } from './health.router';
@ -58,8 +57,6 @@ router.get('/assets/*', (req, res) => {
}
});
console.dir(new HealthRouter().router, { depth: null });
router
.use((req, res, next) => telemetry.collectTelemetry(req, res, next))
@ -85,7 +82,6 @@ router
.use('', new HealthRouter().router)
.use('/instance', new InstanceRouter(configService, ...guards).router)
.use('/message', new MessageRouter(...guards).router)
.use('/call', new CallRouter(...guards).router)
.use('/chat', new ChatRouter(...guards).router)
.use('/business', new BusinessRouter(...guards).router)
.use('/group', new GroupRouter(...guards).router)

View File

@ -4,7 +4,6 @@ import { eventEmitter } from '@config/event.config';
import { Logger } from '@config/logger.config';
import { BusinessController } from './controllers/business.controller';
import { CallController } from './controllers/call.controller';
import { ChatController } from './controllers/chat.controller';
import { GroupController } from './controllers/group.controller';
import { HealthController } from './controllers/health.controller';
@ -98,7 +97,6 @@ export const instanceController = new InstanceController(
providerFiles,
);
export const sendMessageController = new SendMessageController(waMonitor);
export const callController = new CallController(waMonitor);
export const chatController = new ChatController(waMonitor);
export const businessController = new BusinessController(waMonitor);
export const groupController = new GroupController(waMonitor);

View File

@ -439,7 +439,6 @@ export class ChannelStartupService {
const expose = this.configService.get<Auth>('AUTHENTICATION').EXPOSE_IN_FETCH_INSTANCES;
const instanceApikey = this.token || 'Apikey not found';
if(event === Events.GROUPS_UPDATE )console.dir(2);
await eventManager.emit({
instanceName: this.instance.name,
origin: ChannelStartupService.name,

View File

@ -40,7 +40,9 @@ class Redis {
});
try {
this.client.connect().then(()=> {this.logger.verbose("Attempting redis connection")});
this.client.connect().then(() => {
this.logger.verbose('Attempting redis connection');
});
this.connected = true;
} catch (e) {
this.connected = false;