fix: in error catch in createNewSession

This commit is contained in:
Gabriel Pastori 2023-10-29 12:59:29 -03:00
parent 0817c2589f
commit f710898844
2 changed files with 78 additions and 44 deletions

View File

@ -7,5 +7,7 @@
"editor.codeActionsOnSave": { "editor.codeActionsOnSave": {
"source.fixAll.eslint": true, "source.fixAll.eslint": true,
"source.fixAll": true "source.fixAll": true
} },
"prisma-smart-formatter.typescript.defaultFormatter": "esbenp.prettier-vscode",
"prisma-smart-formatter.prisma.defaultFormatter": "Prisma.prisma"
} }

View File

@ -47,7 +47,7 @@ export class TypebotService {
findData.sessions.splice(findData.sessions.indexOf(session), 1); findData.sessions.splice(findData.sessions.indexOf(session), 1);
const typebotData = { const typebotData = {
enabled: true, enabled: findData.enabled,
url: findData.url, url: findData.url,
typebot: findData.typebot, typebot: findData.typebot,
expire: findData.expire, expire: findData.expire,
@ -71,7 +71,7 @@ export class TypebotService {
} }
const typebotData = { const typebotData = {
enabled: true, enabled: findData.enabled,
url: findData.url, url: findData.url,
typebot: findData.typebot, typebot: findData.typebot,
expire: findData.expire, expire: findData.expire,
@ -104,7 +104,6 @@ export class TypebotService {
const startSession = data.startSession; 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 expire = findTypebot.expire; const expire = findTypebot.expire;
const keyword_finish = findTypebot.keyword_finish; const keyword_finish = findTypebot.keyword_finish;
const delay_message = findTypebot.delay_message; const delay_message = findTypebot.delay_message;
@ -116,12 +115,17 @@ export class TypebotService {
instanceName: instance.instanceName, instanceName: instance.instanceName,
}; };
variables.forEach((variable) => { if (variables?.length) {
prefilledVariables[variable.name] = variable.value; variables.forEach((variable: { name: string | number; value: string }) => {
}); prefilledVariables[variable.name] = variable.value;
});
}
if (startSession) { if (startSession) {
const newSessions = await this.clearSessions(instance, remoteJid);
const response = await this.createNewSession(instance, { const response = await this.createNewSession(instance, {
enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
remoteJid: remoteJid, remoteJid: remoteJid,
@ -130,7 +134,7 @@ export class TypebotService {
delay_message: delay_message, delay_message: delay_message,
unknown_message: unknown_message, unknown_message: unknown_message,
listening_from_me: listening_from_me, listening_from_me: listening_from_me,
sessions: sessions, sessions: newSessions,
prefilledVariables: prefilledVariables, prefilledVariables: prefilledVariables,
}); });
@ -246,45 +250,74 @@ export class TypebotService {
}, },
}; };
let request: any;
try { try {
request = await axios.post(data.url + '/api/v1/sendMessage', reqData); const request = await axios.post(data.url + '/api/v1/sendMessage', reqData);
if (request?.data?.sessionId) {
data.sessions.push({
remoteJid: data.remoteJid,
sessionId: `${id}-${request.data.sessionId}`,
status: 'opened',
createdAt: Date.now(),
updateAt: Date.now(),
prefilledVariables: {
...data.prefilledVariables,
remoteJid: data.remoteJid,
pushName: data.pushName || '',
instanceName: instance.instanceName,
},
});
const typebotData = {
enabled: data.enabled,
url: data.url,
typebot: data.typebot,
expire: data.expire,
keyword_finish: data.keyword_finish,
delay_message: data.delay_message,
unknown_message: data.unknown_message,
listening_from_me: data.listening_from_me,
sessions: data.sessions,
};
this.create(instance, typebotData);
}
return request.data;
} catch (error) { } catch (error) {
this.logger.error(error); this.logger.error(error);
return; return;
} }
}
if (request?.data?.sessionId) { public async clearSessions(instance: InstanceDto, remoteJid: string) {
data.sessions.push({ const findTypebot = await this.find(instance);
remoteJid: data.remoteJid, const sessions = (findTypebot.sessions as Session[]) ?? [];
sessionId: `${id}-${request.data.sessionId}`,
status: 'opened', const sessionWithRemoteJid = sessions.filter((session) => session.remoteJid === remoteJid);
createdAt: Date.now(),
updateAt: Date.now(), if (sessionWithRemoteJid.length > 0) {
prefilledVariables: { sessionWithRemoteJid.forEach((session) => {
...data.prefilledVariables, sessions.splice(sessions.indexOf(session), 1);
remoteJid: data.remoteJid,
pushName: data.pushName || '',
instanceName: instance.instanceName,
},
}); });
const typebotData = { const typebotData = {
enabled: true, enabled: findTypebot.enabled,
url: data.url, url: findTypebot.url,
typebot: data.typebot, typebot: findTypebot.typebot,
expire: data.expire, expire: findTypebot.expire,
keyword_finish: data.keyword_finish, keyword_finish: findTypebot.keyword_finish,
delay_message: data.delay_message, delay_message: findTypebot.delay_message,
unknown_message: data.unknown_message, unknown_message: findTypebot.unknown_message,
listening_from_me: data.listening_from_me, listening_from_me: findTypebot.listening_from_me,
sessions: data.sessions, sessions,
}; };
this.create(instance, typebotData); this.create(instance, typebotData);
return sessions;
} }
return request.data; return sessions;
} }
public async sendWAMessage( public async sendWAMessage(
@ -457,9 +490,10 @@ export class TypebotService {
const diffInMinutes = Math.floor(diff / 1000 / 60); const diffInMinutes = Math.floor(diff / 1000 / 60);
if (diffInMinutes > expire) { if (diffInMinutes > expire) {
sessions.splice(sessions.indexOf(session), 1); const newSessions = await this.clearSessions(instance, remoteJid);
const data = await this.createNewSession(instance, { const data = await this.createNewSession(instance, {
enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
expire: expire, expire: expire,
@ -467,7 +501,7 @@ export class TypebotService {
delay_message: delay_message, delay_message: delay_message,
unknown_message: unknown_message, unknown_message: unknown_message,
listening_from_me: listening_from_me, listening_from_me: listening_from_me,
sessions: sessions, sessions: newSessions,
remoteJid: remoteJid, remoteJid: remoteJid,
pushName: msg.pushName, pushName: msg.pushName,
}); });
@ -494,10 +528,10 @@ export class TypebotService {
} }
if (keyword_finish && content.toLowerCase() === keyword_finish.toLowerCase()) { if (keyword_finish && content.toLowerCase() === keyword_finish.toLowerCase()) {
sessions.splice(sessions.indexOf(session), 1); const newSessions = await this.clearSessions(instance, remoteJid);
const typebotData = { const typebotData = {
enabled: true, enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
expire: expire, expire: expire,
@ -505,7 +539,7 @@ export class TypebotService {
delay_message: delay_message, delay_message: delay_message,
unknown_message: unknown_message, unknown_message: unknown_message,
listening_from_me: listening_from_me, listening_from_me: listening_from_me,
sessions, sessions: newSessions,
}; };
this.create(instance, typebotData); this.create(instance, typebotData);
@ -521,7 +555,6 @@ export class TypebotService {
try { try {
const request = await axios.post(url + '/api/v1/sendMessage', reqData); const request = await axios.post(url + '/api/v1/sendMessage', reqData);
console.log('request', request);
await this.sendWAMessage( await this.sendWAMessage(
instance, instance,
remoteJid, remoteJid,
@ -545,6 +578,7 @@ export class TypebotService {
if (!session) { if (!session) {
const data = await this.createNewSession(instance, { const data = await this.createNewSession(instance, {
enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
expire: expire, expire: expire,
@ -582,7 +616,7 @@ export class TypebotService {
sessions.splice(sessions.indexOf(session), 1); sessions.splice(sessions.indexOf(session), 1);
const typebotData = { const typebotData = {
enabled: true, enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
expire: expire, expire: expire,
@ -606,8 +640,6 @@ export class TypebotService {
let request: any; let request: any;
try { try {
request = await axios.post(url + '/api/v1/sendMessage', reqData); request = await axios.post(url + '/api/v1/sendMessage', reqData);
console.log('request', request);
await this.sendWAMessage( await this.sendWAMessage(
instance, instance,
remoteJid, remoteJid,
@ -630,7 +662,7 @@ export class TypebotService {
}); });
const typebotData = { const typebotData = {
enabled: true, enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
expire: expire, expire: expire,
@ -665,7 +697,7 @@ export class TypebotService {
sessions.splice(sessions.indexOf(session), 1); sessions.splice(sessions.indexOf(session), 1);
const typebotData = { const typebotData = {
enabled: true, enabled: findTypebot.enabled,
url: url, url: url,
typebot: typebot, typebot: typebot,
expire: expire, expire: expire,