コード例 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UStoreBot"/> class.
        /// </summary>
        /// <param name="botServices">Bot services.</param>
        /// <param name="accessors">Bot State Accessors.</param>
        public UStoreBot(BotServices services, UserState userState, ConversationState conversationState, ILoggerFactory loggerFactory, UStoreDBContext ucontext)
        {
            _services          = services ?? throw new ArgumentNullException(nameof(services));
            _userState         = userState ?? throw new ArgumentNullException(nameof(userState));
            _conversationState = conversationState ?? throw new ArgumentNullException(nameof(conversationState));

            _greetingStateAccessor = _userState.CreateProperty <GreetingState>(nameof(GreetingState));
            _recipeStateAccessor   = _userState.CreateProperty <RecipeState>(nameof(RecipeState));
            _dialogStateAccessor   = _conversationState.CreateProperty <DialogState>(nameof(DialogState));
            _context = ucontext;

            // 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 GreetingDialog(_greetingStateAccessor, loggerFactory));
            Dialogs.Add(new RecipeDialog(_recipeStateAccessor, loggerFactory, _context));
        }
コード例 #2
0
        public RecipeDialog(IStatePropertyAccessor <RecipeState> userProfileStateAccessor, ILoggerFactory loggerFactory, UStoreDBContext context)
            : base(nameof(RecipeDialog))
        {
            _context = context;

            UserProfileAccessor = userProfileStateAccessor ?? throw new ArgumentNullException(nameof(userProfileStateAccessor));

            var waterfallSteps = new WaterfallStep[]
            {
                InitializeStateStepAsync,             // dialogo de inicialização , verifica se já existe state
                CheckIfUserNeedsHelpWithMenu,         // verificar se o utilizador quer mandar vir comida
                CheckPromotions,                      // verifica se existem ingredientes em promoção
                UseRecipeOfTheWeek,                   // dialogo em que sugerimos receita do mês mais 2 receitas random
                DisplayRecipeStepAsync,               // dialogo que apresenta ao utilizador uma lista de recipes disponiveis
                NumberOfPersonForDinnerAsync,         // pergunta quantas pessoas são para jantar
                DisplayNecessaryIngredientsListAsync, // dialogo que apresenta a lista de ingredientes necessários para uma determinada recipeLoop
                DisplayBillUser,                      // dialogo que apresenta conta final ao utilizador e pede confirmação
                DisplayPurchaseCompleted,             // dialogo que apresenta confirmação ao utilizador que a compra foi terminada com sucesso
                PlanEventAsync,                       // pergunta data ao utilizador e marca evento
                ConfirmDateAsync,                     // confirma que a data foi bem inserida e marca o evento e envia o mail
            };

            AddDialog(new WaterfallDialog(FluxoEscolhaReceitas, waterfallSteps));
            AddDialog(new ConfirmPrompt(DialogPromptIds.OrderFoodPrompt, null));
            AddDialog(new ConfirmPrompt(DialogPromptIds.UserRecipeOfTheWeekPrompt, null));
            AddDialog(new TextPrompt(DialogPromptIds.RecipePrompt, ValidateRecipe));
            AddDialog(new TextPrompt(DialogPromptIds.SugestedRecipePrompt, ValidateOptionRecipe)); // ValidateOption;
            AddDialog(new TextPrompt(DialogPromptIds.AskForUserInputIngredient, null));
            AddDialog(new NumberPrompt <int>(DialogPromptIds.NumberOfPeopleForDinnerPrompt));
            AddDialog(new ConfirmPrompt(DialogPromptIds.ConfirmRecipePrompt, null)); // ValidateConfirmRecipePrompt));
            AddDialog(new ConfirmPrompt(DialogPromptIds.ConfirmAddStorageItemsPrompt, null));
            AddDialog(new ConfirmPrompt(DialogPromptIds.ConfirmTotalPrice, null));
            AddDialog(new ConfirmPrompt(DialogPromptIds.OrderPizzaPrompt, null));
            AddDialog(new DateTimePrompt(DialogPromptIds.DinnerDatePrompt, DateValidatorAsync));
            AddDialog(new ConfirmPrompt(DialogPromptIds.ConfirmDatePrompt, null));
            AddDialog(new ConfirmPrompt(DialogPromptIds.AskUserOrderPizzaPrompt, null));
        }
コード例 #3
0
 public UStoreDBManagement(UStoreDBContext context)
 {
     _context = context;
 }