botbuilder-dialogs-adaptive
Version:
Rule system for the Microsoft BotBuilder dialog system.
70 lines • 3.25 kB
JavaScript
;
/**
* @module botbuilder-dialogs-adaptive
*/
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateEngineLanguageGenerator = void 0;
const botbuilder_dialogs_1 = require("botbuilder-dialogs");
const botbuilder_dialogs_declarative_1 = require("botbuilder-dialogs-declarative");
const botbuilder_lg_1 = require("botbuilder-lg");
const languageResourceLoader_1 = require("../languageResourceLoader");
const languageGeneratorManager_1 = require("./languageGeneratorManager");
/**
* [LanguageGenerator](xref:botbuilder-dialogs-adaptive.LanguageGenerator) implementation which uses LGFile.
*/
class TemplateEngineLanguageGenerator extends botbuilder_dialogs_1.Configurable {
/**
* Initializes a new instance of the [TemplateEngineLanguageGenerator](xref:botbuilder-dialogs-adaptive.TemplateEngineLanguageGenerator) class.
*
* @param arg1 Optional. An LG [Templates](xref:botbuilder-lg.Templates) or a [Resource](xref:botbuilder-dialogs-declarative.Resource).
* @param arg2 Optional. A `Map` object with a `Resource` array for each key.
*/
constructor(arg1, arg2) {
super();
this.DEFAULTLABEL = 'Unknown';
this.id = '';
if (arguments.length === 0) {
this.lg = new botbuilder_lg_1.Templates();
}
else if (arguments.length === 1 && arg1 instanceof botbuilder_lg_1.Templates) {
this.lg = arg1;
}
else if (arguments.length === 2 && arg1 instanceof botbuilder_dialogs_declarative_1.Resource && arg2 instanceof Map) {
const resourceMapping = arg2;
this.id = arg1.id;
const { prefix: _, language: locale } = languageResourceLoader_1.LanguageResourceLoader.parseLGFileName(this.id);
const importResolver = languageGeneratorManager_1.LanguageGeneratorManager.resourceExplorerResolver(locale, resourceMapping);
const lgResource = new botbuilder_lg_1.LGResource(this.id, arg1.fullName, arg1.readText());
this.lg = botbuilder_lg_1.Templates.parseResource(lgResource, importResolver);
}
}
/**
* Method to generate text from given template and data.
*
* @param dialogContext Context for the current turn of conversation.
* @param template Template to evaluate.
* @param data Data to bind to.
* @returns A Promise string with the evaluated result.
*/
generate(dialogContext, template, data) {
try {
const lgOptions = new botbuilder_lg_1.EvaluationOptions();
lgOptions.locale = dialogContext.getLocale();
const result = this.lg.evaluateText(template, data, lgOptions);
return Promise.resolve(result);
}
catch (e) {
if (this.id !== undefined && this.id === '') {
throw Error(`${this.id}:${e}`);
}
throw Error(e);
}
}
}
exports.TemplateEngineLanguageGenerator = TemplateEngineLanguageGenerator;
TemplateEngineLanguageGenerator.$kind = 'Microsoft.TemplateEngineLanguageGenerator';
//# sourceMappingURL=templateEngineLanguageGenerator.js.map