feat(starters): meta memory base template added

This commit is contained in:
vicente1992
2022-12-29 00:01:10 -05:00
parent 086c1c3a36
commit e8d625201e
3 changed files with 25 additions and 15 deletions

View File

@@ -1,6 +1,6 @@
const { EventEmitter } = require('node:events') const { EventEmitter } = require('node:events')
const polka = require('polka') const polka = require('polka')
const { urlencoded } = require('body-parser') const { urlencoded, json } = require('body-parser')
class MetaWebHookServer extends EventEmitter { class MetaWebHookServer extends EventEmitter {
metaServer metaServer
@@ -8,9 +8,11 @@ class MetaWebHookServer extends EventEmitter {
token token
constructor(_token, _metaPort) { constructor(_token, _metaPort) {
super() super()
this.metaServer = this.buildHTTPServer() this.metaServer = polka()
this.metaPort = _metaPort this.metaPort = _metaPort
this.token = _token this.token = _token
this.buildHTTPServer()
} }
/** /**
@@ -21,8 +23,14 @@ class MetaWebHookServer extends EventEmitter {
*/ */
incomingMsg = (req, res) => { incomingMsg = (req, res) => {
const { body } = req 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 const to = body.entry[0].changes[0].value.metadata.display_phone_number
this.emit('message', { this.emit('message', {
from: message.from, from: message.from,
to, to,
@@ -55,16 +63,16 @@ class MetaWebHookServer extends EventEmitter {
const challenge = query['hub.challenge'] const challenge = query['hub.challenge']
if (!mode || !token) { if (!mode || !token) {
return res.sendStatus(403) return (res.statusCode = 403), res.end('No token!')
} }
if (this.tokenIsValid(mode, token)) { if (this.tokenIsValid(mode, token)) {
console.log('Webhook verified--->😎😎😎😎') console.log('Webhook verified--->😎😎😎😎')
res.status(200).send(challenge) return (res.statusCode = 200), res.end(challenge)
} }
if (!this.tokenIsValid(mode, token)) { 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 * @returns
*/ */
buildHTTPServer = () => { buildHTTPServer = () => {
polka() this.metaServer
.use(urlencoded({ extended: true })) .use(urlencoded({ extended: true }))
.get('/webhook', this.verifyToken) .get('/webhook', this.verifyToken)
return polka() this.metaServer
.use(urlencoded({ extended: true })) .use(urlencoded({ extended: true }))
.use(json())
.post('/webhook', this.incomingMsg) .post('/webhook', this.incomingMsg)
} }
@@ -91,7 +100,7 @@ class MetaWebHookServer extends EventEmitter {
console.log(``) console.log(``)
console.log(`[meta]: Agregar esta url "WHEN A MESSAGE COMES IN"`) console.log(`[meta]: Agregar esta url "WHEN A MESSAGE COMES IN"`)
console.log( 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(`[meta]: Más información en la documentacion`)
console.log(``) console.log(``)

View File

@@ -6,7 +6,7 @@ const {
addChild, addChild,
} = require('@bot-whatsapp/bot') } = 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') const MockAdapter = require('@bot-whatsapp/database/mock')
/** /**
@@ -79,10 +79,10 @@ const main = async () => {
const adapterDB = new MockAdapter() const adapterDB = new MockAdapter()
const adapterFlow = createFlow([flowPrincipal]) const adapterFlow = createFlow([flowPrincipal])
const adapterProvider = createProvider(TwilioProvider, { const adapterProvider = createProvider(MetaProvider, {
accountSid: 'YOUR_ACCOUNT_SID', jwtToken: 'jwtToken',
authToken: 'YOUR_ACCOUNT_TOKEN', numberId: 'numberId',
vendorNumber: '+14155238886', verifyToken: 'verifyToken',
}) })
createBot({ createBot({

View File

@@ -14,7 +14,8 @@
"@bot-whatsapp/bot": "latest", "@bot-whatsapp/bot": "latest",
"@bot-whatsapp/cli": "latest", "@bot-whatsapp/cli": "latest",
"@bot-whatsapp/database": "latest", "@bot-whatsapp/database": "latest",
"@bot-whatsapp/provider": "latest" "@bot-whatsapp/provider": "latest",
"axios": "^1.2.1"
}, },
"author": "", "author": "",
"license": "ISC" "license": "ISC"