public GetUserInfoDialog( BotServices services, IStatePropertyAccessor <OnTurnState> onTurnAccessor, IStatePropertyAccessor <CartState> cartStateAccessor, IStatePropertyAccessor <CustomerState> customerStateAccessor, IPimbotServiceProvider provider) : base(Name) { _services = services; _onTurnAccessor = onTurnAccessor; _cartStateAccessor = cartStateAccessor; _customerStateAccessor = customerStateAccessor; _itemService = provider.ItemService; // Add dialogs var waterfallSteps = new WaterfallStep[] { InitializeStateStepAsync, PromptForNameAsync, PromptForEmailAdress, PromptForPhone, PromptForNameAdress, PromptForPostCode, PromptForCity, PromptForShipping, ResolveShipping, PromptForShippingName, PromptForShippingAddress, PromptForShippingPostCode, PromptForShippingCity, ResolveShippingCity, ConfirmCustomerInfo, ResolveConfirmCustomerInfo, ResolveIsEverythingOk, ConfirmOrder, }; AddDialog(new WaterfallDialog( "start", waterfallSteps)); AddDialog(new TextPrompt(NamePrompt)); AddDialog(new TextPrompt(EmailPrompt, ValidateEmail)); AddDialog(new TextPrompt(PhonePrompt)); AddDialog(new TextPrompt(AdressPrompt)); AddDialog(new TextPrompt(PostCodePrompt)); AddDialog(new TextPrompt(CityPrompt)); AddDialog(new ChoicePrompt(IsShippingAdressMatchPrompt)); AddDialog(new TextPrompt(ShippingNamePrompt)); AddDialog(new TextPrompt(ShippingAdressPrompt)); AddDialog(new TextPrompt(ShippingPostCodePrompt)); AddDialog(new ChoicePrompt(CorrectValuePrompt)); AddDialog(new TextPrompt(ShippingCityPrompt)); AddDialog(new ChoicePrompt(ConfirmUserInfoPrompt)); AddDialog(new ConfirmPrompt(ConfirmOrderPrompt)); }
public MainDispatcher( BotServices services, IStatePropertyAccessor <OnTurnState> onTurnAccessor, UserState userState, ConversationState conversationState, ILoggerFactory loggerFactory, IPimbotServiceProvider provider) : base(nameof(MainDispatcher)) { _services = services ?? throw new ArgumentNullException(nameof(services)); _logger = loggerFactory.CreateLogger <MainDispatcher>(); _onTurnAccessor = onTurnAccessor; _mainDispatcherAccessor = conversationState.CreateProperty <DialogState>(MainDispatcherStateProperty); _userState = userState; _conversationState = conversationState; _customerStateAccessor = conversationState.CreateProperty <CustomerState>("customerProperty"); if (conversationState == null) { throw new ArgumentNullException(nameof(conversationState)); } if (userState == null) { throw new ArgumentNullException(nameof(userState)); } _cartStateAccessor = userState.CreateProperty <CartState>(nameof(CartState)); _dialogs = new DialogSet(_mainDispatcherAccessor); AddDialog(new AddItemDialog(services, onTurnAccessor, _cartStateAccessor, provider)); AddDialog(new RemoveItemDialog(services, onTurnAccessor, _cartStateAccessor)); AddDialog(new GetUserInfoDialog(services, onTurnAccessor, _cartStateAccessor, _customerStateAccessor, provider)); AddDialog(new FindItemDialog(services, onTurnAccessor, _cartStateAccessor, provider)); AddDialog(new ShowCartDialog(services, onTurnAccessor, _cartStateAccessor, provider)); AddDialog(new ShowOrdersDialog(services, onTurnAccessor, provider)); AddDialog(new ShowCategoriesDialog(services, onTurnAccessor, provider)); AddDialog(new DetailItemDialog(services, onTurnAccessor, provider)); }
public AddItemDialog(BotServices services, IStatePropertyAccessor <OnTurnState> onTurnAccessor, IStatePropertyAccessor <CartState> cartStateAccessor, IPimbotServiceProvider provider) : base(Name) { _services = services; _onTurnAccessor = onTurnAccessor; _cartStateAccessor = cartStateAccessor; _itemService = provider.ItemService; // Add dialogs var waterfallSteps = new WaterfallStep[] { InitializeStateStepAsync, PromptForCountStepAsync, ResolveCountAsync, }; AddDialog(new WaterfallDialog( "start", waterfallSteps)); AddDialog(new TextPrompt(CountPrompt, ValidateCount)); }
public DetailItemDialog(BotServices services, IStatePropertyAccessor <OnTurnState> onTurnAccessor, IPimbotServiceProvider provider) : base(Name) { _services = services; _onTurnAccessor = onTurnAccessor; _itemService = provider.ItemService; _featureService = provider.FeatureService; // Add dialogs var waterfallSteps = new WaterfallStep[] { InitializeStateStepAsync, }; AddDialog(new WaterfallDialog( "start", waterfallSteps)); }
public FindItemDialog(BotServices services, IStatePropertyAccessor <OnTurnState> onTurnAccessor, IStatePropertyAccessor <CartState> cartStateAccessor, IPimbotServiceProvider provider) : base(Name) { _services = services; _onTurnAccessor = onTurnAccessor; _cartStateAccessor = cartStateAccessor; _itemService = provider.ItemService; _categoryService = provider.CategoryService; _featureService = provider.FeatureService; // Add dialogs var waterfallSteps = new WaterfallStep[] { InitializeStateStepAsync, ResolveShowItemDialog, AskByAttributesDialog, ResolveAttributeFiltering, AskWhatNext, ResolveShowItems, PrintItems, }; AddDialog(new WaterfallDialog( "start", waterfallSteps)); AddDialog(new ChoicePrompt(ShowAllItemsPrompt)); AddDialog(new ChoicePrompt(DidYouMeanPrompt)); AddDialog(new ChoicePrompt(AskForPropertyPrompt)); AddDialog(new ShowCategoriesDialog(services, onTurnAccessor, provider)); }
public PimBot(BotServices services, UserState userState, ConversationState conversationState, ILoggerFactory loggerFactory, IPimbotServiceProvider provider) { _services = services ?? throw new ArgumentNullException(nameof(services)); _userState = userState ?? throw new ArgumentNullException(nameof(userState)); _conversationState = conversationState ?? throw new ArgumentNullException(nameof(conversationState)); _onTurnAccessor = conversationState.CreateProperty <OnTurnState>("onTurnStateProperty"); _dialogStateAccessor = _conversationState.CreateProperty <DialogState>(nameof(DialogState)); if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } _logger = loggerFactory.CreateLogger <PimBot>(); _logger.LogTrace("Pimbot turn start."); // Verify LUIS configuration. if (!_services.LuisServices.ContainsKey(LuisConfiguration)) { throw new InvalidOperationException($"The bot configuration does not contain a service type of `luis` with the id `{LuisConfiguration}`."); } Dialogs = new DialogSet(_dialogStateAccessor); Dialogs.Add(new MainDispatcher(services, _onTurnAccessor, userState, conversationState, loggerFactory, provider)); }