correction of messages sent by the api and typebot not appearing in chatwoot

This commit is contained in:
Davidson Gomes 2023-10-02 16:10:04 -03:00
parent e1ac29683d
commit a9c087c45f
4 changed files with 55 additions and 24 deletions

View File

@ -9,6 +9,7 @@
* Remove rabbitmq queues when delete instances * Remove rabbitmq queues when delete instances
* Improvement in restart instance to completely redo the connection * Improvement in restart instance to completely redo the connection
* Update node version: v20 * Update node version: v20
* Correction of messages sent by the api and typebot not appearing in chatwoot
# 1.5.2 (2023-09-28 17:56) # 1.5.2 (2023-09-28 17:56)

View File

@ -1279,7 +1279,7 @@ export class ChatwootService {
return null; return null;
} }
if (event === 'messages.upsert') { if (event === 'messages.upsert' || event === 'send.messages') {
this.logger.verbose('event messages.upsert'); this.logger.verbose('event messages.upsert');
if (body.key.remoteJid === 'status@broadcast') { if (body.key.remoteJid === 'status@broadcast') {

View File

@ -99,6 +99,7 @@ export class TypebotService {
const remoteJid = data.remoteJid; const remoteJid = data.remoteJid;
const url = data.url; const url = data.url;
const typebot = data.typebot; const typebot = data.typebot;
const startSession = data.startSession;
const variables = data.variables; const variables = data.variables;
const findTypebot = await this.find(instance); const findTypebot = await this.find(instance);
const sessions = (findTypebot.sessions as Session[]) ?? []; const sessions = (findTypebot.sessions as Session[]) ?? [];
@ -116,37 +117,61 @@ export class TypebotService {
prefilledVariables[variable.name] = variable.value; prefilledVariables[variable.name] = variable.value;
}); });
const response = await this.createNewSession(instance, { if (startSession) {
url: url, const response = await this.createNewSession(instance, {
typebot: typebot, url: url,
remoteJid: remoteJid, typebot: typebot,
expire: expire, remoteJid: remoteJid,
keyword_finish: keyword_finish, expire: expire,
delay_message: delay_message, keyword_finish: keyword_finish,
unknown_message: unknown_message, delay_message: delay_message,
listening_from_me: listening_from_me, unknown_message: unknown_message,
sessions: sessions, listening_from_me: listening_from_me,
prefilledVariables: prefilledVariables, sessions: sessions,
}); prefilledVariables: prefilledVariables,
});
if (response.sessionId) {
await this.sendWAMessage(instance, remoteJid, response.messages, response.input, response.clientSideActions);
this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, {
remoteJid: remoteJid,
url: url,
typebot: typebot,
prefilledVariables: prefilledVariables,
sessionId: `${response.sessionId}`,
});
} else {
throw new Error('Session ID not found in response');
}
} else {
const id = Math.floor(Math.random() * 10000000000).toString();
const reqData = {
sessionId: id,
startParams: {
typebot: data.typebot,
prefilledVariables: prefilledVariables,
},
};
const request = await axios.post(data.url + '/api/v1/sendMessage', reqData);
if (response.sessionId) {
await this.sendWAMessage( await this.sendWAMessage(
instance, instance,
remoteJid, remoteJid,
response.messages, request.data.messages,
response.input, request.data.input,
response.clientSideActions, request.data.clientSideActions,
); );
this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, { this.waMonitor.waInstances[instance.instanceName].sendDataWebhook(Events.TYPEBOT_START, {
remoteJid: remoteJid, remoteJid: remoteJid,
url: url, url: url,
typebot: typebot, typebot: typebot,
prefilledVariables: prefilledVariables, variables: variables,
sessionId: `${response.sessionId}`, sessionId: id,
}); });
} else {
throw new Error("Session ID not found in response");
} }
return { return {
@ -227,7 +252,7 @@ export class TypebotService {
remoteJid: data.remoteJid, remoteJid: data.remoteJid,
pushName: data.pushName || 'Default Name', pushName: data.pushName || 'Default Name',
instanceName: instance.instanceName, instanceName: instance.instanceName,
} },
}); });
const typebotData = { const typebotData = {

View File

@ -40,6 +40,7 @@ import EventEmitter2 from 'eventemitter2';
import fs, { existsSync, readFileSync } from 'fs'; import fs, { existsSync, readFileSync } from 'fs';
import Long from 'long'; import Long from 'long';
import NodeCache from 'node-cache'; import NodeCache from 'node-cache';
import { getMIMEType } from 'node-mime-types';
import { release } from 'os'; import { release } from 'os';
import { join } from 'path'; import { join } from 'path';
import P from 'pino'; import P from 'pino';
@ -2387,12 +2388,16 @@ export class WAStartupService {
if (mediaMessage.mediatype === 'image' && !mediaMessage.fileName) { if (mediaMessage.mediatype === 'image' && !mediaMessage.fileName) {
mediaMessage.fileName = 'image.png'; mediaMessage.fileName = 'image.png';
mimetype = 'image/png';
} }
if (mediaMessage.mediatype === 'video' && !mediaMessage.fileName) { if (mediaMessage.mediatype === 'video' && !mediaMessage.fileName) {
mediaMessage.fileName = 'video.mp4'; mediaMessage.fileName = 'video.mp4';
mimetype = 'video/mp4'; }
if (isURL(mediaMessage.media)) {
mimetype = getMIMEType(mediaMessage.media);
} else {
mimetype = getMIMEType(mediaMessage.fileName);
} }
this.logger.verbose('Mimetype: ' + mimetype); this.logger.verbose('Mimetype: ' + mimetype);