mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2026-02-05 14:56:29 -06:00
chore: Update dify and openai services
Modified the implementation of Dify and OpenAI services to improve overall functionality. These changes aim to enhance the stability and performance of the integration layer, although no new features have been added. Changes affected the following files: - dify.service.ts - openai.service.ts
This commit is contained in:
@@ -743,9 +743,6 @@ export class DifyService {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
triggerType: 'keyword',
|
triggerType: 'keyword',
|
||||||
triggerOperator: 'startsWith',
|
triggerOperator: 'startsWith',
|
||||||
triggerValue: {
|
|
||||||
startsWith: content,
|
|
||||||
},
|
|
||||||
instanceId: instanceId,
|
instanceId: instanceId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -767,9 +764,6 @@ export class DifyService {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
triggerType: 'keyword',
|
triggerType: 'keyword',
|
||||||
triggerOperator: 'endsWith',
|
triggerOperator: 'endsWith',
|
||||||
triggerValue: {
|
|
||||||
endsWith: content,
|
|
||||||
},
|
|
||||||
instanceId: instanceId,
|
instanceId: instanceId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -791,9 +785,6 @@ export class DifyService {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
triggerType: 'keyword',
|
triggerType: 'keyword',
|
||||||
triggerOperator: 'contains',
|
triggerOperator: 'contains',
|
||||||
triggerValue: {
|
|
||||||
contains: content,
|
|
||||||
},
|
|
||||||
instanceId: instanceId,
|
instanceId: instanceId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -1048,53 +1039,16 @@ export class DifyService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let endpoint: string = dify.apiUrl;
|
let endpoint: string = dify.apiUrl;
|
||||||
let payload: any = {};
|
|
||||||
|
|
||||||
if (dify.botType === 'chatBot') {
|
if (dify.botType === 'chatBot') {
|
||||||
endpoint += '/chat-messages';
|
endpoint += '/chat-messages';
|
||||||
payload = {
|
const payload = {
|
||||||
inputs: {},
|
inputs: {},
|
||||||
query: content,
|
query: content,
|
||||||
response_mode: 'blocking',
|
response_mode: 'blocking',
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
user: remoteJid,
|
user: remoteJid,
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
if (dify.botType === 'textGenerator') {
|
|
||||||
endpoint += '/completion-messages';
|
|
||||||
payload = {
|
|
||||||
inputs: {
|
|
||||||
query: content,
|
|
||||||
},
|
|
||||||
response_mode: 'blocking',
|
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
|
||||||
user: remoteJid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dify.botType === 'agent') {
|
|
||||||
endpoint += '/chat-messages';
|
|
||||||
payload = {
|
|
||||||
inputs: {},
|
|
||||||
query: content,
|
|
||||||
response_mode: 'blocking',
|
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
|
||||||
user: remoteJid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dify.botType === 'workflow') {
|
|
||||||
endpoint += '/workflows/run';
|
|
||||||
payload = {
|
|
||||||
inputs: {
|
|
||||||
query: content,
|
|
||||||
},
|
|
||||||
response_mode: 'blocking',
|
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
|
||||||
user: remoteJid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
await instance.client.presenceSubscribe(remoteJid);
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
@@ -1135,6 +1089,163 @@ export class DifyService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dify.botType === 'textGenerator') {
|
||||||
|
endpoint += '/completion-messages';
|
||||||
|
const payload = {
|
||||||
|
inputs: {
|
||||||
|
query: content,
|
||||||
|
},
|
||||||
|
response_mode: 'blocking',
|
||||||
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
|
user: remoteJid,
|
||||||
|
};
|
||||||
|
|
||||||
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('composing', remoteJid);
|
||||||
|
|
||||||
|
const response = await axios.post(endpoint, payload, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${dify.apiKey}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('paused', remoteJid);
|
||||||
|
|
||||||
|
const message = response?.data?.answer;
|
||||||
|
|
||||||
|
await instance.textMessage(
|
||||||
|
{
|
||||||
|
number: remoteJid.split('@')[0],
|
||||||
|
delay: settings?.delayMessage || 1000,
|
||||||
|
text: message,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.prismaRepository.difySession.update({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
status: 'opened',
|
||||||
|
awaitUser: true,
|
||||||
|
sessionId: response?.data?.conversation_id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
sendTelemetry('/message/sendText');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dify.botType === 'agent') {
|
||||||
|
endpoint += '/chat-messages';
|
||||||
|
const payload = {
|
||||||
|
inputs: {},
|
||||||
|
query: content,
|
||||||
|
response_mode: 'blocking',
|
||||||
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
|
user: remoteJid,
|
||||||
|
};
|
||||||
|
|
||||||
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('composing', remoteJid);
|
||||||
|
|
||||||
|
const response = await axios.post(endpoint, payload, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${dify.apiKey}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('paused', remoteJid);
|
||||||
|
|
||||||
|
const message = response?.data?.answer;
|
||||||
|
|
||||||
|
await instance.textMessage(
|
||||||
|
{
|
||||||
|
number: remoteJid.split('@')[0],
|
||||||
|
delay: settings?.delayMessage || 1000,
|
||||||
|
text: message,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.prismaRepository.difySession.update({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
status: 'opened',
|
||||||
|
awaitUser: true,
|
||||||
|
sessionId: response?.data?.conversation_id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
sendTelemetry('/message/sendText');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dify.botType === 'workflow') {
|
||||||
|
endpoint += '/workflows/run';
|
||||||
|
const payload = {
|
||||||
|
inputs: {
|
||||||
|
query: content,
|
||||||
|
},
|
||||||
|
response_mode: 'blocking',
|
||||||
|
user: remoteJid,
|
||||||
|
};
|
||||||
|
|
||||||
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('composing', remoteJid);
|
||||||
|
|
||||||
|
const response = await axios.post(endpoint, payload, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${dify.apiKey}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('paused', remoteJid);
|
||||||
|
|
||||||
|
const message = response?.data?.data.outputs.text;
|
||||||
|
|
||||||
|
await instance.textMessage(
|
||||||
|
{
|
||||||
|
number: remoteJid.split('@')[0],
|
||||||
|
delay: settings?.delayMessage || 1000,
|
||||||
|
text: message,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (settings.keepOpen) {
|
||||||
|
await this.prismaRepository.difySession.update({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
status: 'closed',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await this.prismaRepository.difySession.delete({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
sendTelemetry('/message/sendText');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
private async processDify(
|
private async processDify(
|
||||||
instance: any,
|
instance: any,
|
||||||
remoteJid: string,
|
remoteJid: string,
|
||||||
@@ -1233,53 +1344,16 @@ export class DifyService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let endpoint: string = dify.apiUrl;
|
let endpoint: string = dify.apiUrl;
|
||||||
let payload: any = {};
|
|
||||||
|
|
||||||
if (dify.botType === 'chatBot') {
|
if (dify.botType === 'chatBot') {
|
||||||
endpoint += '/chat-messages';
|
endpoint += '/chat-messages';
|
||||||
payload = {
|
const payload = {
|
||||||
inputs: {},
|
inputs: {},
|
||||||
query: content,
|
query: content,
|
||||||
response_mode: 'blocking',
|
response_mode: 'blocking',
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
user: remoteJid,
|
user: remoteJid,
|
||||||
};
|
};
|
||||||
}
|
|
||||||
|
|
||||||
if (dify.botType === 'textGenerator') {
|
|
||||||
endpoint += '/completion-messages';
|
|
||||||
payload = {
|
|
||||||
inputs: {
|
|
||||||
query: content,
|
|
||||||
},
|
|
||||||
response_mode: 'blocking',
|
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
|
||||||
user: remoteJid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dify.botType === 'agent') {
|
|
||||||
endpoint += '/chat-messages';
|
|
||||||
payload = {
|
|
||||||
inputs: {},
|
|
||||||
query: content,
|
|
||||||
response_mode: 'blocking',
|
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
|
||||||
user: remoteJid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dify.botType === 'workflow') {
|
|
||||||
endpoint += '/workflows/run';
|
|
||||||
payload = {
|
|
||||||
inputs: {
|
|
||||||
query: content,
|
|
||||||
},
|
|
||||||
response_mode: 'blocking',
|
|
||||||
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
|
||||||
user: remoteJid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
await instance.client.presenceSubscribe(remoteJid);
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
@@ -1311,6 +1385,7 @@ export class DifyService {
|
|||||||
data: {
|
data: {
|
||||||
status: 'opened',
|
status: 'opened',
|
||||||
awaitUser: true,
|
awaitUser: true,
|
||||||
|
sessionId: response?.data?.conversation_id,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1318,4 +1393,162 @@ export class DifyService {
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dify.botType === 'textGenerator') {
|
||||||
|
endpoint += '/completion-messages';
|
||||||
|
const payload = {
|
||||||
|
inputs: {
|
||||||
|
query: content,
|
||||||
|
},
|
||||||
|
response_mode: 'blocking',
|
||||||
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
|
user: remoteJid,
|
||||||
|
};
|
||||||
|
|
||||||
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('composing', remoteJid);
|
||||||
|
|
||||||
|
const response = await axios.post(endpoint, payload, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${dify.apiKey}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('paused', remoteJid);
|
||||||
|
|
||||||
|
const message = response?.data?.answer;
|
||||||
|
|
||||||
|
await instance.textMessage(
|
||||||
|
{
|
||||||
|
number: remoteJid.split('@')[0],
|
||||||
|
delay: settings?.delayMessage || 1000,
|
||||||
|
text: message,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.prismaRepository.difySession.update({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
status: 'opened',
|
||||||
|
awaitUser: true,
|
||||||
|
sessionId: response?.data?.conversation_id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
sendTelemetry('/message/sendText');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dify.botType === 'agent') {
|
||||||
|
endpoint += '/chat-messages';
|
||||||
|
const payload = {
|
||||||
|
inputs: {},
|
||||||
|
query: content,
|
||||||
|
response_mode: 'blocking',
|
||||||
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
|
user: remoteJid,
|
||||||
|
};
|
||||||
|
|
||||||
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('composing', remoteJid);
|
||||||
|
|
||||||
|
const response = await axios.post(endpoint, payload, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${dify.apiKey}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('paused', remoteJid);
|
||||||
|
|
||||||
|
const message = response?.data?.answer;
|
||||||
|
|
||||||
|
await instance.textMessage(
|
||||||
|
{
|
||||||
|
number: remoteJid.split('@')[0],
|
||||||
|
delay: settings?.delayMessage || 1000,
|
||||||
|
text: message,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
await this.prismaRepository.difySession.update({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
status: 'opened',
|
||||||
|
awaitUser: true,
|
||||||
|
sessionId: response?.data?.conversation_id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
sendTelemetry('/message/sendText');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dify.botType === 'workflow') {
|
||||||
|
endpoint += '/workflows/run';
|
||||||
|
const payload = {
|
||||||
|
inputs: {
|
||||||
|
query: content,
|
||||||
|
},
|
||||||
|
response_mode: 'blocking',
|
||||||
|
conversation_id: session.sessionId === remoteJid ? undefined : session.sessionId,
|
||||||
|
user: remoteJid,
|
||||||
|
};
|
||||||
|
|
||||||
|
await instance.client.presenceSubscribe(remoteJid);
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('composing', remoteJid);
|
||||||
|
|
||||||
|
const response = await axios.post(endpoint, payload, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${dify.apiKey}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await instance.client.sendPresenceUpdate('paused', remoteJid);
|
||||||
|
|
||||||
|
const message = response?.data?.data.outputs.text;
|
||||||
|
|
||||||
|
await instance.textMessage(
|
||||||
|
{
|
||||||
|
number: remoteJid.split('@')[0],
|
||||||
|
delay: settings?.delayMessage || 1000,
|
||||||
|
text: message,
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (settings.keepOpen) {
|
||||||
|
await this.prismaRepository.difySession.update({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
data: {
|
||||||
|
status: 'closed',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await this.prismaRepository.difySession.delete({
|
||||||
|
where: {
|
||||||
|
id: session.id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
sendTelemetry('/message/sendText');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -895,9 +895,6 @@ export class OpenaiService {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
triggerType: 'keyword',
|
triggerType: 'keyword',
|
||||||
triggerOperator: 'startsWith',
|
triggerOperator: 'startsWith',
|
||||||
triggerValue: {
|
|
||||||
startsWith: content,
|
|
||||||
},
|
|
||||||
instanceId: instanceId,
|
instanceId: instanceId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -919,9 +916,6 @@ export class OpenaiService {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
triggerType: 'keyword',
|
triggerType: 'keyword',
|
||||||
triggerOperator: 'endsWith',
|
triggerOperator: 'endsWith',
|
||||||
triggerValue: {
|
|
||||||
endsWith: content,
|
|
||||||
},
|
|
||||||
instanceId: instanceId,
|
instanceId: instanceId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -943,9 +937,6 @@ export class OpenaiService {
|
|||||||
enabled: true,
|
enabled: true,
|
||||||
triggerType: 'keyword',
|
triggerType: 'keyword',
|
||||||
triggerOperator: 'contains',
|
triggerOperator: 'contains',
|
||||||
triggerValue: {
|
|
||||||
contains: content,
|
|
||||||
},
|
|
||||||
instanceId: instanceId,
|
instanceId: instanceId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user