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
@@ -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,53 +1039,16 @@ 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,
};
}
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);
@@ -1135,6 +1089,163 @@ export class DifyService {
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(
instance: any,
remoteJid: string,
@@ -1233,53 +1344,16 @@ 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,
};
}
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);
@@ -1311,6 +1385,7 @@ export class DifyService {
data: {
status: 'opened',
awaitUser: true,
sessionId: response?.data?.conversation_id,
},
});
@@ -1318,4 +1393,162 @@ export class DifyService {
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,
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,
},
});