mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-20 20:49:15 +00:00
added dialogflow filter for media
This commit is contained in:
52
app.js
52
app.js
@@ -11,8 +11,8 @@ const mysqlConnection = require('./config/mysql')
|
||||
const { middlewareClient } = require('./middleware/client')
|
||||
const { generateImage, cleanNumber, checkEnvFile, createClient, isValidNumber } = require('./controllers/handle')
|
||||
const { connectionReady, connectionLost } = require('./controllers/connection')
|
||||
const { saveMedia } = require('./controllers/save')
|
||||
const { getMessages, responseMessages, bothResponse } = require('./controllers/flows')
|
||||
const { saveMedia, saveMediaToGoogleDrive } = require('./controllers/save')
|
||||
const { getMessages, responseMessages, bothResponse, waitFor } = require('./controllers/flows')
|
||||
const { sendMedia, sendMessage, lastTrigger, sendMessageButton, readChat } = require('./controllers/send')
|
||||
const app = express();
|
||||
app.use(cors())
|
||||
@@ -22,6 +22,7 @@ const server = require('http').Server(app)
|
||||
|
||||
const port = process.env.PORT || 3000
|
||||
var client;
|
||||
var dialogflowFilter = false;
|
||||
app.use('/', require('./routes/web'))
|
||||
|
||||
/**
|
||||
@@ -46,7 +47,7 @@ const listenMessage = () => client.on('message', async msg => {
|
||||
/**
|
||||
* Guardamos el archivo multimedia que envia
|
||||
*/
|
||||
if (process.env.SAVE_MEDIA && hasMedia) {
|
||||
if (process.env.SAVE_MEDIA === 'true' && hasMedia) {
|
||||
const media = await msg.downloadMedia();
|
||||
saveMedia(media);
|
||||
}
|
||||
@@ -56,12 +57,27 @@ const listenMessage = () => client.on('message', async msg => {
|
||||
*/
|
||||
|
||||
if (process.env.DATABASE === 'dialogflow') {
|
||||
|
||||
if (process.env.DIALOGFLOW_MEDIA_FOR_SLOT_FILLING === 'true' && dialogflowFilter) {
|
||||
waitFor(_ => hasMedia, 30000)
|
||||
.then(async _ => {
|
||||
if (hasMedia) {
|
||||
const media = await msg.downloadMedia();
|
||||
message = await saveMediaToGoogleDrive(media);
|
||||
const response = await bothResponse(message.substring(256, -1), number);
|
||||
await sendMessage(client, from, response.replyMessage);
|
||||
}
|
||||
return
|
||||
});
|
||||
dialogflowFilter = false;
|
||||
}
|
||||
|
||||
if (!message.length) return;
|
||||
const response = await bothResponse(message.substring(256,-1), number);
|
||||
const response = await bothResponse(message.substring(256, -1), number);
|
||||
await sendMessage(client, from, response.replyMessage);
|
||||
if(response.actions){
|
||||
await sendMessageButton(client, from, null, response.actions);
|
||||
return
|
||||
if (response.actions) {
|
||||
await sendMessageButton(client, from, null, response.actions);
|
||||
return
|
||||
}
|
||||
if (response.media) {
|
||||
sendMedia(client, from, response.media);
|
||||
@@ -128,7 +144,26 @@ const listenMessage = () => client.on('message', async msg => {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Este evento es necesario para el filtro de Dialogflow
|
||||
*/
|
||||
|
||||
const listenMessageFromBot = () => client.on('message_create', async botMsg => {
|
||||
const { body } = botMsg;
|
||||
const dialogflowFilterConfig = fs.readFileSync('./flow/dialogflow.json', 'utf8');
|
||||
const keywords = JSON.parse(dialogflowFilterConfig);
|
||||
|
||||
for (i = 0; i < keywords.length; i++) {
|
||||
key = keywords[i];
|
||||
for (var j = 0; j < key.phrases.length; j++) {
|
||||
let filters = key.phrases[j];
|
||||
if (body.includes(filters)) {
|
||||
dialogflowFilter = true;
|
||||
//console.log(`El filtro de Dialogflow coincidió con el mensaje: ${filters}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
client = new Client({
|
||||
authStrategy: new LocalAuth(),
|
||||
@@ -145,6 +180,7 @@ client.on('qr', qr => generateImage(qr, () => {
|
||||
client.on('ready', (a) => {
|
||||
connectionReady()
|
||||
listenMessage()
|
||||
listenMessageFromBot()
|
||||
// socketEvents.sendStatus(client)
|
||||
});
|
||||
|
||||
@@ -159,8 +195,6 @@ client.on('authenticated', () => {
|
||||
|
||||
client.initialize();
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Verificamos si tienes un gesto de db
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user