diff --git a/.env.example b/.env.example index 81eee64..fbf1d72 100644 --- a/.env.example +++ b/.env.example @@ -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= diff --git a/CHANGELOG.md b/CHANGELOG.md index d598adc..cdf499c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 \ No newline at end of file diff --git a/adapter/index.js b/adapter/index.js index 055e5c1..e2786f7 100644 --- a/adapter/index.js +++ b/adapter/index.js @@ -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 } \ No newline at end of file diff --git a/flow/initial.json b/flow/initial.json new file mode 100644 index 0000000..7a061e5 --- /dev/null +++ b/flow/initial.json @@ -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" + } +] \ No newline at end of file diff --git a/flow/response.json b/flow/response.json new file mode 100644 index 0000000..a465d15 --- /dev/null +++ b/flow/response.json @@ -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. 🙂🤖� \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 + } +} \ No newline at end of file