chore: Add webhookUrl to Message model, DTOs, and services

Adds webhookUrl field to Message model, SendMessageDto, SendTemplateDto, SendContactDto, and related services to enable sending messages to a specified webhook URL. This change allows for more flexible message handling and delivery options.

Modified files:
- prisma/postgresql-schema.prisma
- src/api/dto/sendMessage.dto.ts
- src/api/services/channels/whatsapp.business.service.ts
- src/validate/message.schema.ts

Untracked files:
- prisma/migrations/20240723200254_add_webhookurl_on_message/
This commit is contained in:
Davidson Gomes
2024-07-23 17:13:37 -03:00
parent 50591e9ed6
commit 4746d3991e
5 changed files with 16 additions and 0 deletions

View File

@@ -548,6 +548,10 @@ export class BusinessStartupService extends ChannelStartupService {
await this.prismaRepository.messageUpdate.create({
data: message,
});
if (findMessage.webhookUrl) {
await axios.post(findMessage.webhookUrl, message);
}
}
}
}
@@ -636,6 +640,7 @@ export class BusinessStartupService extends ChannelStartupService {
protected async sendMessageWithTyping(number: string, message: any, options?: Options, isIntegration = false) {
try {
let quoted: any;
let webhookUrl: any;
const linkPreview = options?.linkPreview != false ? undefined : false;
if (options?.quoted) {
const m = options?.quoted;
@@ -648,6 +653,9 @@ export class BusinessStartupService extends ChannelStartupService {
quoted = msg;
}
if (options?.webhookUrl) {
webhookUrl = options.webhookUrl;
}
let content: any;
const messageSent = await (async () => {
@@ -826,6 +834,7 @@ export class BusinessStartupService extends ChannelStartupService {
messageType: this.renderMessageType(content.type),
messageTimestamp: (messageSent?.messages[0]?.timestamp as number) || Math.round(new Date().getTime() / 1000),
instanceId: this.instanceId,
webhookUrl,
source: 'unknown',
};
@@ -1134,6 +1143,7 @@ export class BusinessStartupService extends ChannelStartupService {
linkPreview: data?.linkPreview,
mentionsEveryOne: data?.mentionsEveryOne,
mentioned: data?.mentioned,
webhookUrl: data?.webhookUrl,
},
isIntegration,
);