public async Task LengthCheckPromptTest(IBotContext context) { dynamic conversationState = ConversationState <StoreItem> .Get(context); TextPrompt askForName = new TextPrompt(MinLengthValidator); if (conversationState["topic"] != "textPromptTest") { conversationState["topic"] = "textPromptTest"; await askForName.Prompt(context, "Your Name:"); } else { var textResult = await askForName.Recognize(context); if (textResult.Succeeded()) { context.Reply(textResult.Value); } else { context.Reply(textResult.Status.ToString()); } } }
public async Task LengthCheckPromptTest(IBotContext context) { dynamic conversationState = ConversationState <StoreItem> .Get(context); TextPrompt askForName = new TextPrompt(MinLengthValidator); if (conversationState["topic"] != "textPromptTest") { conversationState["topic"] = "textPromptTest"; await askForName.Prompt(context, "Your Name:"); } else { var text = await askForName.Recognize(context); if (text != null) { context.Reply("Passed"); context.Reply(text); } else { context.Reply("Failed"); } } }
public static void ShowWorkItems(IBotContext context, List <Workitem> workitems, IHttpContextAccessor accessor, bool lastOnly = false) { if ((workitems == null) || (workitems.Count == 0)) { context.Reply("You have no workitems saved."); return; } List <Attachment> attachments = new List <Attachment>(); if (lastOnly) { workitems = new List <Workitem>() { workitems.LastOrDefault() }; } foreach (var item in workitems) { var card = new WorkItemCard(item); Attachment attachment = new Attachment() { ContentType = AdaptiveCard.ContentType, Content = card.GetCard(accessor) }; attachments.Add(attachment); } var activity = MessageFactory.Carousel(attachments); context.Reply(activity); }
protected override Task OnReceiveActivity(IBotContext context) { var msgActivity = context.Request.AsMessageActivity(); if (msgActivity != null) { var myState = context.GetConversationState <MyState>(); myState.TurnNumber++; // calculate something for us to return int length = (msgActivity.Text ?? string.Empty).Length; // return our reply to the user context.Reply($"[{myState.TurnNumber}] You sent {msgActivity.Text} which was {length} characters"); return(Task.CompletedTask); } var convUpdateActivity = context.Request.AsConversationUpdateActivity(); if (convUpdateActivity != null) { foreach (var newMember in convUpdateActivity.MembersAdded) { if (newMember.Id != convUpdateActivity.Recipient.Id) { context.Reply("Hello and welcome to the echo bot."); } } return(Task.CompletedTask); } return(Task.CompletedTask); }
protected override Task OnReceiveActivity(IBotContext context) { if ((context.Request.Type == ActivityTypes.Message) && (context.Request.AsMessageActivity().Text.Length > 0)) { var message = context.Request.AsMessageActivity().Text; // If bot doesn't have state it needs, prompt for it. if (context.State.UserProperties["name"] == null) { // On the first turn, prompt and update state that conversation is in a prompt. if (context.State.ConversationProperties["prompt"] != "name") { context.State.ConversationProperties["prompt"] = "name"; context.Reply("What is your name?"); } else { // On the subsequent turn, update state with reply and update state that prompt has completed. context.State.ConversationProperties["prompt"] = ""; context.State.UserProperties["name"] = message; context.Reply($"Great, I'll call you '{ context.State.UserProperties["name"] }'!"); } } else { context.Reply($"{ context.State.UserProperties["name"]} said: '{ message }'"); } } return(Task.CompletedTask); }
public async Task ReceiveActivity(IBotContext context, MiddlewareSet.NextDelegate next) { context.Reply("BEFORE"); await next(); context.Reply("AFTER"); }
private async Task <bool> PromptForLogin(IBotContext context) { if (context.Request.AsMessageActivity().Text == "signin") { //show card for the LogIn IMessageActivity activity = ((Activity)context.Request).CreateReply(); var OAuthSignInUrl = await AuthenticationHelper.GetAuthUrlAsync(context.ConversationReference); var card = new SigninCard( text: "Sign in", buttons: new CardAction[] { new CardAction( type: "signin", title: "Sign In", text: "Sign In", value: $"{OAuthSignInUrl}" ) }); activity.Attachments.Add(new Attachment(HeroCard.ContentType, content: card)); context.Reply(activity); //if you want to send the link as a hyperlink --> context.Reply($"[Click Here to Sign In]({OAuthSignInUrl})"); return(true); } else if (context.Request.AsMessageActivity().Text == "logout") { context.State.UserProperties.Remove("token"); string signoutURl = "https://login.microsoftonline.com/common/oauth2/logout"; context.Reply($"In order to finish the sign out, please click at this [link]({signoutURl})."); return(true); } return(false); }
public async Task OnReceiveActivity(IBotContext context) { var msgActivity = context.Request.AsMessageActivity(); if (msgActivity != null) { var conversationState = context.GetConversationState <EchoState>() ?? new EchoState(); conversationState.TurnNumber++; // calculate something for us to return int length = (msgActivity.Text ?? string.Empty).Length; // simulate calling a dependent service that was injected await _myService.DoSomethingAsync(); // return our reply to the user context.Reply($"[{conversationState.TurnNumber}] You sent {msgActivity.Text} which was {length} characters"); } var convUpdateActivity = context.Request.AsConversationUpdateActivity(); if (convUpdateActivity != null) { foreach (var newMember in convUpdateActivity.MembersAdded) { if (newMember.Id != convUpdateActivity.Recipient.Id) { context.Reply("Hello and welcome to the echo bot."); } } } }
public async Task ReceiveActivity(IBotContext context, MiddlewareSet.NextDelegate next) { if (context.Request.Type == ActivityTypes.Message) { var messageActivity = context.Request.AsMessageActivity(); if (!string.IsNullOrEmpty(messageActivity.Text)) { var results = await _qnaMaker.GetAnswers(messageActivity.Text.Trim()).ConfigureAwait(false); if (results.Any()) { if (!string.IsNullOrEmpty(_options.DefaultAnswerPrefixMessage)) { context.Reply(_options.DefaultAnswerPrefixMessage); } context.Reply(results.First().Answer); if (_options.EndActivityRoutingOnAnswer) { //Question is answered, don't keep routing return; } } } } await next().ConfigureAwait(false); }
private Task BotReceiveHandler(IBotContext context) { var msgActivity = context.Request.AsMessageActivity(); if (msgActivity != null) { long turnNumber = context.State.Conversation["turnNumber"] ?? 0; context.State.Conversation["turnNumber"] = ++turnNumber; // calculate something for us to return int length = (msgActivity.Text ?? string.Empty).Length; // return our reply to the user context.Reply($"[{turnNumber}] You sent {msgActivity.Text} which was {length} characters"); return(Task.CompletedTask); } var convUpdateActivity = context.Request.AsConversationUpdateActivity(); if (convUpdateActivity != null) { foreach (var newMember in convUpdateActivity.MembersAdded) { if (newMember.Id != convUpdateActivity.Recipient.Id) { context.Reply("Hello and welcome to the echo bot."); } } return(Task.CompletedTask); } return(Task.CompletedTask); }
public RootTopic(IBotContext context) : base(context) { // User state initialization should be done once in the welcome // new user feature. Placing it here until that feature is added. if (context.State.UserProperties[USER_STATE_ALARMS] == null) { context.State.UserProperties[USER_STATE_ALARMS] = new List <Alarm>(); } this.SubTopics.Add(ADD_ALARM_TOPIC, () => { var addAlarmTopic = new AddAlarmTopic(); addAlarmTopic.Set .OnSuccess((ctx, alarm) => { this.ClearActiveTopic(); ((List <Alarm>)ctx.State.UserProperties[USER_STATE_ALARMS]).Add(alarm); context.Reply($"Added alarm named '{ alarm.Title }' set for '{ alarm.Time }'."); }) .OnFailure((ctx, reason) => { this.ClearActiveTopic(); context.Reply("Let's try something else."); this.ShowDefaultMessage(ctx); }); return(addAlarmTopic); }); }
private Task BotReceiveHandler(IBotContext context, MiddlewareSet.NextDelegate next) { if (context.Request.Type == ActivityTypes.Message) { context.Reply($"the top intent was: {context.TopIntent.Name}"); foreach (var entity in context.TopIntent.Entities) { context.Reply($"entity: {entity.ValueAs<string>()}"); } } return(Task.CompletedTask); }
public async Task ReceiveActivity(IBotContext context, MiddlewareSet.NextDelegate next) { context.Reply("BEFORE"); try { await next(); } catch (Exception ex) { context.Reply("CAUGHT:" + ex.Message); } context.Reply("AFTER"); }
private async Task BotReceiveHandler(IBotContext context, MiddlewareSet.NextDelegate next) { if (context.Request.Type == ActivityTypes.Message) { context.Reply($"echo: {context.Request.AsMessageActivity().Text}"); } }
public static IBotContext ShowTyping(this IBotContext context) { Activity activity = ((Activity)context.Request).CreateReply(); activity.Type = ActivityTypes.Typing; return(context.Reply((IActivity)activity)); }
public async Task MyCodeHandler(IBotContext context) { Assert.AreEqual(true, context.State["ContextCreated"]); Assert.IsTrue(context.Request.AsMessageActivity().Text.Contains("ReceiveActivity")); Assert.IsFalse(context.Request.AsMessageActivity().Text.Contains("SendActivity")); if (context.Request.AsMessageActivity().Text.StartsWith("proactive")) { #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed var reference = context.ConversationReference; Task.Run(async() => { await Task.Delay(1000).ConfigureAwait(false); await context.Adapter.ContinueConversation(reference, async(context2) => { Assert.AreEqual(true, context2.State["ContextCreated"]); Assert.IsNull(context2.Request); context2.Reply("proactive"); }).ConfigureAwait(false); }); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed return; } else { context.Reply(context.Request.AsMessageActivity().Text); } }
private Task BotReceiveHandler(IBotContext context) { if (context.Request.Type == ActivityTypes.Message) { context.Reply("hello"); } return(Task.CompletedTask); }
protected override Task ReceiveMessage(IBotContext context, IMessageActivity activity) { long turnNumber = context.State.ConversationProperties["turnNumber"] ?? 0; context.State.ConversationProperties["turnNumber"] = ++turnNumber; context.Reply($"[{turnNumber}] echo: {activity.Text}"); return(Task.CompletedTask); }
public static IBotContext Delay(this IBotContext context, int duration) { Activity activity = ((Activity)context.Request).CreateReply(); activity.Type = ActivityTypesEx.Delay; activity.Value = duration; return(context.Reply(activity)); }
protected override Task OnReceiveActivity(IBotContext context) { if (context.Request.Type == ActivityTypes.Message) { context.Reply($@"You said {context.Request.AsMessageActivity().Text}"); } return(Task.CompletedTask); }
public async Task MyBotLogic(IBotContext context) { switch (context.Request.AsMessageActivity().Text) { case "count": context.Reply("one"); context.Reply("two"); context.Reply("three"); break; case "ignore": break; default: context.Reply($"echo:{context.Request.AsMessageActivity().Text}"); break; } }
private Task BotReceiveHandler(IBotContext context, MiddlewareSet.NextDelegate next) { if (context.Request.Type == ActivityTypes.Message && context.Responses.Count == 0) { // add app logic when QnA Maker doesn't find an answer context.Reply("No good match found in the KB."); } return(Task.CompletedTask); }
private void ShowHelp(IBotContext context) { var message = "Here's what I can do:\n\n"; message += "To see your work items, you could say 'Show workitems'.\n\n"; message += "To add a work item, you could say 'Add workitem'.\n\n"; message += "To see this again, you could say 'Help'."; context.Reply(message); }
private void ShowHelp(IBotContext context) { var message = "Here's what I can do:\n\n"; message += "To see your alarms, say 'Show Alarms'.\n\n"; message += "To add an alarm, say 'Add Alarm'.\n\n"; message += "To delete an alarm, say 'Delete Alarm'.\n\n"; message += "To see this again, say 'Help'."; context.Reply(message); }
protected override Task ReceiveConversationUpdate(IBotContext context, IConversationUpdateActivity activity) { foreach (var newMember in activity.MembersAdded) { if (newMember.Id != activity.Recipient.Id) { context.Reply("Hello and welcome to the echo bot."); } } return(Task.CompletedTask); }
public static void ShowAlarms(IBotContext context, List <Alarm> alarms) { if ((alarms == null) || (alarms.Count == 0)) { context.Reply("You have no alarms."); return; } if (alarms.Count == 1) { context.Reply($"You have one alarm named '{ alarms[0].Title }', set for '{ alarms[0].Time }'."); return; } string message = $"You have { alarms.Count } alarms: \n\n"; foreach (var alarm in alarms) { message += $"'{ alarm.Title }' set for '{ alarm.Time }' \n\n"; } context.Reply(message); }
public async Task ReceiveActivity(IBotContext context, MiddlewareSet.NextDelegate next) { if (context.Request.Type == ActivityTypes.Message) { var results = await this.GetAnswers(context.Request.AsMessageActivity().Text.Trim()).ConfigureAwait(false); if (results.Any()) { context.Reply(results.First().Answer); } } await next().ConfigureAwait(false); }
public override Task OnReceiveActivity(IBotContext context) { if (HasActiveTopic) { ActiveTopic.OnReceiveActivity(context); return(Task.CompletedTask); } // If there are no alarms to delete... if (this.State.Alarms.Count == 0) { context.Reply("There are no alarms to delete."); return(Task.CompletedTask); } if (this.State.AlarmIndex == null) { // If there is only one alarm to delete, use that index. No need to prompt. if (this.State.Alarms.Count == 1) { AlarmsView.ShowAlarms(context, this.State.Alarms); this.State.AlarmIndex = 0; } else { this.SetActiveTopic(WHICH_ALARM_PROMPT); this.ActiveTopic.OnReceiveActivity(context); return(Task.CompletedTask); } } this.State.Alarm.Title = this.State.Alarms[(int)this.State.AlarmIndex].Title; if (this.State.DeleteConfirmed == null) { this.SetActiveTopic(CONFIRM_DELETE_PROMPT); this.ActiveTopic.OnReceiveActivity(context); return(Task.CompletedTask); } this.OnSuccess(context, new DeleteAlarmTopicValue { Alarm = this.State.Alarm, AlarmIndex = (int)this.State.AlarmIndex, DeleteConfirmed = (bool)this.State.DeleteConfirmed }); return(Task.CompletedTask); }
private void ShowDefaultMessage(IBotContext context) { if (context.State.ConversationProperties["flagInit"] == null) { // Prompt user for name context.Reply("Hi. What's your name?"); // Set flag to some non-null value context.State.ConversationProperties["flagInit"] = true; } else { if (context.State.UserProperties["owner"] == null) { // Save user's name in context.State.UserProperties["name"] var name = context.Request.AsMessageActivity().Text; context.State.UserProperties["owner"] = name; // Greet user context.Reply($"Nice to meet you, {name}."); } //context.Reply("Choose an action: 'Add workitem', 'Show workitems', 'Help'."); context.Reply("How can I help you? Type 'help' to show actions available."); } }
public Task AddWorkItem(IBotContext context) { //switch var message = context.Request.AsMessageActivity(); if (context.State.ConversationProperties["currentState"] == null) { context.Reply("Enter customerid:"); context.State.ConversationProperties["currentState"] = "customerId"; return(Task.CompletedTask); } switch (context.State.ConversationProperties["currentState"]) { case "customerId": context.State.ConversationProperties["customerId"] = message.Text; context.Reply("Enter description:"); context.State.ConversationProperties["currentState"] = "description"; break; case "description": context.State.ConversationProperties["description"] = message.Text; context.Reply("Enter work hours:"); context.State.ConversationProperties["currentState"] = "hours"; break; case "hours": context.State.ConversationProperties["hours"] = message.Text; // Recognize number NumberModel numberModel = (NumberModel)NumberRecognizer.Instance.GetNumberModel(Culture.English); var result = numberModel.Parse(context.Request.AsMessageActivity().Text); if (result.Count > 0 && long.TryParse(result[0].Resolution.Values.FirstOrDefault().ToString(), out long n)) { context.Reply($"You entered: {n}"); context.Reply("Enter attachment:"); context.State.ConversationProperties["currentState"] = "attachment"; } else { context.Reply("Invalid number. Enter an integer."); } break; default: // Once you completed your steps context.State.ConversationProperties["currentIntent"] = null; break; } return(Task.CompletedTask); }