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:
Davidson Gomes 2024-07-30 15:38:27 -03:00
parent 881c1c2aa6
commit bb65b566e5
2 changed files with 324 additions and 100 deletions

View File

@ -743,9 +743,6 @@ export class DifyService {
enabled: true,
triggerType: 'keyword',
triggerOperator: 'startsWith',
triggerValue: {
startsWith: content,
},
instanceId: instanceId,
},
});
@ -767,9 +764,6 @@ export class DifyService {
enabled: true,
triggerType: 'keyword',
triggerOperator: 'endsWith',
triggerValue: {
endsWith: content,
},
instanceId: instanceId,
},
});
@ -791,9 +785,6 @@ export class DifyService {
enabled: true,
triggerType: 'keyword',
triggerOperator: 'contains',
triggerValue: {
contains: content,
},
instanceId: instanceId,
},
});
@ -1048,22 +1039,59 @@ export class DifyService {
}
let endpoint: string = dify.apiUrl;
let payload: any = {};
if (dify.botType === 'chatBot') {
endpoint += '/chat-messages';
payload = {
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 === 'textGenerator') {
endpoint += '/completion-messages';
payload = {
const payload = {
inputs: {
query: content,
},
@ -1071,67 +1099,150 @@ export class DifyService {
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';
payload = {
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';
payload = {
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;
}
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;
}
@ -1233,22 +1344,59 @@ export class DifyService {
}
let endpoint: string = dify.apiUrl;
let payload: any = {};
if (dify.botType === 'chatBot') {
endpoint += '/chat-messages';
payload = {
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 === 'textGenerator') {
endpoint += '/completion-messages';
payload = {
const payload = {
inputs: {
query: content,
},
@ -1256,22 +1404,98 @@ export class DifyService {
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';
payload = {
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';
payload = {
const payload = {
inputs: {
query: content,
},
@ -1279,43 +1503,52 @@ export class DifyService {
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;
}
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,
},
});
sendTelemetry('/message/sendText');
return;
}
}

View File

@ -895,9 +895,6 @@ export class OpenaiService {
enabled: true,
triggerType: 'keyword',
triggerOperator: 'startsWith',
triggerValue: {
startsWith: content,
},
instanceId: instanceId,
},
});
@ -919,9 +916,6 @@ export class OpenaiService {
enabled: true,
triggerType: 'keyword',
triggerOperator: 'endsWith',
triggerValue: {
endsWith: content,
},
instanceId: instanceId,
},
});
@ -943,9 +937,6 @@ export class OpenaiService {
enabled: true,
triggerType: 'keyword',
triggerOperator: 'contains',
triggerValue: {
contains: content,
},
instanceId: instanceId,
},
});