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

@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Message" ADD COLUMN "webhookUrl" VARCHAR(500);

View File

@ -135,6 +135,7 @@ model Message {
Media Media?
OpenaiSession OpenaiSession? @relation(fields: [openaiSessionId], references: [id])
openaiSessionId String?
webhookUrl String? @db.VarChar(500)
}
model MessageUpdate {

View File

@ -13,6 +13,7 @@ export class Options {
encoding?: boolean;
mentionsEveryOne?: boolean;
mentioned?: string[];
webhookUrl?: string;
}
export class MediaMessage {
@ -137,6 +138,7 @@ export class SendTemplateDto extends Metadata {
name: string;
language: string;
components: any;
webhookUrl?: string;
}
export class SendContactDto extends Metadata {
contact: ContactMessage[];

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,
);

View File

@ -33,6 +33,7 @@ export const templateMessageSchema: JSONSchema7 = {
name: { type: 'string' },
language: { type: 'string' },
components: { type: 'array' },
webhookUrl: { type: 'string' },
},
required: ['name', 'language'],
};