lexica-dialog-core
Version:
Core server for Lexica dialog agent.
43 lines • 2.13 kB
JavaScript
;
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