botbuilder-dialogs-adaptive
Version:
Rule system for the Microsoft BotBuilder dialog system.
65 lines • 3.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdaptiveRecognizer = void 0;
/**
* @module botbuilder-dialogs-adaptive
*/
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
const adaptive_expressions_1 = require("adaptive-expressions");
const omit_1 = __importDefault(require("lodash/omit"));
const botbuilder_1 = require("botbuilder");
const botbuilder_dialogs_1 = require("botbuilder-dialogs");
/**
* Base class for adaptive recognizers.
*/
class AdaptiveRecognizer extends botbuilder_dialogs_1.Recognizer {
constructor() {
super(...arguments);
/**
* (Optional) Flag that designates whether personally identifiable information (PII) should log to telemetry.
*/
this.logPersonalInformation = new adaptive_expressions_1.BoolExpression('=settings.runtimeSettings.telemetry.logPersonalInformation');
}
/**
* Uses the RecognizerResult to create a list of properties to be included when tracking the result in telemetry.
*
* @param {RecognizerResult} recognizerResult Recognizer Result.
* @param {object} telemetryProperties A list of properties to append or override the properties created using the RecognizerResult.
* @param {DialogContext} dialogContext Dialog Context.
* @returns {Record<string, string>} A collection of properties that can be included when calling the TrackEvent method on the TelemetryClient.
*/
fillRecognizerResultTelemetryProperties(recognizerResult, telemetryProperties, dialogContext) {
if (!dialogContext) {
throw new Error('DialogContext needed for state in AdaptiveRecognizer.fillRecognizerResultTelemetryProperties method.');
}
const { intent, score } = (0, botbuilder_1.getTopScoringIntent)(recognizerResult);
const intentsCount = Object.entries(recognizerResult.intents).length;
const properties = {
TopIntent: intentsCount > 0 ? intent : undefined,
TopIntentScore: intentsCount > 0 ? score.toString() : undefined,
Intents: intentsCount > 0 ? JSON.stringify(recognizerResult.intents) : undefined,
Entities: recognizerResult.entities ? JSON.stringify(recognizerResult.entities) : undefined,
AdditionalProperties: JSON.stringify((0, omit_1.default)(recognizerResult, ['text', 'alteredText', 'intents', 'entities'])),
};
const logPersonalInformation = this.logPersonalInformation instanceof adaptive_expressions_1.BoolExpression
? this.logPersonalInformation.getValue(dialogContext.state)
: this.logPersonalInformation;
if (logPersonalInformation) {
properties['Text'] = recognizerResult.text;
properties['AlteredText'] = recognizerResult.alteredText;
}
// Additional Properties can override "stock" properties.
if (telemetryProperties) {
return Object.assign({}, properties, telemetryProperties);
}
return properties;
}
}
exports.AdaptiveRecognizer = AdaptiveRecognizer;
//# sourceMappingURL=adaptiveRecognizer.js.map