Как использовать «selectAction» атрибут AdaptiveColumnSet () в AdaptiveCard?C # - PullRequest
1 голос
/ 18 апреля 2019
private Attachment CardExample()
{
    AdaptiveCard card = new AdaptiveCard("1.0");
    card.Body.Add(new AdaptiveContainer()
    {
        Style = AdaptiveContainerStyle.Emphasis,

        Items = new List<AdaptiveElement>()
        {
            new AdaptiveColumnSet() 
            {
                Type = "ColumnSet",
                Height = AdaptiveHeight.Auto,
                SelectAction = new AdaptiveSubmitAction()
                {
                    Type="Action.Submit",
                    Id = "Submit",
                    Title="Submit",
                }
            },
        }
    });
    Attachment TestCard = new Attachment
    {
        ContentType = AdaptiveCard.ContentType,
        Content= JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card)),
    };
    return TestCard; 
}

// Нет ошибки компиляции, но когда отображается адаптивная карта, кнопка «Отправить» не появляется
// только пустой контейнер

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Проблема с вашей реализацией заключается в том, что вы добавляете selectAction в пустой контейнер. Для набора столбцов нужны столбцы, а для каждого столбца - содержимое В вашем случае в столбцах нет реальных элементов, и, следовательно, не на что будет нажимать.

Вот пример того, как должен быть реализован набор столбцов:

{
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [

    {
      "type": "ColumnSet",
      "spacing": "medium",
      "columns": [
        {
          "type": "Column",
          "width": "auto",
          "items": [
            {
              "type": "Image",
              "url": "https://unsplash.it/80?image=1083",
              "size": "medium"
            }
          ]
        },
        {
          "type": "Column",
          "width": 4,
          "items": [
            {
              "type": "TextBlock",
              "text": "Silver Star Mountain"
            },
            {
              "type": "TextBlock",
              "text": "Maps",
              "isSubtle": true,
              "spacing": "none"
            }
          ]
        }
      ],
      "selectAction": {
        "type": "Action.OpenUrl",
        "title": "Silver Star Mountain",
        "url": "ms-cortana:silver-star-mountain"
      }
    }
  ]
}
0 голосов
/ 19 апреля 2019

ColumnSets могут содержать действие при нажатии, но кнопка не отображается, это действительно так просто. Если я нажму на ColumnSet, он выполнит действие.

Я включил несколько изображений и т. Д. Ниже, которые иллюстрируют его работу. Это немного неуклюже, но вы можете понять, что я имею в виду.

Примером является OpenUrl, и он открывается на google.com, действие Submit работает так же, просто включите данные, которые вы хотите отправить обратно в бот, и поймайте их и разберитесь с ними в OnTurnAsync (если вы используете фреймворк v4) ...

enter image description here

enter image description here

Я знаю, что этого ответа не хватает, но ... это ответ. : -)

...