You are on page 1of 3

//events.

js
import { ask_gpt } from 'backend/openai'
import wixChatBackend from 'wix-chat-backend';
import wixData from 'wix-data';

export function wixChat_onMessage(event) {

if (event.direction === 'VisitorToBusiness') {


start(event)
}

async function start(event){

wixData.query('gpt_chat').eq('channelId', event.channelId).find()
.then(async (res) => {

if (res.items.length > 0) {

console.log('CHAT EXISTENTE')

let msg_array = res.items[0].messageHistory


await msg_array.push({ role: 'user', 'content': event.payload.text/*+
'me responda estritamente no contexto: Marketing Digital'*/ })
//Chat existente

ask_gpt(msg_array, event.sender.id)
.then(async (resGpt) => {
let gpt_res = JSON.parse(resGpt)
console.log(gpt_res)
let ai_reply = gpt_res.choices[0].message.content.replace(/\n
/g, '');
await msg_array.push({ role: 'assistant', 'content': ai_reply
})
gpt_response(ai_reply, event.channelId, msg_array)
})

} else {

console.log('NOVO CHAT')

//Novo chat
let msg_array = [
{ role: 'system', 'content': 'Você está falando como um atendente
virtual criado pelo Bad Drow' },
{ role: 'user', 'content': event.payload.text /*+'me responda est
ritamente no contexto: Marketing Digital'*/},
]

let obj = {
channelId: event.channelId,
userId: event.sender.id,
messageHistory: msg_array,
}
wixData.insert('gpt_chat', obj)

ask_gpt(msg_array, event.sender.id)
.then(async (resGpt2) => {

let gpt_res2 = JSON.parse(resGpt2)


console.log(gpt_res2)
let ai_reply = gpt_res2.choices[0].message.content.replace(/\
n/g, '');

await msg_array.push({ role: 'assistant', 'content': ai_reply


})

gpt_response(ai_reply, event.channelId, msg_array)


})

})

async function gpt_response (gpt, chid, array){

let obj = {

"messageText": gpt,
"channelId": chid,
"metadata": {},
"sendAsVisitor": false,
}

wixChatBackend.sendMessage(obj)
.then(() => {
wixData.query('gpt_chat').eq('channelId', chid).find()
.then((res) => {
let item = res.items[0];
item.messageHistory = array;
wixData.update('gpt_chat', item)
})
})
.catch((e) => {
console.log(e)
})
}

//openai.jsw
const axios = require('axios'); //LEMBRAR DE IMPORTAR O PACOTE NPM: AXIOS

// ...

export async function ask_gpt(array, user) {

let data = JSON.stringify({


model: 'gpt-3.5-turbo',
messages: array,
max_tokens: 2500,
n: 1,
temperature: 0.2,
user: user,

});

let config = {
method: 'post',
maxBodyLength: Infinity,
url: 'https://api.openai.com/v1/chat/completions',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + 'SUA KEY DO SITE OPENAI’
},
data: data
};

return await axios.request(config)


.then(async(response) => {
console.log(response.data)
console.log(typeof response)
return await JSON.stringify(response.data)
})
.catch((error) => {
console.log(error);
});

You might also like