mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-17 19:26:23 +00:00
builder flow basic
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
######DATABASE: none, mysql, mongo, dialogflow
|
||||
|
||||
SAVE_MEDIA=true
|
||||
PORT=3000
|
||||
DATABASE=none
|
||||
LANGUAGE=es
|
||||
#DATABASE: none, mysql, mongo, dialogflow
|
||||
SQL_HOST=
|
||||
SQL_USER=
|
||||
SQL_PASS=
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
#### Actualización 14 Ene 2022
|
||||
- npm update
|
||||
- add mysql
|
||||
- remove ora and chalk
|
||||
- add env
|
||||
- add mysql
|
||||
- add dialogflow
|
||||
- add scan qr from webpage
|
||||
- update route with middleware
|
||||
- fix send message to story
|
||||
- external download
|
||||
- add dialogflow
|
||||
- images less 1mb
|
||||
- easy deploy heroku
|
||||
- add support for ubuntu/linux
|
||||
|
||||
https://stackoverflow.com/questions/51855169/dialogflow-403-iam-permission-dialogflow-sessions-detectintent
|
||||
@@ -1,5 +1,7 @@
|
||||
const { getData, getReply } = require('./mysql')
|
||||
const { getDataIa } = require('./diaglogflow')
|
||||
const stepsInitial = require('../flow/initial.json')
|
||||
const stepsReponse = require('../flow/response.json')
|
||||
|
||||
const get = (message) => new Promise((resolve, reject) => {
|
||||
/**
|
||||
@@ -7,19 +9,7 @@ const get = (message) => new Promise((resolve, reject) => {
|
||||
*/
|
||||
|
||||
if (process.env.DATABASE === 'none') {
|
||||
|
||||
const steps = [
|
||||
{
|
||||
keywords: ['hola', 'hi', 'buen dia'],
|
||||
key: 'STEP_1'
|
||||
},
|
||||
{
|
||||
keywords: ['enviar pdf', 'pdf', 'enviarpdf'],
|
||||
key: 'STEP_2'
|
||||
}
|
||||
]
|
||||
|
||||
const { key } = steps.find(k => k.keywords.includes(message)) || { key: null }
|
||||
const { key } = stepsInitial.find(k => k.keywords.includes(message)) || { key: null }
|
||||
const response = key || null
|
||||
resolve(response)
|
||||
}
|
||||
@@ -34,6 +24,34 @@ const get = (message) => new Promise((resolve, reject) => {
|
||||
|
||||
})
|
||||
|
||||
|
||||
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] || {};
|
||||
console.log('Responder:',responseFind)
|
||||
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) => new Promise((resolve, reject) => {
|
||||
/**
|
||||
* Si usas dialogflow
|
||||
@@ -47,58 +65,4 @@ const getIA = (message) => new Promise((resolve, reject) => {
|
||||
}
|
||||
})
|
||||
|
||||
const reply = (step) => new Promise((resolve, reject) => {
|
||||
/**
|
||||
* Si no estas usando un gesto de base de datos
|
||||
*/
|
||||
if (process.env.DATABASE === 'none') {
|
||||
let replyMessage = null;
|
||||
let resData = { replyMessage: '', media: null, trigger: null }
|
||||
switch (step) {
|
||||
|
||||
case 'STEP_1':
|
||||
replyMessage = [
|
||||
'✌️ Bienveido a este CHATBOT lo primero \n',
|
||||
'Decirte que mi nombre es Leifer Mendez \n\n',
|
||||
'¿Quieres que te envie mi presentación? \n',
|
||||
'*enviar pdf* o *omitir* \n',
|
||||
].join('');
|
||||
resData = { replyMessage, media: null }
|
||||
resolve(resData);
|
||||
return
|
||||
break;
|
||||
case 'STEP_2':
|
||||
replyMessage = [
|
||||
'Yeah! 😎 \n',
|
||||
'enviando...👌'
|
||||
].join('');
|
||||
resData = { replyMessage, media: 'meme-1.png', trigger: 'STEP_0' }
|
||||
resolve(resData);
|
||||
return
|
||||
break;
|
||||
case 'STEP_0':
|
||||
replyMessage = [
|
||||
'El flujo ha finalizado \n',
|
||||
'pero puedes ver todo el codigo de este \n',
|
||||
'repositorio en https://github.com/leifermendez/bot-whatsapp.git'
|
||||
].join('');
|
||||
resData = { replyMessage, media: null }
|
||||
resolve(resData);
|
||||
return
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Si usas MYSQL
|
||||
*/
|
||||
if (process.env.DATABASE === 'mysql') {
|
||||
let resData = { replyMessage: '', media: null, trigger: null }
|
||||
getReply(step, (dt) => {
|
||||
resData = { ...resData, ...dt }
|
||||
resolve(resData)
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = { get, reply, getIA }
|
||||
51
flow/initial.json
Normal file
51
flow/initial.json
Normal file
@@ -0,0 +1,51 @@
|
||||
[
|
||||
{
|
||||
"keywords": [
|
||||
"hola",
|
||||
"ola",
|
||||
"ole",
|
||||
"inicio",
|
||||
"welcome",
|
||||
"buenos días",
|
||||
"buenas tardes",
|
||||
"buenas noches",
|
||||
"me dieron este número",
|
||||
"venden a crédito",
|
||||
"quisiera saber si venden",
|
||||
"necesito saber"
|
||||
],
|
||||
"key": "STEP_1"
|
||||
},
|
||||
{
|
||||
"keywords": [
|
||||
"catalogo",
|
||||
"productos",
|
||||
"categoría"
|
||||
],
|
||||
"key": "STEP_2"
|
||||
},
|
||||
{
|
||||
"keywords": [
|
||||
"angular"
|
||||
],
|
||||
"key": "STEP_2_1"
|
||||
},
|
||||
{
|
||||
"keywords": [
|
||||
"asesor",
|
||||
"asesores",
|
||||
"Vendedor",
|
||||
"cobrador"
|
||||
],
|
||||
"key": "STEP_3"
|
||||
},
|
||||
{
|
||||
"keywords": [
|
||||
"muchas gracias",
|
||||
"ok",
|
||||
"gracias",
|
||||
"vale gracias"
|
||||
],
|
||||
"key": "STEP_4"
|
||||
}
|
||||
]
|
||||
51
flow/response.json
Normal file
51
flow/response.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"STEP_0":{
|
||||
"replyMessage":[
|
||||
"El flujo ha finalizado \n",
|
||||
"pero puedes ver todo el codigo de este \n",
|
||||
"repositorio en https://github.com/leifermendez/bot-whatsapp.git"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null
|
||||
},
|
||||
"STEP_1":{
|
||||
"replyMessage":[
|
||||
"✌️ Bienveido a este CHATBOT lo primero \n",
|
||||
"Decirte que mi nombre es Leifer Mendez \n\n",
|
||||
"scribe la palabra ‼️ *Catalogo* y te mostrare nuestras categorías😉 \n"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null
|
||||
},
|
||||
"STEP_2":{
|
||||
"replyMessage":[
|
||||
"Perfecto estas son nuestras categorías. 🙂🤖<F09F9982> \n",
|
||||
"enviando...👌"
|
||||
],
|
||||
"media":"https://media4.giphy.com/media/GVwkLerYYmDDWeY52s/giphy.gif",
|
||||
"trigger":"STEP_3"
|
||||
},
|
||||
"STEP_2_1":{
|
||||
"replyMessage":[
|
||||
"Muy bien te comparto el link del curso \n",
|
||||
"👉 https://angular.io"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null
|
||||
},
|
||||
"STEP_3":{
|
||||
"replyMessage":[
|
||||
"¿Ok cual curso de intereso? \n",
|
||||
"*angular* , *node*, *ngrx*, *aws*"
|
||||
],
|
||||
"media":null,
|
||||
"trigger":null
|
||||
},
|
||||
"STEP_4":{
|
||||
"replyMessage":[
|
||||
"Gracias a ti! \n"
|
||||
],
|
||||
"media":"https://media4.giphy.com/media/hur0SFIU5SH4mxNBWa/giphy.gif",
|
||||
"trigger":null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user