botbuilder-dialogs-adaptive
Version:
Rule system for the Microsoft BotBuilder dialog system.
162 lines • 13.5 kB
JavaScript
"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdaptiveBotComponent = void 0;
const adaptiveDialog_1 = require("./adaptiveDialog");
const botbuilder_1 = require("botbuilder");
const selectors_1 = require("./selectors");
const dynamicBeginDialogDeserializer_1 = require("./dynamicBeginDialogDeserializer");
const adaptive_expressions_1 = require("adaptive-expressions");
const functions_1 = require("./functions");
const generators_1 = require("./generators");
const actions_1 = require("./actions");
const conditions_1 = require("./conditions");
const input_1 = require("./input");
const recognizers_1 = require("./recognizers");
/**
* [BotComponent](xref:botbuilder-core.BotComponent) for adaptive components.
*/
class AdaptiveBotComponent extends botbuilder_1.BotComponent {
/**
* @param services Services Collection to register.
* @param _configuration Configuration for the bot component.
*/
configureServices(services, _configuration) {
adaptive_expressions_1.Expression.functions.add(functions_1.IsDialogActiveFunction.functionName, new functions_1.IsDialogActiveFunction());
adaptive_expressions_1.Expression.functions.add(functions_1.IsDialogActiveFunction.functionAlias, new functions_1.IsDialogActiveFunction());
adaptive_expressions_1.Expression.functions.add(functions_1.HasPendingActionsFunction.functionName, new functions_1.HasPendingActionsFunction());
services.composeFactory('declarativeTypes', (declarativeTypes) => declarativeTypes.concat({
getDeclarativeTypes() {
return [
// Adaptive Dialog
{ kind: adaptiveDialog_1.AdaptiveDialog.$kind, type: adaptiveDialog_1.AdaptiveDialog },
// Actions
{ kind: actions_1.BeginDialog.$kind, type: actions_1.BeginDialog },
{ kind: actions_1.BeginSkill.$kind, type: actions_1.BeginSkill },
{ kind: actions_1.BreakLoop.$kind, type: actions_1.BreakLoop },
{ kind: actions_1.CancelAllDialogs.$kind, type: actions_1.CancelAllDialogs },
{ kind: actions_1.CancelDialog.$kind, type: actions_1.CancelDialog },
{ kind: actions_1.ContinueConversation.$kind, type: actions_1.ContinueConversation },
{ kind: actions_1.ContinueConversationLater.$kind, type: actions_1.ContinueConversation },
{ kind: actions_1.ContinueLoop.$kind, type: actions_1.ContinueLoop },
{ kind: actions_1.DeleteActivity.$kind, type: actions_1.DeleteActivity },
{ kind: actions_1.DeleteProperties.$kind, type: actions_1.DeleteProperties },
{ kind: actions_1.DeleteProperty.$kind, type: actions_1.DeleteProperty },
{ kind: actions_1.EditActions.$kind, type: actions_1.EditActions },
{ kind: actions_1.EditArray.$kind, type: actions_1.EditArray },
{ kind: actions_1.EmitEvent.$kind, type: actions_1.EmitEvent },
{ kind: actions_1.EndDialog.$kind, type: actions_1.EndDialog },
{ kind: actions_1.EndTurn.$kind, type: actions_1.EndTurn },
{ kind: actions_1.ForEach.$kind, type: actions_1.ForEach },
{ kind: actions_1.ForEachPage.$kind, type: actions_1.ForEachPage },
{ kind: actions_1.GetActivityMembers.$kind, type: actions_1.GetActivityMembers },
{ kind: actions_1.GetConversationMembers.$kind, type: actions_1.GetConversationMembers },
{ kind: actions_1.GetConversationReference.$kind, type: actions_1.GetConversationReference },
{ kind: actions_1.GotoAction.$kind, type: actions_1.GotoAction },
{ kind: actions_1.HttpRequest.$kind, type: actions_1.HttpRequest },
{ kind: actions_1.IfCondition.$kind, type: actions_1.IfCondition },
{ kind: actions_1.LogAction.$kind, type: actions_1.LogAction },
{ kind: actions_1.RepeatDialog.$kind, type: actions_1.RepeatDialog },
{ kind: actions_1.ReplaceDialog.$kind, type: actions_1.ReplaceDialog },
{ kind: actions_1.SendActivity.$kind, type: actions_1.SendActivity },
{ kind: actions_1.SendHandoffActivity.$kind, type: actions_1.SendHandoffActivity },
{ kind: actions_1.SetProperties.$kind, type: actions_1.SetProperties },
{ kind: actions_1.SetProperty.$kind, type: actions_1.SetProperty },
{ kind: actions_1.SignOutUser.$kind, type: actions_1.SignOutUser },
{ kind: actions_1.SwitchCondition.$kind, type: actions_1.SwitchCondition },
{ kind: actions_1.TelemetryTrackEventAction.$kind, type: actions_1.TelemetryTrackEventAction },
{ kind: actions_1.ThrowException.$kind, type: actions_1.ThrowException },
{ kind: actions_1.TraceActivity.$kind, type: actions_1.TraceActivity },
{ kind: actions_1.UpdateActivity.$kind, type: actions_1.UpdateActivity },
// Trigger conditions
{ kind: conditions_1.OnActivity.$kind, type: conditions_1.OnActivity },
{ kind: conditions_1.OnAssignEntity.$kind, type: conditions_1.OnAssignEntity },
{ kind: conditions_1.OnBeginDialog.$kind, type: conditions_1.OnBeginDialog },
{ kind: conditions_1.OnCancelDialog.$kind, type: conditions_1.OnCancelDialog },
{ kind: conditions_1.OnChooseEntity.$kind, type: conditions_1.OnChooseEntity },
{ kind: conditions_1.OnChooseIntent.$kind, type: conditions_1.OnChooseIntent },
{ kind: conditions_1.OnChooseProperty.$kind, type: conditions_1.OnChooseProperty },
{ kind: conditions_1.OnCommandActivity.$kind, type: conditions_1.OnCommandActivity },
{ kind: conditions_1.OnCommandResultActivity.$kind, type: conditions_1.OnCommandResultActivity },
{ kind: conditions_1.OnCondition.$kind, type: conditions_1.OnCondition },
{ kind: conditions_1.OnContinueConversation.$kind, type: conditions_1.OnContinueConversation },
{ kind: conditions_1.OnConversationUpdateActivity.$kind, type: conditions_1.OnConversationUpdateActivity },
{ kind: conditions_1.OnDialogEvent.$kind, type: conditions_1.OnDialogEvent },
{ kind: conditions_1.OnEndOfActions.$kind, type: conditions_1.OnEndOfActions },
{ kind: conditions_1.OnEndOfConversationActivity.$kind, type: conditions_1.OnEndOfConversationActivity },
{ kind: conditions_1.OnError.$kind, type: conditions_1.OnError },
{ kind: conditions_1.OnEventActivity.$kind, type: conditions_1.OnEventActivity },
{ kind: conditions_1.OnHandoffActivity.$kind, type: conditions_1.OnHandoffActivity },
{ kind: conditions_1.OnInstallationUpdateActivity.$kind, type: conditions_1.OnInstallationUpdateActivity },
{ kind: conditions_1.OnIntent.$kind, type: conditions_1.OnIntent },
{ kind: conditions_1.OnInvokeActivity.$kind, type: conditions_1.OnInvokeActivity },
{ kind: conditions_1.OnMessageActivity.$kind, type: conditions_1.OnMessageActivity },
{ kind: conditions_1.OnMessageDeleteActivity.$kind, type: conditions_1.OnMessageDeleteActivity },
{ kind: conditions_1.OnMessageReactionActivity.$kind, type: conditions_1.OnMessageReactionActivity },
{ kind: conditions_1.OnMessageUpdateActivity.$kind, type: conditions_1.OnMessageUpdateActivity },
{ kind: conditions_1.OnQnAMatch.$kind, type: conditions_1.OnQnAMatch },
{ kind: conditions_1.OnRepromptDialog.$kind, type: conditions_1.OnRepromptDialog },
{ kind: conditions_1.OnTypingActivity.$kind, type: conditions_1.OnTypingActivity },
{ kind: conditions_1.OnUnknownIntent.$kind, type: conditions_1.OnUnknownIntent },
// Inputs
{ kind: input_1.Ask.$kind, type: input_1.Ask },
{ kind: input_1.AttachmentInput.$kind, type: input_1.AttachmentInput },
{ kind: input_1.ChoiceInput.$kind, type: input_1.ChoiceInput },
{ kind: input_1.ConfirmInput.$kind, type: input_1.ConfirmInput },
{ kind: input_1.DateTimeInput.$kind, type: input_1.DateTimeInput },
{ kind: input_1.NumberInput.$kind, type: input_1.NumberInput },
{ kind: input_1.OAuthInput.$kind, type: input_1.OAuthInput },
{ kind: input_1.TextInput.$kind, type: input_1.TextInput },
// Recognizers
{ kind: recognizers_1.CrossTrainedRecognizerSet.$kind, type: recognizers_1.CrossTrainedRecognizerSet },
{ kind: recognizers_1.MultiLanguageRecognizer.$kind, type: recognizers_1.MultiLanguageRecognizer },
{ kind: recognizers_1.RecognizerSet.$kind, type: recognizers_1.RecognizerSet },
{ kind: recognizers_1.RegexRecognizer.$kind, type: recognizers_1.RegexRecognizer },
{ kind: recognizers_1.AgeEntityRecognizer.$kind, type: recognizers_1.AgeEntityRecognizer },
{ kind: recognizers_1.ChannelMentionEntityRecognizer.$kind, type: recognizers_1.ChannelMentionEntityRecognizer },
{ kind: recognizers_1.ConfirmationEntityRecognizer.$kind, type: recognizers_1.ConfirmationEntityRecognizer },
{ kind: recognizers_1.CurrencyEntityRecognizer.$kind, type: recognizers_1.CurrencyEntityRecognizer },
{ kind: recognizers_1.DateTimeEntityRecognizer.$kind, type: recognizers_1.DateTimeEntityRecognizer },
{ kind: recognizers_1.DimensionEntityRecognizer.$kind, type: recognizers_1.DimensionEntityRecognizer },
{ kind: recognizers_1.EmailEntityRecognizer.$kind, type: recognizers_1.EmailEntityRecognizer },
{ kind: recognizers_1.EntityRecognizerSet.$kind, type: recognizers_1.EntityRecognizerSet },
{ kind: recognizers_1.GuidEntityRecognizer.$kind, type: recognizers_1.GuidEntityRecognizer },
{ kind: recognizers_1.HashtagEntityRecognizer.$kind, type: recognizers_1.HashtagEntityRecognizer },
{ kind: recognizers_1.IpEntityRecognizer.$kind, type: recognizers_1.IpEntityRecognizer },
{ kind: recognizers_1.MentionEntityRecognizer.$kind, type: recognizers_1.MentionEntityRecognizer },
{ kind: recognizers_1.NumberEntityRecognizer.$kind, type: recognizers_1.NumberEntityRecognizer },
{ kind: recognizers_1.OrdinalEntityRecognizer.$kind, type: recognizers_1.OrdinalEntityRecognizer },
{ kind: recognizers_1.PercentageEntityRecognizer.$kind, type: recognizers_1.PercentageEntityRecognizer },
{ kind: recognizers_1.PhoneNumberEntityRecognizer.$kind, type: recognizers_1.PhoneNumberEntityRecognizer },
{ kind: recognizers_1.RegexEntityRecognizer.$kind, type: recognizers_1.RegexEntityRecognizer },
{ kind: recognizers_1.TemperatureEntityRecognizer.$kind, type: recognizers_1.TemperatureEntityRecognizer },
{ kind: recognizers_1.UrlEntityRecognizer.$kind, type: recognizers_1.UrlEntityRecognizer },
// Generators
{ kind: generators_1.TemplateEngineLanguageGenerator.$kind, type: generators_1.TemplateEngineLanguageGenerator },
{ kind: generators_1.ResourceMultiLanguageGenerator.$kind, type: generators_1.ResourceMultiLanguageGenerator },
// Selectors
{ kind: selectors_1.ConditionalSelector.$kind, type: selectors_1.ConditionalSelector },
{ kind: selectors_1.FirstSelector.$kind, type: selectors_1.FirstSelector },
{ kind: selectors_1.RandomSelector.$kind, type: selectors_1.RandomSelector },
{ kind: selectors_1.TrueSelector.$kind, type: selectors_1.TrueSelector },
{ kind: selectors_1.MostSpecificSelector.$kind, type: selectors_1.MostSpecificSelector },
];
},
}, {
getDeclarativeTypes(resourceExplorer) {
return resourceExplorer
.getResources('.schema')
.map((schema) => schema.id.replace(/.schema$/, ''))
.filter((resourceId) => resourceId.endsWith('.dialog'))
.map((resourceId) => ({
kind: resourceId,
type: actions_1.DynamicBeginDialog,
loader: new dynamicBeginDialogDeserializer_1.DynamicBeginDialogDeserializer(resourceExplorer, resourceId),
}));
},
}));
}
}
exports.AdaptiveBotComponent = AdaptiveBotComponent;
//# sourceMappingURL=adaptiveBotComponent.js.map