UNPKG

lexica-dialog-core

Version:
70 lines 2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const Api_1 = require("./Api"); const immutable_1 = require("immutable"); const intl_messageformat_1 = require("intl-messageformat"); const Intent_1 = require("lexica-dialog-model/dist/Intent"); function intentResponsesToBotResponses(responses, features, locale) { return responses .map(response => intentResponseToBotResponse(response, features, locale)) .reduce((a, b) => a.concat(b), immutable_1.List()) .toList(); } exports.intentResponsesToBotResponses = intentResponsesToBotResponses; function intentResponseToBotResponse(response, features, locale) { let results; if (response.type === Intent_1.ResponseType.TEXT && !lodash_1.isNil(response.messages)) { const message = extractMessage(response.messages, features, locale); const responses = message.split('[^LEXICA^]').map(msg => ({ message: msg, type: Intent_1.ResponseType.TEXT, })); results = immutable_1.List(responses); } else if (response.type === Intent_1.ResponseType.OPTIONS && !lodash_1.isNil(response.options)) { const options = response.options.map(option => ({ command: option.command, features: option.features, message: this.extractMessage(option.messages, features, locale), textOnlyIndicator: option.textOnlyIndicator, })); results = immutable_1.List([ { forceShow: response.forceShow, message: this.extractMessage(response.messages, features, locale), options, type: Intent_1.ResponseType.OPTIONS, }, ]); } else if (response.type === Intent_1.ResponseType.ITEMS && !lodash_1.isNil(response.items)) { const items = response.items.map(item => ({ message: this.extractMessage(item.messages, features, locale), type: item.type, url: item.url, })); results = immutable_1.List([ { items, message: this.extractMessage(response.messages, features, locale), type: Intent_1.ResponseType.ITEMS, }, ]); } else { throw new Api_1.BotError(Api_1.BotErrorCode.INVALID_RESPONSE_TYPE); } return results; } exports.intentResponseToBotResponse = intentResponseToBotResponse; function extractMessage(messages, feature, locale) { const text = messages[Math.floor(Math.random() * messages.length)]; return new intl_messageformat_1.default(text[locale], locale).format(feature.toObject()); } exports.extractMessage = extractMessage; function toConfigMap(configs) { return configs.reduce((map, config) => map.set(config.key.toString(), config), immutable_1.Map()); } exports.toConfigMap = toConfigMap; //# sourceMappingURL=Utils.js.map