Example #1
0
        private async Task <DialogTurnResult> ActAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            string replyText;

            var result = await _recognizer.RecognizeAsync <OrderPizza>(stepContext.Context, cancellationToken);

            var intent = result.TopIntent();

            switch (intent.intent)
            {
            case OrderPizza.Intent.Greet:
                replyText = "¡Hola! ¡Bienvenido a este bot súper inteligente para pedir pizzas. ¿Qué quieres hacer: pedir una pizza, conocer nuestra carta o salir?";
                break;

            case OrderPizza.Intent.OrderPizza:
                return(await StartOrderingPizzaAsync(stepContext, result, cancellationToken));

            case OrderPizza.Intent.OrderStatus:
                replyText = "Aún no está esto implementado. Espera un poco, impaciente. ;)";
                break;

            case OrderPizza.Intent.GetMenu:
                replyText = "Aún no está esto implementado. Espera un poco, impaciente. ;)";
                break;

            default:
                replyText = "¿Qué? Aún soy un poco tontorón así que intenta afinar más con tus órdenes. ¡Gracias! ;)";
                break;
            }
            await stepContext.Context.SendActivityAsync(replyText, replyText, InputHints.ExpectingInput, cancellationToken);

            return(await stepContext.NextAsync());
        }
Example #2
0
        private async Task <DialogTurnResult> ActAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var result = await _recognizer.RecognizeAsync <OrderPizza>(stepContext.Context, cancellationToken);

            var intent  = result.TopIntent();
            var message = $"He entendido que quieres {intent.intent}, con una confianza de {intent.score}.";
            await stepContext.Context.SendActivityAsync(message, message, InputHints.IgnoringInput);

            return(await stepContext.NextAsync());
        }
Example #3
0
        protected async Task <bool> ValidateConfirmation(PromptValidatorContext <bool> validatorContext, CancellationToken cancellationToken)
        {
            var result = await _recognizer.RecognizeAsync <OrderPizza>(validatorContext.Context, cancellationToken);

            var intent = result.TopIntent();

            if (intent.intent == OrderPizza.Intent.Accept || intent.intent == OrderPizza.Intent.Reject)
            {
                validatorContext.Recognized.Succeeded = true;
                validatorContext.Recognized.Value     = intent.intent == OrderPizza.Intent.Accept;
            }
            return(validatorContext.Recognized.Succeeded);
        }
Example #4
0
        private async Task <DialogTurnResult> ActAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            string replyText = string.Empty;

            var result = await _recognizer.RecognizeAsync <OrderPizza>(stepContext.Context, cancellationToken);

            var       intent = result.TopIntent();
            OrderInfo orderInfo;

            switch (intent.intent)
            {
            case OrderPizza.Intent.Greet:
                replyText = "¡Hola! ¡Bienvenido a este bot súper inteligente para pedir pizzas. ¿Qué quieres hacer: pedir una pizza, conocer nuestra carta o salir?";
                break;

            case OrderPizza.Intent.OrderPizza:
                orderInfo = await _orderInfo.GetAsync(stepContext.Context);

                if (orderInfo != null)
                {
                    if ((DateTime.Now - orderInfo.OrderDate).TotalMinutes > 30)
                    {
                        await _orderInfo.DeleteAsync(stepContext.Context, cancellationToken);

                        orderInfo = null;
                    }
                    else
                    {
                        replyText = "Lo siento, tienes un pedido en curso. NO podrás pedir nada más hasta que tu pedido actual esté finalizado.";
                    }
                }

                if (orderInfo == null)
                {
                    return(await StartOrderingPizzaAsync(stepContext, result, cancellationToken));
                }
                break;

            case OrderPizza.Intent.OrderStatus:
                orderInfo = await _orderInfo.GetAsync(stepContext.Context);

                if (orderInfo == null)
                {
                    replyText = "Aún no has hecho ningún pedido. Si quieres, podemos empezar. Dime qué deseas.";
                }
                else
                {
                    int timeElapsed = Convert.ToInt32((DateTime.Now - orderInfo.OrderDate).TotalMinutes);
                    var entry       = (orderInfo.OrderType == OrderType.Delivery ? BotConstants.DeliveryStateMessages : BotConstants.PickupStateMessages)
                                      .FirstOrDefault(e => e.Key >= timeElapsed);
                    if (entry.Value != null)
                    {
                        replyText = entry.Value;
                    }
                    else
                    {
                        replyText = "¡Ya tienes tu pedido (a no ser que el repartidor se lo haya comido, claro). ¡Que aproveche!";
                    }
                }
                break;

            case OrderPizza.Intent.GetMenu:
                replyText = "Aún no está esto implementado. Espera un poco, impaciente. ;)";
                break;

            default:
                replyText = "¿Qué? Aún soy un poco tontorón así que intenta afinar más con tus órdenes. ¡Gracias! ;)";
                break;
            }
            await stepContext.Context.SendActivityAsync(replyText, replyText, InputHints.ExpectingInput, cancellationToken);

            return(await stepContext.NextAsync());
        }