private async Task ShowOrders(IDialogContext context)
        {
            AuthUser authUser = await identityService.GetAuthUserAsync(context);

            if (authUser != null && !authUser.IsExpired)
            {
                await ShowDesired(context, authUser);
            }
            else
            {
                context.Call(dialogFactory.CreateLoginDialog(), ExecutedLoginAsync);
            }
        }
        private async Task ShowBasket(IDialogContext context)
        {
            var authUser = await identityService.GetAuthUserAsync(context);

            // TODO check Expired
            if (authUser != null)
            {
                var basket = await basketService.GetBasket(authUser.UserId, authUser.AccessToken);

                var reply = context.MakeMessage();
                reply.Attachments = new List <Attachment> {
                    RecipeCard(context, basket)
                };
                await context.PostAsync(reply);

                context.Wait(MessageReceivedAsync);
            }
            else
            {
                context.Call(dialogFactory.CreateLoginDialog(), ExecutedLoginAsync);
            }
        }
 public Task Login(IDialogContext context, LuisResult result)
 {
     context.Call(dialogFactory.CreateLoginDialog(), ResumeAfterLoginDialog);
     return(Task.CompletedTask);
 }
Exemple #4
0
        public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument)
        {
            var message = await argument;

            if (message.IsValidTextMessage())
            {
                try
                {
                    var json   = JObject.Parse(message.Text);
                    var action = json.GetValue("ActionType");
                    switch (action.ToString())
                    {
                    case BotActionTypes.NextPage:
                        _currentPage++;
                        await ShowCatalog(context);

                        context.Wait(MessageReceivedAsync);
                        break;

                    case BotActionTypes.PreviousPage:
                        _currentPage--;
                        await ShowCatalog(context);

                        context.Wait(MessageReceivedAsync);
                        break;

                    case BotActionTypes.AddBasket:
                        await AskQuantity(context, json);

                        break;

                    case BotActionTypes.Login:
                        context.Call(dialogFactory.CreateLoginDialog(), LoginReceivedAsync);
                        break;

                    case BotActionTypes.Back:
                        await context.PostAsync(TextResources.Type_what_do_you_want_to_do);

                        context.Done <object>(null);
                        break;
                    }
                }
                catch (JsonReaderException)
                {
                    // not valid JSON object
                    await context.PostAsync(TextResources.Please_make_a_selection);
                    await ShowCatalog(context);

                    context.Wait(MessageReceivedAsync);
                }
            }
            else
            {
                var content = await HandleAttachments(context, message);

                if (content != null)
                {
                    _filter.Tags = await productSearchImageService.ClassifyImageAsync(content);
                    await StartAsync(context);
                }
                else
                {
                    await context.PostAsync(TextResources.Please_make_a_selection);
                    await ShowCatalog(context);

                    context.Wait(MessageReceivedAsync);
                }
            }
        }