@bot-whatsapp/bot
Advanced tools
Comparing version 0.0.216-alpha.0 to 0.0.217-alpha.0
@@ -176,37 +176,35 @@ const { EventEmitter } = require('node:events') | ||
const endFlow = | ||
(flag, inRef = null) => | ||
async (messages = null, options = { fromGotoFlow: false, end: false }) => { | ||
flag.endFlow = true | ||
endFlowFlag = true | ||
if (typeof messages === 'string' || messages === null) { | ||
await this.sendProviderAndSave(from, createCtxMessage(messages)) | ||
clearQueue() | ||
return | ||
} | ||
(flag) => | ||
async (messages = null, options = { fromGotoFlow: false, end: false }) => { | ||
flag.endFlow = true | ||
endFlowFlag = true | ||
// Procesos de callback que se deben execute como exepciones | ||
if (Array.isArray(messages)) { | ||
// console.log('options.fromGotoFlow', messages) | ||
let counterFor = 0 | ||
// const indexLimit = messages.findIndex((m) => m.ref === inRef) | ||
for (const iteratorCtxMessage of messages) { | ||
// console.log(`Counter ${indexLimit}`) | ||
// if(indexLimit !== -1 && counterFor === indexLimit) break | ||
const scopeCtx = await resolveCbEveryCtx(iteratorCtxMessage, { | ||
omitEndFlow: options.fromGotoFlow, | ||
idleCtx: !!iteratorCtxMessage?.options?.idle, | ||
triggerKey: iteratorCtxMessage.keyword.startsWith('key_'), | ||
}) | ||
if (typeof messages === 'string' || messages === null) { | ||
await this.sendProviderAndSave(from, createCtxMessage(messages)) | ||
clearQueue() | ||
return | ||
} | ||
if(scopeCtx?.endFlow) break | ||
// Procesos de callback que se deben execute como exepciones | ||
if (Array.isArray(messages)) { | ||
// console.log('options.fromGotoFlow', messages) | ||
counterFor++ | ||
// options.fromGotoFlow = false | ||
} | ||
// const indexLimit = messages.findIndex((m) => m.ref === inRef) | ||
for (const iteratorCtxMessage of messages) { | ||
// console.log(`Counter ${indexLimit}`) | ||
// if(indexLimit !== -1 && counterFor === indexLimit) break | ||
const scopeCtx = await resolveCbEveryCtx(iteratorCtxMessage, { | ||
omitEndFlow: options.fromGotoFlow, | ||
idleCtx: !!iteratorCtxMessage?.options?.idle, | ||
triggerKey: iteratorCtxMessage.keyword.startsWith('key_'), | ||
}) | ||
if (scopeCtx?.endFlow) break | ||
// options.fromGotoFlow = false | ||
} | ||
clearQueue() | ||
return | ||
} | ||
clearQueue() | ||
return | ||
} | ||
@@ -291,51 +289,51 @@ // 📄 Esta funcion se encarga de enviar un array de mensajes dentro de este ctx | ||
(flag) => | ||
async (message = null) => { | ||
this.queuePrincipal.clearQueue(from) | ||
flag.fallBack = true | ||
await this.sendProviderAndSave(from, { | ||
...prevMsg, | ||
answer: typeof message === 'string' ? message : message?.body ?? prevMsg.answer, | ||
options: { | ||
...prevMsg.options, | ||
buttons: prevMsg.options?.buttons, | ||
}, | ||
}) | ||
return | ||
} | ||
async (message = null) => { | ||
this.queuePrincipal.clearQueue(from) | ||
flag.fallBack = true | ||
await this.sendProviderAndSave(from, { | ||
...prevMsg, | ||
answer: typeof message === 'string' ? message : message?.body ?? prevMsg.answer, | ||
options: { | ||
...prevMsg.options, | ||
buttons: prevMsg.options?.buttons, | ||
}, | ||
}) | ||
return | ||
} | ||
const gotoFlow = | ||
(flag) => | ||
async (flowInstance, step = 0) => { | ||
const promises = [] | ||
flag.gotoFlow = true | ||
async (flowInstance, step = 0) => { | ||
const promises = [] | ||
flag.gotoFlow = true | ||
if (!flowInstance?.toJson) { | ||
printer([ | ||
`[POSSIBLE_CIRCULAR_DEPENDENCY]: Se ha detectado una dependencia circular.`, | ||
`Para evitar problemas, te recomendamos utilizar 'require'('./ruta_del_flow')`, | ||
`Ejemplo: gotoFlow(helloFlow) --> gotoFlow(require('./flows/helloFlow.js'))`, | ||
`[INFO]: https://bot-whatsapp.netlify.app/docs/goto-flow/`, | ||
]) | ||
return | ||
} | ||
if (!flowInstance?.toJson) { | ||
printer([ | ||
`[POSSIBLE_CIRCULAR_DEPENDENCY]: Se ha detectado una dependencia circular.`, | ||
`Para evitar problemas, te recomendamos utilizar 'require'('./ruta_del_flow')`, | ||
`Ejemplo: gotoFlow(helloFlow) --> gotoFlow(require('./flows/helloFlow.js'))`, | ||
`[INFO]: https://bot-whatsapp.netlify.app/docs/goto-flow/`, | ||
]) | ||
return | ||
} | ||
await delay(flowInstance?.ctx?.options?.delay ?? 0) | ||
await delay(flowInstance?.ctx?.options?.delay ?? 0) | ||
const flowTree = flowInstance.toJson() | ||
const flowTree = flowInstance.toJson() | ||
const flowParentId = flowTree[step] | ||
const flowParentId = flowTree[step] | ||
const parseListMsg = await this.flowClass.find(flowParentId?.ref, true, flowTree) | ||
const parseListMsg = await this.flowClass.find(flowParentId?.ref, true, flowTree) | ||
for (const msg of parseListMsg) { | ||
const msgParse = this.flowClass.findSerializeByRef(msg?.ref) | ||
for (const msg of parseListMsg) { | ||
const msgParse = this.flowClass.findSerializeByRef(msg?.ref) | ||
const ctxMessage = { ...msgParse, ...msg } | ||
await this.sendProviderAndSave(from, ctxMessage).then(() => promises.push(ctxMessage)) | ||
} | ||
await endFlow(flag)(promises, { fromGotoFlow: true, ...{ end: endFlowFlag } }) | ||
return | ||
const ctxMessage = { ...msgParse, ...msg } | ||
await this.sendProviderAndSave(from, ctxMessage).then(() => promises.push(ctxMessage)) | ||
} | ||
await endFlow(flag)(promises, { fromGotoFlow: true, ...{ end: endFlowFlag } }) | ||
return | ||
} | ||
// 📄 [options: flowDynamic]: esta funcion se encarga de responder un array de respuesta esta limitado a 5 mensajes | ||
@@ -346,38 +344,38 @@ // para evitar bloque de whatsapp | ||
(flag, inRef, privateOptions) => | ||
async (listMsg = [], options = { continue: true }) => { | ||
if (!options.hasOwnProperty('continue')) { | ||
options = { ...options, continue: true } | ||
} | ||
async (listMsg = [], options = { continue: true }) => { | ||
if (!options.hasOwnProperty('continue')) { | ||
options = { ...options, continue: true } | ||
} | ||
flag.flowDynamic = true | ||
flag.flowDynamic = true | ||
if (!Array.isArray(listMsg)) { | ||
listMsg = [{ body: listMsg, ...options }] | ||
} | ||
if (!Array.isArray(listMsg)) { | ||
listMsg = [{ body: listMsg, ...options }] | ||
} | ||
const parseListMsg = listMsg.map((opt, index) => createCtxMessage(opt, index)) | ||
const parseListMsg = listMsg.map((opt, index) => createCtxMessage(opt, index)) | ||
// Si endFlowFlag existe y no se omite la finalización del flujo, no hacer nada. | ||
if (endFlowFlag && !privateOptions?.omitEndFlow) { | ||
return | ||
} | ||
// Si endFlowFlag existe y no se omite la finalización del flujo, no hacer nada. | ||
if (endFlowFlag && !privateOptions?.omitEndFlow) { | ||
return | ||
} | ||
this.queuePrincipal.setFingerTime(from, inRef) // Debe decirle al sistema que finalizó el flujo aquí. | ||
this.queuePrincipal.setFingerTime(from, inRef) // Debe decirle al sistema que finalizó el flujo aquí. | ||
for (const msg of parseListMsg) { | ||
if (privateOptions?.idleCtx) { | ||
continue // Saltar al siguiente mensaje si se está en modo idleCtx. | ||
} | ||
const delayMs = msg?.options?.delay ?? this.generalArgs.delay ?? 0 | ||
await delay(delayMs) | ||
await this.sendProviderAndSave(from, msg) | ||
for (const msg of parseListMsg) { | ||
if (privateOptions?.idleCtx) { | ||
continue // Saltar al siguiente mensaje si se está en modo idleCtx. | ||
} | ||
if (options?.continue) { | ||
await continueFlow() | ||
return | ||
} | ||
const delayMs = msg?.options?.delay ?? this.generalArgs.delay ?? 0 | ||
await delay(delayMs) | ||
await this.sendProviderAndSave(from, msg) | ||
} | ||
if (options?.continue) { | ||
await continueFlow() | ||
return | ||
} | ||
return | ||
} | ||
@@ -472,3 +470,3 @@ // 📄 Se encarga de revisar si el contexto del mensaje tiene callback o idle | ||
await runContext() | ||
return {...flags} | ||
return { ...flags } | ||
} | ||
@@ -475,0 +473,0 @@ |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { generateRef } = require('../../utils/hash') |
@@ -0,0 +0,0 @@ const { eventDocument, REGEX_EVENT_DOCUMENT } = require('./eventDocument') |
const addAction = () => async () => {} | ||
module.exports = { addAction } |
@@ -0,0 +0,0 @@ MIT License |
{ | ||
"name": "@bot-whatsapp/bot", | ||
"version": "0.0.216-alpha.0", | ||
"version": "0.0.217-alpha.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "./lib/bundle.bot.cjs", |
@@ -0,0 +0,0 @@ const { EventEmitter } = require('node:events') |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
154531
25
3971
10
3