From eda8a677188119c696a6e82795f75563b312c292 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Wed, 7 Dec 2022 18:06:27 +0100 Subject: [PATCH] refactor(provider): :zap: twilio + hook --- TODO.md | 2 +- packages/bot/index.js | 2 + packages/provider/TODO.md | 13 ----- packages/provider/src/twilio/index.js | 4 +- packages/provider/src/twilio/server.js | 47 ++++++++++++++++--- .../{ => src/web-whatsapp}/COMMON_MISTAKE.md | 0 6 files changed, 46 insertions(+), 22 deletions(-) delete mode 100644 packages/provider/TODO.md rename packages/provider/{ => src/web-whatsapp}/COMMON_MISTAKE.md (100%) diff --git a/TODO.md b/TODO.md index 026d502..553235c 100644 --- a/TODO.md +++ b/TODO.md @@ -11,7 +11,7 @@ - [X] sensitivy viene activado por defecto - [X] fallback respuesta en hijo: Se puede colocar en option el ref de la answer fallback - [X] Cuando Envian Sticket devuelve mensaje raro -- [ ] addAnswer agregar delay +- [x] addAnswer agregar delay - [ ] colocar mensaje esperando conectando whatsapp (provider) - [ ] createDatabase validar implementacion de funciones - [ ] limitar caracteres de mensajes 4000 diff --git a/packages/bot/index.js b/packages/bot/index.js index 8964221..eb9df24 100644 --- a/packages/bot/index.js +++ b/packages/bot/index.js @@ -22,6 +22,8 @@ const createFlow = (args) => { /** * Crear instancia de clase Provider + * Depdendiendo del Provider puedes pasar argumentos + * Ver Documentacion * @param {*} args * @returns */ diff --git a/packages/provider/TODO.md b/packages/provider/TODO.md deleted file mode 100644 index 1e2b948..0000000 --- a/packages/provider/TODO.md +++ /dev/null @@ -1,13 +0,0 @@ -# @bot-whatsapp/provider - -```js -// bootstrap.js Como iniciar el provider -const { inout, provider, database } = require('@bot-whatsapp') - -provider.start() -provider.close() -``` - -- [ ] whatsapp-web.js _verificar update_ -- [ ] Meta _verificar tokens_ -- [ ] Twilio _verificar tokens_ diff --git a/packages/provider/src/twilio/index.js b/packages/provider/src/twilio/index.js index e6f4acc..973cc48 100644 --- a/packages/provider/src/twilio/index.js +++ b/packages/provider/src/twilio/index.js @@ -11,10 +11,10 @@ class TwilioProvider extends ProviderClass { twilioHook vendor vendorNumber - constructor({ accountSid, authToken, vendorNumber }) { + constructor({ accountSid, authToken, vendorNumber }, _port = 3000) { super() this.vendor = new twilio(accountSid, authToken) - this.twilioHook = new TwilioWebHookServer() + this.twilioHook = new TwilioWebHookServer(_port) this.vendorNumber = vendorNumber this.twilioHook.start() diff --git a/packages/provider/src/twilio/server.js b/packages/provider/src/twilio/server.js index 680f78f..d208232 100644 --- a/packages/provider/src/twilio/server.js +++ b/packages/provider/src/twilio/server.js @@ -3,7 +3,24 @@ const polka = require('polka') const { urlencoded } = require('body-parser') const { parseNumber } = require('./utils') +/** + * Encargado de levantar un servidor HTTP con una hook url + * [POST] /twilio-hook + */ class TwilioWebHookServer extends EventEmitter { + twilioServer + twilioPort + constructor(_twilioPort) { + this.twilioServer = this.buildHTTPServer() + this.twilioPort = _twilioPort + } + + /** + * Mensaje entrante + * emit: 'message' + * @param {*} req + * @param {*} res + */ incomingMsg = (req, res) => { const { body } = req this.emit('message', { @@ -15,13 +32,31 @@ class TwilioWebHookServer extends EventEmitter { res.end(json) } - start = () => { - polka() + /** + * Contruir HTTP Server + * @returns + */ + buildHTTPServer = () => { + return polka() .use(urlencoded({ extended: true })) - .post('/hook', this.incomingMsg) - .listen(3000, () => { - console.log(`> Running on localhost:3000 /hook`) - }) + .post('/twilio-hook', this.incomingMsg) + } + + /** + * Puerto del HTTP + * @param {*} port default 3000 + */ + start = () => { + this.twilioServer.listen(this.twilioPort, () => { + console.log(``) + console.log(`[Twilio]: Agregar esta url "WHEN A MESSAGE COMES IN"`) + console.log( + `[Twilio]: http://localhost:${this.twilioPort}/twilio-hook` + ) + console.log(`[Twilio]: Más información en la documentacion`) + console.log(``) + }) + this.emit('ready') } } diff --git a/packages/provider/COMMON_MISTAKE.md b/packages/provider/src/web-whatsapp/COMMON_MISTAKE.md similarity index 100% rename from packages/provider/COMMON_MISTAKE.md rename to packages/provider/src/web-whatsapp/COMMON_MISTAKE.md