mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-17 19:26:23 +00:00
feat(provider): ✨ endpoint is added to validate the webhook …
feat(provider): ✨ endpoint is added to validate the webhook …
This commit is contained in:
@@ -10,16 +10,16 @@ const URL = `https://graph.facebook.com/v15.0`
|
||||
*
|
||||
*
|
||||
* Necesitas las siguientes tokens y valores
|
||||
* { token, numberId, vendorNumber, verify_token }
|
||||
* { jwtToken, numberId, vendorNumber, verifyToken }
|
||||
*/
|
||||
|
||||
class MetaProvider extends ProviderClass {
|
||||
metHook
|
||||
token
|
||||
jwtToken
|
||||
numberId
|
||||
constructor({ token, numberId, verifyToken }, _port = 3000) {
|
||||
constructor({ jwtToken, numberId, verifyToken }, _port = 3000) {
|
||||
super()
|
||||
this.token = token
|
||||
this.jwtToken = jwtToken
|
||||
this.numberId = numberId
|
||||
this.metHook = new MetaWebHookServer(verifyToken, _port)
|
||||
this.metHook.start()
|
||||
@@ -60,7 +60,7 @@ class MetaProvider extends ProviderClass {
|
||||
body,
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${this.token}`,
|
||||
Authorization: `Bearer ${this.jwtToken}`,
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
@@ -5,12 +5,12 @@ const { urlencoded } = require('body-parser')
|
||||
class MetaWebHookServer extends EventEmitter {
|
||||
metaServer
|
||||
metaPort
|
||||
verifyToken
|
||||
constructor(_verifyToken, _metaPort) {
|
||||
token
|
||||
constructor(_token, _metaPort) {
|
||||
super()
|
||||
this.metaServer = this.buildHTTPServer()
|
||||
this.metaPort = _metaPort
|
||||
this.verifyToken = _verifyToken
|
||||
this.token = _token
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,14 +32,54 @@ class MetaWebHookServer extends EventEmitter {
|
||||
res.end(json)
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida el token
|
||||
* @alpha
|
||||
* @param {string} mode
|
||||
* @param {string} token
|
||||
* @example tokenIsValid('subscribe', 'MYTOKEN')
|
||||
*/
|
||||
tokenIsValid(mode, token) {
|
||||
return mode === 'subscribe' && this.token === token
|
||||
}
|
||||
|
||||
/**
|
||||
* Verificación del token
|
||||
* @param {*} req
|
||||
* @param {*} res
|
||||
*/
|
||||
verifyToken = (req, res) => {
|
||||
const { query } = req
|
||||
const mode = query['hub.mode']
|
||||
const token = query['hub.verify_token']
|
||||
const challenge = query['hub.challenge']
|
||||
|
||||
if (!mode || !token) {
|
||||
return res.sendStatus(403)
|
||||
}
|
||||
|
||||
if (this.tokenIsValid(mode, token)) {
|
||||
console.log('Webhook verified--->😎😎😎😎')
|
||||
res.status(200).send(challenge)
|
||||
}
|
||||
|
||||
if (!this.tokenIsValid(mode, token)) {
|
||||
res.sendStatus(403)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Contruir HTTP Server
|
||||
* @returns
|
||||
*/
|
||||
buildHTTPServer = () => {
|
||||
polka()
|
||||
.use(urlencoded({ extended: true }))
|
||||
.get('/webhook', this.verifyToken)
|
||||
|
||||
return polka()
|
||||
.use(urlencoded({ extended: true }))
|
||||
.post('/meta-hook', this.incomingMsg)
|
||||
.post('/webhook', this.incomingMsg)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user