コード例 #1
0
 protected abstract Task OnReceiveActivity(IBotContext context);
コード例 #2
0
 public static void ReplyWithAddConfirmation(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithSuggestions(context, $"Adding Alarm", $"{AlarmDescription(context, alarm)}\n\nDo you want to save this alarm?", YesNo));
 }
コード例 #3
0
 public FlipCommandAction(IBotContext botContext) : base(botContext)
 {
 }
コード例 #4
0
 public static void ReplyWithTopicCanceled(IBotContext context) => context.Reply($"OK, I have canceled this alarm.");
コード例 #5
0
 public static void ReplyWithTitlePrompt(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithTitle(context, $"Adding alarm", $"{AlarmDescription(context, alarm)}\n\nWhat would you like to call your alarm ?"));
 }
コード例 #6
0
 public static void ReplyWithHelp(IBotContext context, Alarm alarm = null)
 {
     context.Reply($"I am working with you to create an alarm.  To do that I need to know the title and time.\n\n{AlarmDescription(context, alarm)}");
 }
コード例 #7
0
 public static void ReplyWithCancelPrompt(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithSuggestions(context, "Cancel Alarm?", $"Did you want to cancel the alarm?\n\n{AlarmDescription(context, alarm)}", YesNo));
 }
コード例 #8
0
        public Task OnReceiveActivity(IBotContext context)
        {
            if (context.Request.Type is ActivityTypes.Message)
            {
                switch (context.State.ConversationProperties["currentIntent"])
                {
                case "addWorkItems":
                    AddWorkItem(context);
                    break;

                default:
                    break;
                }

                switch (context.TopIntent?.Name)
                {
                case "showWorkItems":
                    context.Reply("Here is the list.");
                    // TODO - Query the items
                    break;

                case "addWorkItems":
                    context.Reply("Add workitems element.");
                    context.State.ConversationProperties["currentIntent"] = "addWorkItems";
                    AddWorkItem(context);
                    break;

                default:

                    break;
                }

                //// Use context.State.ConversationProperties["flag"] as a flag for setting the user's name
                //if (context.State.ConversationProperties["flag"] == null)
                //{
                //    // Prompt user for name
                //    context.Reply("Hi. What's your name?");
                //    // Set flag to some non-null value
                //    context.State.ConversationProperties["flag"] = true;
                //}
                //else
                //{
                //    if (context.State.UserProperties["name"] == null)
                //    {
                //        // Save user's name in context.State.UserProperties["name"]
                //        var name = context.Request.AsMessageActivity().Text;
                //        context.State.UserProperties["name"] = name;
                //        // Greet user
                //        context.Reply($"Nice to meet you, {name}.");
                //    }


                //    switch (context.TopIntent?.Name)
                //    {
                //        case "showWorkItems":
                //            context.Reply("Here is the list.");
                //            context.State.ConversationProperties["flagRead"] = true;
                //            break;
                //        case "addWorkItems":
                //            context.Reply("Add workiitems element.");
                //            context.State.ConversationProperties["flagAdd"] = true;
                //            break;
                //        default:
                //            break;


                //    }

                //    if (context.State.ConversationProperties["flagRead"] != null)
                //    {
                //        List<Attachment> attachments = new List<Attachment>();
                //        for (int i = 0; i < 3; i++)
                //        {
                //            HeroCard heroCard = new HeroCard()
                //            {
                //                Title = $"WorkItem titte {i}",
                //                Subtitle = $"Activity {i}",
                //                Images = new List<CardImage>()
                //                {
                //                    new CardImage() { Url = $"https://placeholdit.imgix.net/~text?txtsize=35&txt=Item+{i}&w=500&h=260" }
                //                }
                //            };

                //            attachments.Add(heroCard.ToAttachment());
                //        }

                //        var activity = MessageFactory.Carousel(attachments);
                //        context.Reply(activity);
                //        context.State.ConversationProperties["flagRead"] = null;
                //    }

                //    if (context.State.ConversationProperties["flagAdd"] != null)
                //    {

                //        if (context.State.ConversationProperties["Add_customerid"] == null &&
                //            context.State.ConversationProperties["Add_description"] == null &&
                //            context.State.ConversationProperties["Add_hours"] == null)
                //        {
                //            if (context.State.ConversationProperties["flagCustomeid"] == null)
                //            {
                //                context.Reply("Enter customerid:");
                //                context.State.ConversationProperties["flagCustomeid"] = true;
                //            }
                //            else
                //            {
                //                var customerid = context.Request.AsMessageActivity().Text;
                //                context.State.ConversationProperties["Add_customerid"] = customerid;
                //            }
                //        }

                //        if (context.State.ConversationProperties["Add_customerid"] != null &&
                //            context.State.ConversationProperties["Add_description"] == null &&
                //            context.State.ConversationProperties["Add_hours"] == null)
                //        {
                //            context.Reply("Enter description:");
                //            var description = context.Request.AsMessageActivity().Text;
                //            context.State.ConversationProperties["Add_description"] = description;
                //        }

                //        if (context.State.ConversationProperties["Add_customerid"] != null &&
                //            context.State.ConversationProperties["Add_description"] != null &&
                //            context.State.ConversationProperties["Add_hours"] == null)
                //        {
                //            context.Reply("Enter hours you spent:");
                //            var hours = context.Request.AsMessageActivity().Text;
                //            context.State.ConversationProperties["Add_hours"] = hours;
                //        }

                //        if(context.State.ConversationProperties["Add_hours"] != null &&
                //            context.State.ConversationProperties["Add_description"] != null&&
                //            context.State.UserProperties["name"] != null &&
                //            context.State.ConversationProperties["Add_customerid"] != null)
                //        {
                //            Workitem item = new Workitem();
                //            item.Hours = context.State.ConversationProperties["Add_hours"];
                //            item.Description = context.State.ConversationProperties["Add_description"];
                //            item.Owner = context.State.UserProperties["name"] ;
                //            item.Customerid = context.State.ConversationProperties["Add_customerid"];

                //            context.Reply($"Workitem added - Description:{item.Description}, Owner:{item.Owner}, Customerid:{item.Customerid}, hours:{item.Hours}");

                //            context.State.UserProperties["Add_hours"] = null;
                //            context.State.UserProperties["Add_description"] = null;
                //            context.State.UserProperties["Add_customerid"] = null;
                //        }
            }



            return(Task.CompletedTask);
        }
コード例 #9
0
 public Task <bool> ResumeTopic(IBotContext context)
 {
     // just prompt the user to ask what they want to do
     //context.Reply("What can I do for you?");
     return(ContinueTopic(context));
 }
コード例 #10
0
 public Task SendActivity(IBotContext context, IList <Activity> activities, NextDelegate next)
 {
     return(_toCall(context, activities, next));
 }
コード例 #11
0
 public async Task ContextCreated(IBotContext context, MiddlewareSet.NextDelegate next)
 {
     context.TemplateManager.Register(this);
     await next().ConfigureAwait(false);
 }
コード例 #12
0
 public Task ContextCreated(IBotContext context, NextDelegate next)
 {
     return(_toCall(context, next));
 }
コード例 #13
0
 public Task ReceiveActivity(IBotContext context, NextDelegate next)
 {
     return(_toCall(context, next));
 }
コード例 #14
0
        //public static async Task Send(this BotContext context)
        //{
        //    await context.SendActivity(context, new List<IActivity>()).ConfigureAwait(false);
        //}

        public static BotContext ToBotContext(this IBotContext context)
        {
            return((BotContext)context);
        }
コード例 #15
0
 private void ShowDefaultMessage(IBotContext context)
 {
     context.Reply("'Add Alarm'.");
 }
コード例 #16
0
        public async Task <bool> ContinueTopic(IBotContext context)
        {
            var activeTopic = (ITopic)context.State.ConversationProperties["ActiveTopic"];

            switch (context.Request.Type)
            {
            case ActivityTypes.Message:
                var userinfo = new JObject();
                var user     = "";
                //check if the user is authenticated
                if (context.State.UserProperties["token"] != null)
                {
                    if (context.Request.AsMessageActivity().Text == "logout")
                    {
                        activeTopic = new AuthTopic();
                        context.State.ConversationProperties["ActiveTopic"] = activeTopic;
                        return(await activeTopic.StartTopic(context));
                    }
                    else
                    {
                        try
                        {
                            string             graphRequest = String.Format(CultureInfo.InvariantCulture, "https://graph.microsoft.com/v1.0/me");
                            HttpClient         client       = new HttpClient();
                            HttpRequestMessage request      = new HttpRequestMessage(HttpMethod.Get, graphRequest);
                            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.State.UserProperties["token"]);
                            HttpResponseMessage response = await client.SendAsync(request);

                            if (response.StatusCode == System.Net.HttpStatusCode.OK)
                            {
                                string content = await response.Content.ReadAsStringAsync();

                                userinfo = JObject.Parse(content);
                                user     = userinfo["displayName"].ToString();
                                context.Reply(user + " said: " + context.Request.AsMessageActivity().Text);
                                return(await Task.FromResult(true));
                            }
                            else
                            {
                                activeTopic = new AuthTopic();
                                context.State.ConversationProperties["ActiveTopic"] = activeTopic;
                                context.Request.AsMessageActivity().Text = "signin";
                                return(await activeTopic.StartTopic(context));
                            }
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }
                else
                {
                    if (context.Request.AsMessageActivity().Text == "logout")
                    {
                        context.Reply("You are not logged in");
                        return(await Task.FromResult(true));
                    }
                    else
                    {
                        activeTopic = new AuthTopic();
                        context.State.ConversationProperties["ActiveTopic"] = activeTopic;
                        context.Request.AsMessageActivity().Text = "signin";
                        return(await activeTopic.StartTopic(context));
                    }
                }
                return(await Task.FromResult(false));

            default:
                return(await Task.FromResult(false));
            }
        }
コード例 #17
0
 public static void ReplyWithStartTopic(IBotContext context)
 {
     context.Reply($"Ok, let's add an alarm.");
 }
コード例 #18
0
 public Task ReceiveActivity(IBotContext context, Middleware.MiddlewareSet.NextDelegate next)
 {
     Called = true;
     return(next());
 }
コード例 #19
0
 public static void ReplyWithConfused(IBotContext context)
 {
     context.Reply($"I am sorry, I didn't understand: {context.Request.AsMessageActivity().Text}.");
 }
コード例 #20
0
 public Task ReceiveActivity(IBotContext context, Middleware.MiddlewareSet.NextDelegate next)
 {
     _callMe();
     return(next());
 }
コード例 #21
0
 public static void ReplyWithCancelReprompt(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithSuggestions(context, $"Cancel alarm?", $"Please answer the question with a \"yes\" or \"no\" reply. Did you want to cancel the alarm?\n\n{AlarmDescription(context, alarm)}", YesNo));
 }
コード例 #22
0
 public GifUrlDownloadMiscellaneousAction(IBotContext botContext) : base(botContext)
 {
 }
コード例 #23
0
 public static void ReplyWithTimePromptFuture(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithTitle(context, $"Adding alarm", $"{AlarmDescription(context, alarm)}\n\nYou need to specify a time in the future. What time would you like to set the alarm?"));
 }
コード例 #24
0
 /// <summary>
 /// Method which is called when this topic is resumed after an interruption
 /// </summary>
 /// <param name="context"></param>
 /// <returns></returns>
 public Task <bool> ResumeTopic(IBotContext context)
 {
     // just prompt the user to ask what they want to do
     DefaultTopicResponses.ReplyWithResumeTopic(context);
     return(Task.FromResult(true));
 }
コード例 #25
0
 public static void ReplyWithTitleValidationPrompt(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithTitle(context, $"Adding alarm", $"Your title needs to be between 1 and 100 characterslong\n\n{AlarmDescription(context, alarm)}\n\nWhat would you like to call your alarm ?"));
 }
コード例 #26
0
 public static CustomState Get(IBotContext context)
 {
     return(context.Get <CustomState>(PropertyName));
 }
コード例 #27
0
 public static void ReplyWithAddedAlarm(IBotContext context, Alarm alarm)
 {
     context.Reply(ResponseHelpers.ReplyWithTitle(context, $"Alarm Added", $"{AlarmDescription(context, alarm)}."));
 }
コード例 #28
0
 public Task SendActivity(IBotContext context, IList <IActivity> activities, MiddlewareSet.NextDelegate next)
 {
     _callMe(activities);
     return(next());
 }
コード例 #29
0
 public Task <bool> ContinueTopic(IBotContext context)
 {
     throw new System.NotImplementedException();
 }
コード例 #30
0
ファイル: RootTopic.cs プロジェクト: NT-D/TravelBotv4
        public async override Task OnReceiveActivity(IBotContext context)
        {
            // IMAGE
            var image = context.Get <ImageRecognizeResult>(ImageMiddleware.ImageRecognizerResultKey);

            if (image != null)
            {
                await context.SendActivity("Thaks for sending me a photo!\nLet's see...");

                var keyword = image.PrimaryKeyword();
                var finder  = new Finder();
                var result  = await finder.SearchWithKeywordAsync(keyword);

                if (result != null)
                {
                    SearcherFeedbackState = true;
                    var activity = createReply(context, result);
                    await context.SendActivity(activity);

                    await context.SendActivity("Did you find what you ware looking for?");

                    return;
                }
            }

            if ((context.Request.Type == ActivityTypes.Message) && (context.Request.AsMessageActivity().Text.Length > 0))
            {
                var message  = context.Request.AsMessageActivity();
                var qnamaker = new QnaMaker();
                // If there is an active topic, let it handle this turn until it completes.
                if (HasActiveTopic)
                {
                    await ActiveTopic.OnReceiveActivity(context);

                    return;
                }
                if (!SearcherFeedbackState)
                {
                    await context.SendActivity("Got it!");
                }

                // CHIT
                var chitchater = new ChitChater();
                var answer     = await chitchater.SearchChitChat(message.Text);

                if (answer != null)
                {
                    await context.SendActivity(answer);

                    return;
                }

                // Feedback
                if (SearcherFeedbackState)
                {
                    SearcherFeedbackState = false;
                    var feedbacker = new Feedbacker();
                    var feedback   = await feedbacker.SearchAsync(message.Text);

                    if (feedback == Feedbacker.INTENT.FEEDBACK_NEGATIVE)
                    {
                        await context.SendActivity("Sorry, but could you try agein using another term?");

                        return;
                    }
                    else if (feedback == Feedbacker.INTENT.FEEDBACK_POSITIVE)
                    {
                        await context.SendActivity("No problem!");

                        return;
                    }
                    // Not reterun and continue next line when you get NOEN intent.
                }

                // SelectQuestion
                if (SelectQuestionState)
                {
                    if (int.TryParse(message.Text, out i) && (i < 4))
                    {
                        var selectquestion = questionlist[i];
                        var selectanswer   = await qnamaker.SearchQnaMaker(selectquestion);

                        await context.SendActivity(selectanswer.First().Answer);

                        SelectQuestionState   = false;
                        SearcherFeedbackState = true;
                        return;
                    }
                    else if (turn < maxturn)
                    {
                        await context.SendActivity("Sorry,but please input number(1 - 4)");

                        turn += 1;
                        return;
                    }
                    else
                    {
                        SelectQuestionState = false;
                        await context.SendActivity("too many attempts");

                        await context.SendActivity("OK! You may change your mind.");

                        return;
                    }
                }


                // QnA
                qnamaker = new QnaMaker();
                var queryresults = await qnamaker.SearchQnaMaker(message.Text);

                if (queryresults != null)
                {
                    if (queryresults.First().Questions.Count() == 1)
                    {
                        SearcherFeedbackState = true;
                        await context.SendActivity(queryresults.First().Answer);

                        return;
                    }
                    else
                    {
                        SelectQuestionState   = true;
                        SearcherFeedbackState = true;
                        var messages = "Did you mean? Please input number(1 - 4)";
                        foreach (var q in queryresults.First().Questions.Select((value, index) => new { value, index }))
                        {
                            if (q.index > 2)
                            {
                                messages += "\n\n" + "\n\n" + (q.index + 1) + ".None of adove";
                                questionlist.Add(queryresults.First().Questions[q.index]);
                                break;
                            }
                            messages += "\n\n" + "\n\n" + (q.index + 1) + "." + queryresults.First().Questions[q.index].ToString();
                            questionlist.Add(queryresults.First().Questions[q.index]);
                        }
                        await context.SendActivity(messages);

                        return;
                    }
                }

                // Search
                var finder = new Finder();
                var result = await finder.SearchAsync(message.Text);

                if (result != null)
                {
                    SearcherFeedbackState = true;
                    var activity = createReply(context, result);
                    await context.SendActivity(activity);

                    await context.SendActivity("Did you find what you ware looking for?");

                    return;
                }
                await context.SendActivity("Sorry, but I didn't understand that. Could you try saying that another way?");
            }
        }