lexica-dialog-core
Version:
Core server for Lexica dialog agent.
36 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const immutable_1 = require("immutable");
const intentPreProcessorMiddleware = async (context, next) => {
const { request, commands, preProcessors, uni, uniConfigs, messenger, issue, senderInfo } = context;
if (!lodash_1.isNil(request)) {
const { locale, senderId } = request;
const processorContext = {
issue,
locale,
messengerName: messenger.name,
senderId,
senderInfo,
uni,
uniConfigs,
};
const commandPromises = commands.toArray().map(async (command) => {
const { intent, features } = command;
let processedFeatures = lodash_1.defaultTo(features, immutable_1.Map());
if (!lodash_1.isNil(intent) && !lodash_1.isNil(intent.preProcessors)) {
const intentPreProcessors = intent.preProcessors
.filter(preProcessorName => preProcessors.has(preProcessorName))
.map(preProcessorName => preProcessors.get(preProcessorName));
for (const preProcessor of intentPreProcessors) {
processedFeatures = processedFeatures.merge(await preProcessor(processorContext, processedFeatures));
}
command.features = processedFeatures;
}
});
await Promise.all(commandPromises);
}
await next();
};
exports.default = intentPreProcessorMiddleware;
//# sourceMappingURL=IntentPreProcessorMiddleware.js.map