/// <summary> /// Wrap BotBuilder action into AdaptiveCard submit action. /// </summary> /// <param name="action"> Target bot builder aciton to be adapted.</param> /// <returns> The wrapped adaptive card submit action.</returns> public static AdaptiveCards.AdaptiveSubmitAction ToAdaptiveCardAction(this CardAction action) { var adaptiveCardAction = new AdaptiveCards.AdaptiveSubmitAction(); adaptiveCardAction.RepresentAsBotBuilderAction(action); return(adaptiveCardAction); }
/// <summary> /// Wrap BotBuilder action into AdaptiveCard submit action. /// </summary> /// <param name="action"> The instance of adaptive card submit action.</param> /// <param name="targetAction"> Target action to be adapted.</param> public static void RepresentAsBotBuilderAction(this AdaptiveCards.AdaptiveSubmitAction action, CardAction targetAction) { if (action == null) { throw new ArgumentNullException(nameof(action)); } if (targetAction == null) { throw new ArgumentNullException(nameof(targetAction)); } var wrappedAction = new CardAction { Type = targetAction.Type, Value = targetAction.Value, Text = targetAction.Text, DisplayText = targetAction.DisplayText, }; JsonSerializerSettings serializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; string jsonStr = action.DataJson ?? "{}"; JToken dataJson = JObject.Parse(jsonStr); dataJson["msteams"] = JObject.FromObject(wrappedAction, JsonSerializer.Create(serializerSettings)); action.Title = targetAction.Title; action.DataJson = dataJson.ToString(); }
/// <summary> /// Wrap BotBuilder action into AdaptiveCard. /// </summary> /// <param name="action"> The instance of adaptive card.</param> /// <param name="targetAction"> Target action to be adapted.</param> public static void RepresentAsBotBuilderAction(this AdaptiveCards.AdaptiveSubmitAction action, CardAction targetAction) { var wrappedAction = new CardAction { Type = targetAction.Type, Value = targetAction.Value, Text = targetAction.Text, DisplayText = targetAction.DisplayText }; JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); serializerSettings.NullValueHandling = NullValueHandling.Ignore; string jsonStr = action.DataJson == null ? "{}" : action.DataJson; JToken dataJson = JObject.Parse(jsonStr); dataJson["msteams"] = JObject.FromObject(wrappedAction, JsonSerializer.Create(serializerSettings)); action.Title = targetAction.Title; action.DataJson = dataJson.ToString(); }
public void CardTests_AdaptiveCard_BotBuilderAction_RepresentAsBotBuilderAction() { var wrapAction = new CardAction { Type = "imback", Value = "Text", Title = "button title" }; var action = new AdaptiveCards.AdaptiveSubmitAction(); action.DataJson = @"{""key"": ""value""}"; action.RepresentAsBotBuilderAction(wrapAction); var expectedAction = JsonConvert.DeserializeObject(@"{ ""type"": ""Action.Submit"", ""title"": ""button title"", ""data"": { ""key"": ""value"", ""msteams"": { ""type"": ""imback"", ""value"": ""Text"" } } }"); Assert.IsTrue(JObject.DeepEquals(JObject.FromObject(expectedAction), JObject.FromObject(action))); var card = new AdaptiveCards.AdaptiveCard(); card.Body.Add(new AdaptiveCards.AdaptiveTextBlock()); card.Actions.Add(action); Attachment attachment = card.ToAttachment(); this.TestCard(attachment); }