mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-23 04:22:02 -06:00
fix: Correct openai session deletion and pause functionality
This commit fixes an issue where openai sessions were not being properly deleted or paused. It updates the `openai.service.ts` and `openai.schema.ts` files to correctly handle session deletion and pausing. The `openai.service.ts` file now includes additional checks for session status before deleting or updating. The `openai.schema.ts` file has been updated to include a new 'delete' status option. These changes ensure that openai sessions are properly managed and that the bot can be paused and resumed as intended. This improves the overall functionality and user experience of the application.
This commit is contained in:
parent
7ba1f2fdf4
commit
5047e6281a
@ -730,16 +730,43 @@ export class OpenaiService {
|
||||
})
|
||||
.then((instance) => instance.id);
|
||||
|
||||
const defaultSettingCheck = await this.prismaRepository.typebotSetting.findFirst({
|
||||
where: {
|
||||
instanceId,
|
||||
},
|
||||
});
|
||||
|
||||
const remoteJid = data.remoteJid;
|
||||
const status = data.status;
|
||||
|
||||
if (status === 'closed') {
|
||||
if (status === 'delete') {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
|
||||
return { openai: { remoteJid: remoteJid, status: status } };
|
||||
}
|
||||
|
||||
if (status === 'closed') {
|
||||
if (defaultSettingCheck?.keepOpen) {
|
||||
await this.prismaRepository.openaiSession.updateMany({
|
||||
where: {
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
data: {
|
||||
status: 'closed',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
return { openai: { ...instance, openai: { remoteJid: remoteJid, status: status } } };
|
||||
} else {
|
||||
const session = await this.prismaRepository.openaiSession.updateMany({
|
||||
@ -1085,17 +1112,28 @@ export class OpenaiService {
|
||||
participant: string;
|
||||
};
|
||||
|
||||
if (!listeningFromMe && key.fromMe) {
|
||||
if (stopBotFromMe && key.fromMe && session) {
|
||||
if (keepOpen) {
|
||||
await this.prismaRepository.openaiSession.update({
|
||||
where: {
|
||||
id: session.id,
|
||||
},
|
||||
data: {
|
||||
status: 'closed',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: findOpenai.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (stopBotFromMe && listeningFromMe && key.fromMe && session) {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: findOpenai.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
if (!listeningFromMe && key.fromMe) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1295,12 +1333,23 @@ export class OpenaiService {
|
||||
const diffInMinutes = Math.floor(diff / 1000 / 60);
|
||||
|
||||
if (diffInMinutes > settings.expire) {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
if (settings.keepOpen) {
|
||||
await this.prismaRepository.openaiSession.update({
|
||||
where: {
|
||||
id: session.id,
|
||||
},
|
||||
data: {
|
||||
status: 'closed',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
await this.initAssistantNewSession(instance, remoteJid, openaiBot, settings, session, content);
|
||||
return;
|
||||
@ -1339,12 +1388,23 @@ export class OpenaiService {
|
||||
}
|
||||
|
||||
if (settings.keywordFinish && content.toLowerCase() === settings.keywordFinish.toLowerCase()) {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
if (settings.keepOpen) {
|
||||
await this.prismaRepository.openaiSession.update({
|
||||
where: {
|
||||
id: session.id,
|
||||
},
|
||||
data: {
|
||||
status: 'closed',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1555,12 +1615,23 @@ export class OpenaiService {
|
||||
const diffInMinutes = Math.floor(diff / 1000 / 60);
|
||||
|
||||
if (diffInMinutes > settings.expire) {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
if (settings.keepOpen) {
|
||||
await this.prismaRepository.openaiSession.update({
|
||||
where: {
|
||||
id: session.id,
|
||||
},
|
||||
data: {
|
||||
status: 'closed',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
await this.initChatCompletionNewSession(instance, remoteJid, openaiBot, settings, session, content);
|
||||
return;
|
||||
@ -1599,12 +1670,23 @@ export class OpenaiService {
|
||||
}
|
||||
|
||||
if (settings.keywordFinish && content.toLowerCase() === settings.keywordFinish.toLowerCase()) {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
if (settings.keepOpen) {
|
||||
await this.prismaRepository.openaiSession.update({
|
||||
where: {
|
||||
id: session.id,
|
||||
},
|
||||
data: {
|
||||
status: 'closed',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
await this.prismaRepository.openaiSession.deleteMany({
|
||||
where: {
|
||||
openaiBotId: openaiBot.id,
|
||||
remoteJid: remoteJid,
|
||||
},
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ export const openaiStatusSchema: JSONSchema7 = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
remoteJid: { type: 'string' },
|
||||
status: { type: 'string', enum: ['opened', 'closed', 'paused'] },
|
||||
status: { type: 'string', enum: ['opened', 'closed', 'paused', 'delete'] },
|
||||
},
|
||||
required: ['remoteJid', 'status'],
|
||||
...isNotEmpty('remoteJid', 'status'),
|
||||
|
Loading…
Reference in New Issue
Block a user