builder flow basic

This commit is contained in:
Leifer Mendez
2022-01-18 10:09:45 +01:00
parent d3a086fc98
commit 1f9af4f7b2
5 changed files with 140 additions and 71 deletions

View File

@@ -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=

View File

@@ -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

View File

@@ -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
View 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
View 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
}
}