mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-19 03:59:17 +00:00
65 lines
1.6 KiB
JavaScript
65 lines
1.6 KiB
JavaScript
const { EventEmitter } = require('node:events')
|
|
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) {
|
|
super()
|
|
this.twilioServer = this.buildHTTPServer()
|
|
this.twilioPort = _twilioPort
|
|
}
|
|
|
|
/**
|
|
* Mensaje entrante
|
|
* emit: 'message'
|
|
* @param {*} req
|
|
* @param {*} res
|
|
*/
|
|
incomingMsg = (req, res) => {
|
|
const { body } = req
|
|
this.emit('message', {
|
|
from: parseNumber(body.From),
|
|
to: parseNumber(body.To),
|
|
body: body.Body,
|
|
})
|
|
const json = JSON.stringify({ body })
|
|
res.end(json)
|
|
}
|
|
|
|
/**
|
|
* Contruir HTTP Server
|
|
* @returns
|
|
*/
|
|
buildHTTPServer = () => {
|
|
return polka()
|
|
.use(urlencoded({ extended: true }))
|
|
.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]: POST http://localhost:${this.twilioPort}/twilio-hook`
|
|
)
|
|
console.log(`[Twilio]: Más información en la documentacion`)
|
|
console.log(``)
|
|
})
|
|
this.emit('ready')
|
|
}
|
|
}
|
|
|
|
module.exports = TwilioWebHookServer
|