mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 03:29:15 +00:00
90 lines
2.5 KiB
JavaScript
90 lines
2.5 KiB
JavaScript
const { getData, getReply, saveMessageMysql } = require('./mysql')
|
|
const { saveMessageJson } = require('./jsonDb')
|
|
const { getDataIa } = require('./diaglogflow')
|
|
const stepsInitial = require('../flow/initial.json')
|
|
const stepsReponse = require('../flow/response.json')
|
|
|
|
const get = (message) => new Promise((resolve, reject) => {
|
|
/**
|
|
* Si no estas usando un gesto de base de datos
|
|
*/
|
|
|
|
if (process.env.DATABASE === 'none') {
|
|
const { key } = stepsInitial.find(k => k.keywords.includes(message)) || { key: null }
|
|
const response = key || null
|
|
resolve(response)
|
|
}
|
|
/**
|
|
* Si usas MYSQL
|
|
*/
|
|
if (process.env.DATABASE === 'mysql') {
|
|
getData(message, (dt) => {
|
|
resolve(dt)
|
|
});
|
|
}
|
|
|
|
})
|
|
|
|
|
|
const reply = (step) => new Promise((resolve, reject) => {
|
|
/**
|
|
* Si no estas usando un gesto de base de datos
|
|
*/
|
|
if (process.env.DATABASE === 'none') {
|
|
let resData = { replyMessage: '', media: null, trigger: null }
|
|
const responseFind = stepsReponse[step] || {};
|
|
resData = {
|
|
...resData,
|
|
...responseFind,
|
|
replyMessage:responseFind.replyMessage.join('')}
|
|
resolve(resData);
|
|
return
|
|
}
|
|
/**
|
|
* Si usas MYSQL
|
|
*/
|
|
if (process.env.DATABASE === 'mysql') {
|
|
let resData = { replyMessage: '', media: null, trigger: null }
|
|
getReply(step, (dt) => {
|
|
resData = { ...resData, ...dt }
|
|
resolve(resData)
|
|
});
|
|
}
|
|
})
|
|
|
|
const getIA = (message, sessionId) => new Promise((resolve, reject) => {
|
|
/**
|
|
* Si usas dialogflow
|
|
*/
|
|
if (process.env.DATABASE === 'dialogflow') {
|
|
let resData = { replyMessage: '', media: null, trigger: null }
|
|
getDataIa(message, sessionId, (dt) => {
|
|
resData = { ...resData, ...dt }
|
|
resolve(resData)
|
|
})
|
|
}
|
|
})
|
|
|
|
/**
|
|
*
|
|
* @param {*} message
|
|
* @param {*} date
|
|
* @param {*} trigger
|
|
* @param {*} number
|
|
* @returns
|
|
*/
|
|
const saveMessage = ( message, trigger, number ) => new Promise( async (resolve, reject) => {
|
|
switch ( process.env.DATABASE ) {
|
|
case 'mysql':
|
|
resolve( await saveMessageMysql( message, trigger, number ) )
|
|
break;
|
|
case 'none':
|
|
resolve( await saveMessageJson( message, trigger, number ) )
|
|
break;
|
|
default:
|
|
resolve(true)
|
|
break;
|
|
}
|
|
})
|
|
|
|
module.exports = { get, reply, getIA, saveMessage } |