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
|
SAVE_MEDIA=true
|
||||||
PORT=3000
|
PORT=3000
|
||||||
DATABASE=none
|
DATABASE=none
|
||||||
LANGUAGE=es
|
LANGUAGE=es
|
||||||
#DATABASE: none, mysql, mongo, dialogflow
|
|
||||||
SQL_HOST=
|
SQL_HOST=
|
||||||
SQL_USER=
|
SQL_USER=
|
||||||
SQL_PASS=
|
SQL_PASS=
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
#### Actualización 14 Ene 2022
|
#### Actualización 14 Ene 2022
|
||||||
- npm update
|
- npm update
|
||||||
- add mysql
|
- remove ora and chalk
|
||||||
- add env
|
- add env
|
||||||
|
- add mysql
|
||||||
|
- add dialogflow
|
||||||
|
- add scan qr from webpage
|
||||||
- update route with middleware
|
- update route with middleware
|
||||||
- fix send message to story
|
- fix send message to story
|
||||||
- external download
|
- external download
|
||||||
- add dialogflow
|
|
||||||
- images less 1mb
|
|
||||||
- easy deploy heroku
|
- easy deploy heroku
|
||||||
|
- add support for ubuntu/linux
|
||||||
|
|
||||||
https://stackoverflow.com/questions/51855169/dialogflow-403-iam-permission-dialogflow-sessions-detectintent
|
https://stackoverflow.com/questions/51855169/dialogflow-403-iam-permission-dialogflow-sessions-detectintent
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
const { getData, getReply } = require('./mysql')
|
const { getData, getReply } = require('./mysql')
|
||||||
const { getDataIa } = require('./diaglogflow')
|
const { getDataIa } = require('./diaglogflow')
|
||||||
|
const stepsInitial = require('../flow/initial.json')
|
||||||
|
const stepsReponse = require('../flow/response.json')
|
||||||
|
|
||||||
const get = (message) => new Promise((resolve, reject) => {
|
const get = (message) => new Promise((resolve, reject) => {
|
||||||
/**
|
/**
|
||||||
@@ -7,19 +9,7 @@ const get = (message) => new Promise((resolve, reject) => {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (process.env.DATABASE === 'none') {
|
if (process.env.DATABASE === 'none') {
|
||||||
|
const { key } = stepsInitial.find(k => k.keywords.includes(message)) || { key: null }
|
||||||
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 response = key || null
|
const response = key || null
|
||||||
resolve(response)
|
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) => {
|
const getIA = (message) => new Promise((resolve, reject) => {
|
||||||
/**
|
/**
|
||||||
* Si usas dialogflow
|
* 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 }
|
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