Если Adaptive Card в Teams показывает текст и поля, но не отображает кнопки, карточка часто использует неподдерживаемую версию схемы или тип действия, который конкретный клиент Teams не умеет рендерить.

Проверьте минимальную карточку с одной Action.Submit в том же чате. Если она работает, добавляйте элементы исходной карточки по одному и найдите несовместимый блок.

Что сделать в первую очередь

  • Сохраните фактический JSON, отправленный в Teams, после всех шаблонных подстановок.
  • Проверьте version карточки и тип каждой action.
  • Сравните отображение в desktop, web и mobile клиентах.
  • Откройте карточку в Adaptive Cards Designer с профилем Teams.

Почему возникает проблема

Симптом обычно появляется не из-за одной настройки. Сначала разделите путь данных на этапы и найдите место, где фактическое поведение расходится с ожидаемым.

  • Указана версия schema выше поддерживаемой конкретным клиентом.
  • Используется Action.Execute там, где интеграция поддерживает только Action.Submit.
  • Кнопки вложены в неподдерживаемый контейнер или превышен лимит элементов.
  • Шаблонизатор создал пустой title, некорректный URL или неправильный тип data.

Пошаговая диагностика

  • Провалидируйте JSON до отправки и сохраните ошибки схемы.
  • Замените actions на одну простую Action.Submit и повторите тест.
  • Понижайте version до подтвержденного уровня без новых свойств.
  • Проверьте канал доставки: бот, webhook и workflow имеют разные возможности.
  • Убедитесь, что ответ кнопки доходит в invoke-обработчик приложения.

Как исправить

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

  • Используйте поддерживаемую версию schema и fallback для новых элементов.
  • Выберите action, совместимую с текущим способом доставки карточки.
  • Перенесите кнопки в корневой массив actions и задайте непустые title.
  • Добавьте серверную валидацию карточки перед отправкой.
  • Обрабатывайте повторное нажатие идемпотентно и обновляйте карточку после действия.

Как проверить результат

  • Кнопки видны в web, desktop и целевых мобильных клиентах.
  • Каждое нажатие передает ожидаемые data и идентификатор пользователя.
  • Повторное нажатие не создает дублирующую операцию.

Как не допустить повторения

  • Храните набор проверенных компонентов карточек в одном шаблонном модуле.
  • Тестируйте карточки в нескольких каналах и клиентах до выпуска.
  • Логируйте версию шаблона и результат обработки action.

Частые вопросы

Почему Designer показывает кнопки, а Teams нет?

Designer знает общую схему, но конкретный host Teams и способ доставки поддерживают не все элементы.

Можно ли использовать одну карточку везде?

Да, если ограничиться общим поддерживаемым набором и предусмотреть fallback для отличий клиентов.

Когда стоит обратиться за помощью

Для диагностики достаточно обезличенного JSON карточки, способа отправки и версии клиента. Токены и данные рабочей организации передавать не требуется.

Итог

Стабильная Adaptive Card учитывает возможности host, валидируется до отправки и безопасно обрабатывает действия. Я могу исправить шаблон и связать кнопки с вашим бизнес-процессом.