lexica-dialog-core
Version:
Core server for Lexica dialog agent.
46 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const intentExecutorMiddleware = async (context, next) => {
const { uni, uniConfigs, request, messenger, commands, intentRepository, sessionRepository, configRepository, messageRepository, issueRepository, senderInfoRepository, sessionService, executors, requestMessage, issue, senderInfo, logger, } = context;
if (!lodash_1.isNil(request) && !lodash_1.isNil(sessionService)) {
const { locale, senderId } = request;
const promises = commands.toArray().map(async (command) => {
if (!lodash_1.isNil(command.intent) && !lodash_1.isNil(command.intent.executors) && command.intent.executors.length > 0) {
const executorContext = {
command,
configRepository,
intentRepository,
issue,
issueRepository,
locale,
messageRepository,
messenger,
messengerName: messenger.name,
requestMessage,
senderId,
senderInfo,
senderInfoRepository,
sessionRepository,
sessionService,
uni,
uniConfigs,
};
for (const name of command.intent.executors) {
if (executors.has(name)) {
await executors.get(name)(executorContext);
}
else {
logger.warn('Executor not found: [%s]', name);
}
}
context.issue = executorContext.issue;
context.requestMessage = executorContext.requestMessage;
}
});
await Promise.all(promises);
}
await next();
};
exports.default = intentExecutorMiddleware;
//# sourceMappingURL=IntentExecutorMiddleware.js.map