mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-23 04:22:02 -06:00
fixes
This commit is contained in:
parent
7968057a82
commit
16a9d1faf5
@ -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:
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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');
|
||||
}
|
||||
|
@ -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');
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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(
|
||||
|
@ -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();
|
||||
}
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
4
src/cache/rediscache.client.ts
vendored
4
src/cache/rediscache.client.ts
vendored
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user