Если 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, валидируется до отправки и безопасно обрабатывает действия. Я могу исправить шаблон и связать кнопки с вашим бизнес-процессом.