UNPKG

botbuilder-dialogs-adaptive

Version:

Rule system for the Microsoft BotBuilder dialog system.

65 lines 3.31 kB
"use strict"; 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