diff --git a/packages/bot/core/core.class.js b/packages/bot/core/core.class.js index 8cf2bf5d9..b2d0c9a2f 100644 --- a/packages/bot/core/core.class.js +++ b/packages/bot/core/core.class.js @@ -22,7 +22,7 @@ class CoreClass { flowClass databaseClass providerClass - generalArgs = { blackList: [], listEvents: {} } + generalArgs = { blackList: [], listEvents: {}, delay: 0 } constructor(_flow, _database, _provider, _args) { this.flowClass = _flow this.databaseClass = _database @@ -77,7 +77,6 @@ class CoreClass { let fallBackFlag = false if (this.generalArgs.blackList.includes(from)) return if (!body) return - if (!body.length) return let prevMsg = await this.databaseClass.getPrevByNumber(from) const refToContinue = this.flowClass.findBySerialize(prevMsg?.refSerialize) @@ -131,7 +130,7 @@ class CoreClass { const queue = [] for (const ctxMessage of messageToSend) { if (endFlowFlag) return - const delayMs = ctxMessage?.options?.delay || 0 + const delayMs = ctxMessage?.options?.delay ?? this.generalArgs.delay ?? 0 if (delayMs) await delay(delayMs) await QueuePrincipal.enqueue(() => this.sendProviderAndSave(numberOrId, ctxMessage).then(() => resolveCbEveryCtx(ctxMessage)) @@ -302,8 +301,12 @@ class CoreClass { */ sendProviderAndSave = async (numberOrId, ctxMessage) => { const { answer } = ctxMessage - await this.providerClass.sendMessage(numberOrId, answer, ctxMessage) - await this.databaseClass.save({ ...ctxMessage, from: numberOrId }) + + if (answer && answer.length && answer !== '__call_action__') { + await this.providerClass.sendMessage(numberOrId, answer, ctxMessage) + await this.databaseClass.save({ ...ctxMessage, from: numberOrId }) + } + return } @@ -332,7 +335,7 @@ class CoreClass { sendFlowSimple = async (messageToSend, numberOrId) => { const queue = [] for (const ctxMessage of messageToSend) { - const delayMs = ctxMessage?.options?.delay || 0 + const delayMs = ctxMessage?.options?.delay ?? this.generalArgs.delay ?? 0 if (delayMs) await delay(delayMs) QueuePrincipal.enqueue(() => this.sendProviderAndSave(numberOrId, ctxMessage)) } diff --git a/packages/bot/io/methods/addAction.js b/packages/bot/io/methods/addAction.js new file mode 100644 index 000000000..46cbc18bf --- /dev/null +++ b/packages/bot/io/methods/addAction.js @@ -0,0 +1,3 @@ +const addAction = () => async () => {} + +module.exports = { addAction } diff --git a/packages/bot/io/methods/addAnswer.js b/packages/bot/io/methods/addAnswer.js index 5236c149b..74e3d81cf 100644 --- a/packages/bot/io/methods/addAnswer.js +++ b/packages/bot/io/methods/addAnswer.js @@ -98,6 +98,7 @@ const addAnswer = ctx, ref: ctx.ref, addAnswer: addAnswer(ctx), + addAction: (cb = () => null) => addAnswer(ctx)('__call_action__', null, cb), toJson: toJson(ctx), } } diff --git a/packages/bot/io/methods/addKeyword.js b/packages/bot/io/methods/addKeyword.js index 50a5c0c39..e4d545dff 100644 --- a/packages/bot/io/methods/addKeyword.js +++ b/packages/bot/io/methods/addKeyword.js @@ -44,6 +44,7 @@ const addKeyword = (keyword, options) => { ctx, ref: ctx.ref, addAnswer: addAnswer(ctx), + addAction: (cb = () => null) => addAnswer(ctx)('__call_action__', null, cb), toJson: toJson(ctx), } }