private string GetSuggestedActionsReplyText(IMessageActivity reply, string replyText) { int start = replyText.IndexOf("("); int end = replyText.IndexOf(")") + 1; var suggestedActionSubString = replyText.Substring(start, end - start); int startActions = suggestedActionSubString.IndexOf("'") + 1; int endActions = suggestedActionSubString.LastIndexOf("'"); var suggestedActions = suggestedActionSubString.Substring(startActions, endActions - startActions).Split("/"); reply.SuggestedActions = AdaptiveCards.CreateSuggestedAction(suggestedActions); return(replyText.Replace(suggestedActionSubString, "")); }
private async Task HandleConversation(ITurnContext turnContext, CancellationToken cancellationToken) { var text = turnContext.Activity.Text; IMessageActivity reply = Activity.CreateMessageActivity(); // Handle conversation scenarios if (conversation.ConversationDictionary.ContainsKey(text)) { var replyText = conversation.ConversationDictionary[text]; if (replyText.Contains("Adaptive Card")) { replyText = await GetAdaptiveCardsReplyText(reply, replyText, turnContext, cancellationToken); } if (replyText.Contains("Suggested Action")) { replyText = GetSuggestedActionsReplyText(reply, replyText); } reply.Text = replyText; } else { switch (text.ToLower()) { case "microsoft store": case "adaptive card": // Display an Adaptive Card for Microsoft Store reply.Attachments.Add(AdaptiveCards.CreateAdaptiveCardAttachment("store.json")); break; case "microsoft article": // Display an Adaptive Card for support article reply.Attachments.Add(AdaptiveCards.CreateAdaptiveCardAttachment("article.json")); break; case "suggested action": reply.SuggestedActions = AdaptiveCards.CreateSuggestedAction(new string[] { "10am", "1pm", "3pm" }); break; default: reply.Text = $"I am sorry, I cannot help you with\n'{text}'\n\n If you would like me to transfer you to a customer service agent please type 'Talk to agent'"; break; } } await turnContext.SendActivityAsync(reply, cancellationToken); }