コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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();
        }
コード例 #3
0
        /// <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();
        }
コード例 #4
0
        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);
        }