Можно ли выровнять Действия по вертикали в адаптивной карте в C#? - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь выровнять свои действия по вертикали в моей адаптивной карте. Таким образом, кнопки будут одна поверх другой. Вот мой код:

var card = new AdaptiveCard("1.0") { Height = AdaptiveHeight.Auto };
            var body = new List<AdaptiveElement>();
            var actionSet = new AdaptiveActionSet() { Type = AdaptiveActionSet.TypeName, Separator = true};
            var title = new AdaptiveTextBlock()
            {
                Text = ConfusedStrings.TITLE,
                Size = AdaptiveTextSize.Medium
            };

            body.Add(title);
            body.Add(actionSet);
            card.Body = body;

            foreach(var intent in intentCurrentList)
            {
                actionSet.Actions.Add(new AdaptiveSubmitAction()
                {    
                    Title = intent.Value.ToString(),
                    Data = intent.Value.ToString()
                });
            }



        var attachment = new Attachment()
        {
            ContentType = AdaptiveCard.ContentType,
            Content = card,
        };

        return MessageFactory.Attachment(attachment, inputHint: InputHints.AcceptingInput);

ОБНОВЛЕНИЕ:

Адаптивные карты 1.2 теперь доступны для Команд. AdaptiveSubmitAction со строкой не работает, когда вы вводите значение. Вы должны передать ему завершенный Json объект, как в этом do c, используя тип ImBack, в https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-actions#adaptive -cards-with- imback-action :

public static IMessageActivity BuildIntentSelectionCardJustin(ITurnContext turnContext, dynamic data)
        {

            var intentRefList = GetIntentRefList();
            var intentCurrentList = intentRefList.Where(kv => ((IList<DispatchLuis.Intent>)data).Any(di => di.ToString().Equals(kv.Key)) || (kv.Key == Intent.None.ToString()));

            var adaptiveCard = new AdaptiveCard("1.2");


            var body = new List<AdaptiveElement>();

            foreach (var intent in intentCurrentList)
            {
                var actionSet = new AdaptiveActionSet();
                dynamic dataObject = new JObject();
                dataObject.msteams = new JObject();
                dataObject.msteams.type = "imBack";
                dataObject.msteams.value = intent.Value;
                var actionSubmit = new AdaptiveSubmitAction()
                {
                    Title = intent.Value,
                    Data = turnContext.Activity.ChannelId != "emulator" ?  dataObject : intent.Value
                };
                actionSet.Actions.Add(actionSubmit);
                body.Add(actionSet);
            }

            adaptiveCard.Body = body;


            var attachment = new Attachment()
            {
                ContentType = AdaptiveCard.ContentType,
                Content = adaptiveCard,
            };
            return MessageFactory.Attachment(attachment, inputHint: InputHints.AcceptingInput);
        }

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020

Адаптивные карты 1.2 функции работают в командах для меня. Команды поддерживают 1.2 в соответствии с этой страницей: https://docs.microsoft.com/en-us/adaptive-cards/resources/partners

Если ваша проблема заключалась в том, что команды не поддерживают Adaptive Cards 1.2, вы вообще не должны видеть визуализацию вашей карты. Тот факт, что кнопки отображаются, но не отвечают, означает, что вы неправильно отформатировали карту. Я вижу, что вы пытаетесь использовать строковые данные действий, которые не работают в командах. Данные действия отправки должны быть преобразованы в объект JSON.

Если вы пытаетесь смоделировать imBack , команды действительно предоставляют для этого способ:

{
  "type": "Action.Submit",
  "title": "Click me for imBack",
  "data": {
    "msteams": {
        "type": "imBack",
        "value": "Text to reply in chat"
    }
  }
}

Пожалуйста, обратитесь к моему сообщению в блоге для получения дополнительной информации: https://blog.botframework.com/2019/07/02/using-adaptive-cards-with-the-microsoft-bot-framework/

0 голосов
/ 09 апреля 2020

это действительно зависит от того, где вы отображаете карту.

«Хост» карты, например, MS Teams или Webchat et c, определяет внешний вид карт. Часть этого - определение, выровнены ли действия вертикально или нет.

Смотрите здесь о том, что такое конфигурация хоста: https://docs.microsoft.com/en-us/adaptive-cards/sdk/rendering-cards/javascript/host-config

Если вы размещаете (показываете) карту самостоятельно, вы можете изменить ее. В противном случае вы не можете.

Единственный вариант, который у вас есть, это использовать наборы действий в стеке, как здесь:

{
    "type": "AdaptiveCard",
    "version": "1.0",
    "body": [
        {
            "type": "ActionSet",
            "actions": [
                {
                    "type": "Action.Submit",
                    "title": "Action.Submit"
                }
            ]
        },
        {
            "type": "ActionSet",
            "actions": [
                {
                    "type": "Action.ShowCard",
                    "title": "Action.ShowCard",
                    "card": {
                        "type": "AdaptiveCard",
                        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
                    }
                }
            ]
        },
        {
            "type": "ActionSet",
            "actions": [
                {
                    "type": "Action.ShowCard",
                    "title": "Action.ShowCard",
                    "card": {
                        "type": "AdaptiveCard",
                        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
                    }
                }
            ]
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
}

Тим

...