This commit is contained in:
Leifer Mendez
2022-11-10 22:59:08 +01:00
parent 228530a454
commit 1954a5a90a
13 changed files with 93 additions and 65 deletions

View File

@@ -0,0 +1,32 @@
- **require_action**: Indica que accion se necesita por parte del usuario y debe contener `instructions` obligatorio
```json
{
"instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`,
... otros argumentos
}
```
- **ready**: Indica que todo los procesos para usar el provider han pasado correctamente. Ejemplo validacion de token credenciales etc
retorna: `true`
- **auth_failure**: Indica que un problema ocurrio en el inicio del provider `instructions` obligatorio
```json
{
"instructions": `Debes escanear el QR Code para iniciar session reivsa qr.svg`,
... otros argumentos
}
```
- **message**: Indica que mensaje a entrado se debe contemplar la siguiente estructura
```json
{
"from": 'Numero de telefono o id que identifique al usuario',
"body": 'Mensaje en string que esta entrando',
"hasMedia": 'boolean true o false indicando is tiene un archivo multimedia',
... otros argumentos
}
```

View File

@@ -1,3 +1,5 @@
const { printer } = require('../utils/interactive')
/**
* [ ] Escuchar eventos del provider asegurarte que los provider emitan eventos
* [ ] Guardar historial en db
@@ -13,32 +15,45 @@ class BotClass {
this.databaseClass = _database
this.providerClass = _provider
this.providerClass.on('require_action', (a) => console.log('here??', a))
this.providerClass.on('ready', (a) => console.log('ready??', a))
this.providerClass.on('auth_failure', (a) =>
console.log('auth_failure??', a)
)
this.providerClass.on('authenticated', (a) =>
console.log('authenticated??', a)
)
for (const { event, func } of this.listenerBusEvents()) {
this.providerClass.on(event, func)
}
this.providerClass.on('message', (message) =>
console.log('message?', message)
)
}
listenerBusEvents = () => [
{
event: 'require_action',
func: ({ instructions }) =>
printer(instructions, '⚡⚡ ACCION REQUERIDA ⚡⚡'),
},
{
event: 'ready',
func: () => printer('Provider conectado y listo'),
},
{
event: 'auth_failure',
func: ({ instructions }) =>
printer(instructions, '⚡⚡ ERROR AUTH ⚡⚡'),
},
{
event: 'message',
func: (msg) => this.handleMsg(msg),
},
]
/**
* @private
* @param {*} ctxMessage
*/
handleOnMessage = (ctxMessage) => {
this.databaseClass.saveLog(ctxMessage)
this.continue(ctxMessage)
}
handleEvents = (eventName) => {
if (eventName === 'message') return
if (eventName === 'auth_success') return
if (eventName === 'auth_error') return
handleMsg = ({ body }) => {
this.databaseClass.saveLog(body)
const a = this.flowClass.find(body)
console.log(a)
}
/**

View File

@@ -17,5 +17,7 @@
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {}
"devDependencies": {
"kleur": "^4.1.5"
}
}

View File

@@ -0,0 +1,10 @@
const { yellow, red, bgRed } = require('kleur')
const printer = (message, title) => {
console.clear()
if (title) console.log(bgRed(`${title}`))
console.log(yellow(Array.isArray(message) ? message.join('\n') : message))
console.log(``)
}
module.exports = { printer }