diff --git a/packages/provider/src/meta/server.js b/packages/provider/src/meta/server.js index cb2ac9a..85e0403 100644 --- a/packages/provider/src/meta/server.js +++ b/packages/provider/src/meta/server.js @@ -1,6 +1,6 @@ const { EventEmitter } = require('node:events') const polka = require('polka') -const { urlencoded } = require('body-parser') +const { urlencoded, json } = require('body-parser') class MetaWebHookServer extends EventEmitter { metaServer @@ -8,9 +8,11 @@ class MetaWebHookServer extends EventEmitter { token constructor(_token, _metaPort) { super() - this.metaServer = this.buildHTTPServer() + this.metaServer = polka() this.metaPort = _metaPort this.token = _token + + this.buildHTTPServer() } /** @@ -21,8 +23,14 @@ class MetaWebHookServer extends EventEmitter { */ incomingMsg = (req, res) => { const { body } = req - const message = body.entry[0].changes[0].value.messages[0] + + const messages = body.entry[0].changes[0].value?.messages + + if (!messages) return + + const [message] = messages const to = body.entry[0].changes[0].value.metadata.display_phone_number + this.emit('message', { from: message.from, to, @@ -55,16 +63,16 @@ class MetaWebHookServer extends EventEmitter { const challenge = query['hub.challenge'] if (!mode || !token) { - return res.sendStatus(403) + return (res.statusCode = 403), res.end('No token!') } if (this.tokenIsValid(mode, token)) { console.log('Webhook verified--->😎😎😎😎') - res.status(200).send(challenge) + return (res.statusCode = 200), res.end(challenge) } if (!this.tokenIsValid(mode, token)) { - res.sendStatus(403) + return (res.statusCode = 403), res.end('No token!') } } @@ -73,12 +81,13 @@ class MetaWebHookServer extends EventEmitter { * @returns */ buildHTTPServer = () => { - polka() + this.metaServer .use(urlencoded({ extended: true })) .get('/webhook', this.verifyToken) - return polka() + this.metaServer .use(urlencoded({ extended: true })) + .use(json()) .post('/webhook', this.incomingMsg) } @@ -91,7 +100,7 @@ class MetaWebHookServer extends EventEmitter { console.log(``) console.log(`[meta]: Agregar esta url "WHEN A MESSAGE COMES IN"`) console.log( - `[meta]: POST http://localhost:${this.metaPort}/meta-hook` + `[meta]: POST http://localhost:${this.metaPort}/webhook` ) console.log(`[meta]: Más información en la documentacion`) console.log(``) diff --git a/starters/apps/base-meta-memory/app.js b/starters/apps/base-meta-memory/app.js index ab26888..c141fad 100644 --- a/starters/apps/base-meta-memory/app.js +++ b/starters/apps/base-meta-memory/app.js @@ -6,7 +6,7 @@ const { addChild, } = require('@bot-whatsapp/bot') -const TwilioProvider = require('@bot-whatsapp/provider/twilio') +const MetaProvider = require('@bot-whatsapp/provider/meta') const MockAdapter = require('@bot-whatsapp/database/mock') /** @@ -79,10 +79,10 @@ const main = async () => { const adapterDB = new MockAdapter() const adapterFlow = createFlow([flowPrincipal]) - const adapterProvider = createProvider(TwilioProvider, { - accountSid: 'YOUR_ACCOUNT_SID', - authToken: 'YOUR_ACCOUNT_TOKEN', - vendorNumber: '+14155238886', + const adapterProvider = createProvider(MetaProvider, { + jwtToken: 'jwtToken', + numberId: 'numberId', + verifyToken: 'verifyToken', }) createBot({ diff --git a/starters/apps/base-meta-memory/package.json b/starters/apps/base-meta-memory/package.json index af95cf3..f86e916 100644 --- a/starters/apps/base-meta-memory/package.json +++ b/starters/apps/base-meta-memory/package.json @@ -14,7 +14,8 @@ "@bot-whatsapp/bot": "latest", "@bot-whatsapp/cli": "latest", "@bot-whatsapp/database": "latest", - "@bot-whatsapp/provider": "latest" + "@bot-whatsapp/provider": "latest", + "axios": "^1.2.1" }, "author": "", "license": "ISC"