feat: Open AI assistants implemented

This commit is contained in:
Davidson Gomes 2024-07-18 21:11:46 -03:00
parent 29b9e688a8
commit 51749e8712
6 changed files with 620 additions and 1018 deletions

View File

@ -1,5 +1,9 @@
# 2.0.2-beta (beta) # 2.0.2-beta (beta)
### Feature
* Open AI assistants implemented
### Fixed ### Fixed
* Fixed the function of saving or not saving data in the database * Fixed the function of saving or not saving data in the database

File diff suppressed because it is too large Load Diff

View File

@ -56,8 +56,8 @@ export const openaiCredsSchema: JSONSchema7 = {
properties: { properties: {
apiKey: { type: 'string' }, apiKey: { type: 'string' },
}, },
required: ['enabled', 'apiKey'], required: ['apiKey'],
...isNotEmpty('enabled', 'apiKey'), ...isNotEmpty('apiKey'),
}; };
export const openaiStatusSchema: JSONSchema7 = { export const openaiStatusSchema: JSONSchema7 = {

View File

@ -6,6 +6,7 @@ import { authGuard } from '../guards/auth.guard';
import { instanceExistsGuard, instanceLoggedGuard } from '../guards/instance.guard'; import { instanceExistsGuard, instanceLoggedGuard } from '../guards/instance.guard';
import Telemetry from '../guards/telemetry.guard'; import Telemetry from '../guards/telemetry.guard';
import { ChatwootRouter } from '../integrations/chatwoot/routes/chatwoot.router'; import { ChatwootRouter } from '../integrations/chatwoot/routes/chatwoot.router';
import { OpenaiRouter } from '../integrations/openai/routes/openai.router';
import { RabbitmqRouter } from '../integrations/rabbitmq/routes/rabbitmq.router'; import { RabbitmqRouter } from '../integrations/rabbitmq/routes/rabbitmq.router';
import { S3Router } from '../integrations/s3/routes/s3.router'; import { S3Router } from '../integrations/s3/routes/s3.router';
import { SqsRouter } from '../integrations/sqs/routes/sqs.router'; import { SqsRouter } from '../integrations/sqs/routes/sqs.router';
@ -70,6 +71,7 @@ router
.use('/proxy', new ProxyRouter(...guards).router) .use('/proxy', new ProxyRouter(...guards).router)
.use('/label', new LabelRouter(...guards).router) .use('/label', new LabelRouter(...guards).router)
.use('/s3', new S3Router(...guards).router) .use('/s3', new S3Router(...guards).router)
.use('/openai', new OpenaiRouter(...guards).router)
.get('/webhook/meta', async (req, res) => { .get('/webhook/meta', async (req, res) => {
if (req.query['hub.verify_token'] === configService.get<WaBusiness>('WA_BUSINESS').TOKEN_WEBHOOK) if (req.query['hub.verify_token'] === configService.get<WaBusiness>('WA_BUSINESS').TOKEN_WEBHOOK)
res.send(req.query['hub.challenge']); res.send(req.query['hub.challenge']);

View File

@ -26,6 +26,7 @@ import { SettingsDto } from '../dto/settings.dto';
import { WebhookDto } from '../dto/webhook.dto'; import { WebhookDto } from '../dto/webhook.dto';
import { ChatwootDto } from '../integrations/chatwoot/dto/chatwoot.dto'; import { ChatwootDto } from '../integrations/chatwoot/dto/chatwoot.dto';
import { ChatwootService } from '../integrations/chatwoot/services/chatwoot.service'; import { ChatwootService } from '../integrations/chatwoot/services/chatwoot.service';
import { OpenaiService } from '../integrations/openai/services/openai.service';
import { RabbitmqDto } from '../integrations/rabbitmq/dto/rabbitmq.dto'; import { RabbitmqDto } from '../integrations/rabbitmq/dto/rabbitmq.dto';
import { getAMQP, removeQueues } from '../integrations/rabbitmq/libs/amqp.server'; import { getAMQP, removeQueues } from '../integrations/rabbitmq/libs/amqp.server';
import { SqsDto } from '../integrations/sqs/dto/sqs.dto'; import { SqsDto } from '../integrations/sqs/dto/sqs.dto';
@ -68,6 +69,8 @@ export class ChannelStartupService {
public typebotService = new TypebotService(waMonitor, this.configService, this.prismaRepository); public typebotService = new TypebotService(waMonitor, this.configService, this.prismaRepository);
public openaiService = new OpenaiService(waMonitor, this.configService, this.prismaRepository);
public setInstance(instance: InstanceDto) { public setInstance(instance: InstanceDto) {
this.logger.setInstance(instance.instanceName); this.logger.setInstance(instance.instanceName);

View File

@ -69,6 +69,7 @@ import {
ConfigSessionPhone, ConfigSessionPhone,
Database, Database,
Log, Log,
Openai,
ProviderSession, ProviderSession,
QrCode, QrCode,
S3, S3,
@ -1164,6 +1165,17 @@ export class BaileysStartupService extends ChannelStartupService {
} }
} }
if (this.configService.get<Openai>('OPENAI').ENABLED) {
if (type === 'notify') {
if (messageRaw.messageType !== 'reactionMessage')
await this.openaiService.sendOpenai(
{ instanceName: this.instance.name, instanceId: this.instanceId },
messageRaw.key.remoteJid,
messageRaw,
);
}
}
const contact = await this.prismaRepository.contact.findFirst({ const contact = await this.prismaRepository.contact.findFirst({
where: { remoteJid: received.key.remoteJid, instanceId: this.instanceId }, where: { remoteJid: received.key.remoteJid, instanceId: this.instanceId },
}); });