protected abstract Task OnReceiveActivity(IBotContext context);
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)); }
public FlipCommandAction(IBotContext botContext) : base(botContext) { }
public static void ReplyWithTopicCanceled(IBotContext context) => context.Reply($"OK, I have canceled this alarm.");
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 ?")); }
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)}"); }
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)); }
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); }
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)); }
public Task SendActivity(IBotContext context, IList <Activity> activities, NextDelegate next) { return(_toCall(context, activities, next)); }
public async Task ContextCreated(IBotContext context, MiddlewareSet.NextDelegate next) { context.TemplateManager.Register(this); await next().ConfigureAwait(false); }
public Task ContextCreated(IBotContext context, NextDelegate next) { return(_toCall(context, next)); }
public Task ReceiveActivity(IBotContext context, NextDelegate next) { return(_toCall(context, next)); }
//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); }
private void ShowDefaultMessage(IBotContext context) { context.Reply("'Add Alarm'."); }
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)); } }
public static void ReplyWithStartTopic(IBotContext context) { context.Reply($"Ok, let's add an alarm."); }
public Task ReceiveActivity(IBotContext context, Middleware.MiddlewareSet.NextDelegate next) { Called = true; return(next()); }
public static void ReplyWithConfused(IBotContext context) { context.Reply($"I am sorry, I didn't understand: {context.Request.AsMessageActivity().Text}."); }
public Task ReceiveActivity(IBotContext context, Middleware.MiddlewareSet.NextDelegate next) { _callMe(); return(next()); }
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)); }
public GifUrlDownloadMiscellaneousAction(IBotContext botContext) : base(botContext) { }
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?")); }
/// <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)); }
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 ?")); }
public static CustomState Get(IBotContext context) { return(context.Get <CustomState>(PropertyName)); }
public static void ReplyWithAddedAlarm(IBotContext context, Alarm alarm) { context.Reply(ResponseHelpers.ReplyWithTitle(context, $"Alarm Added", $"{AlarmDescription(context, alarm)}.")); }
public Task SendActivity(IBotContext context, IList <IActivity> activities, MiddlewareSet.NextDelegate next) { _callMe(activities); return(next()); }
public Task <bool> ContinueTopic(IBotContext context) { throw new System.NotImplementedException(); }
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?"); } }