UNPKG

lexica-dialog-core

Version:
43 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const immutable_1 = require("immutable"); const lodash_1 = require("lodash"); const Api_1 = require("../Api"); const Utils_1 = require("../Utils"); const additionalResponseMessageMiddleware = async (context, next) => { await next(); const { uni, uniConfigs, request, responses, messageRepository, intentRepository, logger } = context; if (!lodash_1.isNil(request) && !lodash_1.isNil(request.message) && !lodash_1.isNil(request.type === Api_1.RequestType.TEXT) && uniConfigs.has(Api_1.RunTimeConfig.ADDITIONAL_RESPONSE_MESSAGE) && responses.size > 0) { const config = uniConfigs.get(Api_1.RunTimeConfig.ADDITIONAL_RESPONSE_MESSAGE); const value = config.value; const command = value.COMMAND; const triggerRegexp = new RegExp(value.TRIGGER_REGEXP, 'i'); const triggerUserTotalMessages = value.TRIGGER_USER_TOTAL_MESSAGES; const triggerUserTotalMessagesPercentage = value.TRIGGER_USER_TOTAL_MESSAGES_PERCENTAGE; let hasAdditionalResponseMessage = triggerRegexp.test(request.message); if (!hasAdditionalResponseMessage) { const r = lodash_1.random(0, 100); const count = await messageRepository.countAll(); if (count >= triggerUserTotalMessages && triggerUserTotalMessagesPercentage >= r) { hasAdditionalResponseMessage = true; } } if (hasAdditionalResponseMessage) { const intent = await intentRepository.findByUniCommandName(uni, command); if (lodash_1.isNil(intent)) { logger.warn(`Additional message not found with command: [${command}]`); } else { context.responses = context.responses .concat(Utils_1.intentResponsesToBotResponses(intent.responses, immutable_1.Map(), request.locale)) .toList(); } } } }; exports.default = additionalResponseMessageMiddleware; //# sourceMappingURL=AdditionalResponseMessageMiddleware.js.map