예제 #1
0
        private async Task MenuReplyReceived(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var response = await result;

            if (response.Text == _priceDialogCommand)
            {
                var form = new FormDialog <PriceCalculationForm>(new PriceCalculationForm(), PriceCalculationForm.BuildForm, FormOptions.PromptInStart);
                context.Call <PriceCalculationForm>(form, FormEnded);
            }
            else if (response.Text == _failDialogCommand)
            {
                await context.Delay(2000);

                throw new Exception();
            }
            else if (response.Text == _cancelDialogCommand)
            {
                await context.Delay(1500);

                await context.PostAsync("До свидания, обращайтесь еще", MessageLocale.RuRu);

                context.Done <object>(null);
            }
            else
            {
                await context.Forward(new MenuReplyLuisDialog(), DialogEnded, response, context.CancellationToken);
            }
        }
예제 #2
0
        public async Task ProcessGoodbye(IDialogContext context, LuisResult result)
        {
            await context.Delay(1000);

            await context.PostAsync("Всего доброго, обращайтесь еще", MessageLocale.RuRu);

            context.Done(false);
        }
예제 #3
0
        public async Task ProcessThankYou(IDialogContext context, LuisResult result)
        {
            await context.Delay(1000);

            await context.PostAsync("Не за что, обращайтесь", MessageLocale.RuRu);

            context.Done(false);
        }
예제 #4
0
        public async Task ProcessHello(IDialogContext context, LuisResult result)
        {
            await context.Delay(1000);

            await context.PostAsync("Добрый день еще раз! Чем могу помочь?", MessageLocale.RuRu);

            context.Done(false);
        }
예제 #5
0
        private async Task FormEnded(IDialogContext context, IAwaitable <PriceCalculationForm> result)
        {
            await context.Delay(3000);

            var message = PopulateMenuMessage(context.MakeMessage(), title: "Чем еще я могу вам помочь?");
            await context.PostAsync(message, context.CancellationToken);

            context.Wait(MenuReplyReceived);
        }
예제 #6
0
        private async Task InitialMessageReceived(IDialogContext context, IAwaitable <object> result)
        {
            await context.PostAsync("Добрый день!", MessageLocale.RuRu);

            await context.Delay(1000);

            var message = PopulateMenuMessage(context.MakeMessage(), title: "Чем я могу вам помочь?");
            await context.PostAsync(message, context.CancellationToken);

            context.Wait(MenuReplyReceived);
        }
예제 #7
0
        public async Task ProcessNone(IDialogContext context, LuisResult result)
        {
            var searcher = new StubQnaSeracher();
            var answer   = searcher.Search(context?.Activity?.AsMessageActivity()?.Text);

            if (answer == null)
            {
                var text = "К сожалению, мне не удалось вас понять. Повторите запрос или позвоните нам по телефону 8(800)100-22-20";
                await context.PostAsync(text, "ru-RU");

                context.Done(false);
            }
            else
            {
                await context.PostAsync(answer.Answer);

                await context.Delay(1000);

                var otherLinksMessage = context.MakeMessage();
                var otherLinksText    = "Другие ссылки, которые могут быть полезны:\n\n";
                otherLinksText += String.Join("\n", answer.Links.Select(l => "* [" + l.Title + "](" + l.Uri.ToString() + ")")) + "\n\n";
                await context.PostAsync(otherLinksText);

                await context.Delay(1000);

                var otherLinksCard = new ThumbnailCard(text: "Не нашли того, что хотели? Позвоните нам!", buttons: new List <CardAction>
                {
                    new CardAction {
                        Type = ActionTypes.OpenUrl, Title = "8(800)100-22-20", Value = "tel:+78001002220"
                    }
                });

                otherLinksMessage.Attachments.Add(otherLinksCard.ToAttachment());
                await context.PostAsync(otherLinksMessage);

                context.Done(true);
            }
        }
예제 #8
0
        private async Task DialogEnded(IDialogContext context, IAwaitable <bool> result)
        {
            var dialogDone = await result;

            if (dialogDone)
            {
                await context.Delay(2000);

                var message = PopulateMenuMessage(context.MakeMessage(), title: "Чем еще я могу вам помочь?");
                await context.PostAsync(message, context.CancellationToken);
            }

            context.Wait(MenuReplyReceived);

            // Оценка опыта использования сервиса
        }