Предоставление общего доступа к отзыву:
Мы хотели бы ваши отзывы о документации разработчика Microsoft Teams. Ответьте на наш короткий трехпрошенный опрос.Пройти опрос
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Расширения сообщений на основе API поддерживают только команды поиска.
Расширения сообщений на основе API не поддерживаются в Microsoft 365 Copilot. Если вы хотите создать расширения сообщений на основе API, совместимые с Microsoft 365 Copilot, см. статью Агенты API для Microsoft 365 Copilot.
Расширения сообщений, созданные с помощью API (на основе API), используют веб-службу для управления пользовательскими запросами и ответами и не требуют регистрации бота. Расширения сообщений на основе API — это возможность приложения Microsoft Teams, которая интегрирует внешние API непосредственно в Teams, повышая удобство использования приложения и обеспечивая простой пользовательский интерфейс. Расширения сообщений на основе API поддерживают команды поиска и могут использоваться для получения и отображения данных из внешних служб в Teams, упрощая рабочие процессы, уменьшая необходимость переключения между приложениями. Расширения сообщений на основе API помогают приложениям напрямую взаимодействовать со сторонними данными, приложениями и службами, расширяя их возможности. С помощью расширения сообщений на основе API вы можете:
Получение информации в режиме реального времени, например последних новостей о запуске продукта.
Получение информации на основе знаний, например файлов проектирования команды в Figma.
Дополнительные сведения о создании расширения для сообщений на основе API с помощью набора средств Teams см. в этом видео:
Традиционные расширения сообщений на основе ботов
Расширения сообщений на основе API
Разработчикам необходимо создавать, развертывать и обслуживать службу для обработки команд вызова из клиента Teams.
Если API конечной службы можно описать с помощью спецификации OpenAPI, разработчики могут устранить необходимость в службе обработки среднего уровня.
Эта служба обрабатывает входящий запрос и вызывает конечную службу разработчика.
Teams могут напрямую использовать спецификацию OpenAPI для создания запросов и взаимодействия с конечной службой разработчика.
На следующих изображениях показан поток запросов пользователей через расширения традиционных сообщений и расширения сообщений API:
Поток запросов пользователя с помощью традиционных расширений сообщений. Разработчик должен поддерживать настраиваемую службу обработчика бота, которая обрабатывает запросы от бота Teams. Служба обработчика отправляет запрос службе разработчика при вызове запроса.
Поток запросов пользователя с помощью расширений сообщений API. Служба обработчика, поддерживаемая разработчиком, не требуется, если взаимодействие четко описано в спецификации OpenAPI в пакете приложения.
Ниже приведена последовательность событий высокого уровня, возникающих при вызове команды запроса:
Когда пользователь вызывает команду запроса, параметры команды запроса получаются Служба Bot Teams.
Команда запроса определяется внутри файла манифеста приложения. Определение команды содержит ссылку operationId на внутри файла спецификации OpenAPI, а также сведения о параметрах, которые клиент Teams отображает для этой команды. Для справки operationId , файл в файле спецификации OpenAPI является уникальным для конкретной операции HTTP.
Затем Служба Bot Teams использует параметры, предоставленные пользователем, вместе с копией спецификации OpenAPI для связанного operationId для создания HTTP-запроса для конечной точки разработчика.
Если проверка подлинности является обязательной и настроена в манифесте. Он разрешается в соответствующий маркер или ключ. Этот токен или ключ используется в составе исходящего запроса.
[Необязательно]
Служба бота Teams выполняет HTTP-запрос к службе разработчика.
Служба разработчика должна отвечать в соответствии со схемой, описанной в спецификации OpenAPI. Это формат JSON.
Клиент Teams должен отобразить результаты обратно пользователю. Чтобы преобразовать результаты JSON из предыдущего шага в пользовательский интерфейс, служба бота Teams использует шаблон отрисовки ответа для создания адаптивной карточки для каждого результата.
Адаптивные карточки отправляются клиенту, который отображает их в пользовательском интерфейсе.
Предварительные условия
Пакет определения приложения содержит различные привлекательные артефакты, которые поддерживают функциональные возможности этой функции. Прежде чем приступить к работе, убедитесь, что у вас есть базовое представление о следующих файлах:
Описание OpenAPI documenat — это принятый отраслевой стандарт для описания API. Это позволяет абстрагировать API-интерфейсы от их реализации, предоставляя определения, не зависящие от языка, которые являются как читаемыми, так и машиночитаемыми. Описание OpenAPI documenat описывает взаимодействия, поддерживаемые вашим расширением, позволяя Teams создавать запросы и взаимодействовать напрямую со службой без необходимости в службе обработки среднего уровня.
Документ с описанием OpenAPI содержит сведения для взаимодействия со службой разработчика. Убедитесь, что вы придерживаетесь следующих рекомендаций для документа OpenAPI Description (OAD):
Поддерживаются версии OpenAPI 2.0 и 3.0.x.
Поддерживаемые форматы — JSON и YAML.
Текст запроса, если он присутствует, должен иметь значение application/Json.
Определите URL-адрес сервера протокола HTTPS для servers.url свойства.
Поддерживаются только методы HTTP POST и GET.
Документ Описание OpenAPI должен иметь operationId.
Допускается только один обязательный параметр без значения по умолчанию.
Обязательный параметр со значением по умолчанию считается необязательным.
Пользователи не должны вводить параметр для заголовка или файла cookie.
Операция не должна иметь обязательный заголовок или параметры файла cookie без значений по умолчанию.
Убедитесь, что в документе Описание OpenAPI отсутствуют удаленные ссылки.
Создание массивов для запроса не поддерживается; однако вложенные объекты в тексте запроса JSON поддерживаются.
Teams не поддерживает oneOfконструкции , anyOf, allOfи not (swagger.io).
Следующий код является примером документа OpenAPI Description:
Дополнительные сведения о написании определений OpenAPI в YAML см. в разделе Структура OpenAPI.
Манифест приложения
Манифест приложения — это схема приложения Teams, определяющая способ и место вызова расширения сообщений в клиенте Teams. Он включает в себя команды, поддерживаемые вашим расширением, и расположения, из которых к ним можно получить доступ, такие как область создания сообщений, панель команд и сообщение. Манифест ссылается на спецификацию OpenAPI и шаблон отрисовки ответа для обеспечения надлежащей функциональности.
Манифест приложения содержит определение команды запроса. Убедитесь, что вы придерживаетесь следующих рекомендаций для манифеста приложения:
Задайте для версии манифеста приложения значение 1.17.
Задайте значение composeExtensions.composeExtensionTypeapiBased.
Определите composeExtensions.apiSpecificationFile в качестве относительного пути к документу Описание OpenAPI в папке. Это связывает манифест приложения со спецификацией API.
Определите apiResponseRenderingTemplateFile в качестве относительного пути к шаблону отрисовки ответа. Это указывает расположение шаблона, используемого для отрисовки ответов API.
Каждая команда должна иметь ссылку на шаблон отрисовки ответа. При этом каждая команда подключается к соответствующему формату ответа.
Свойство Commands.id в манифесте приложения должно соответствовать свойству в документе operationId Описание OpenAPI.
Если обязательный параметр не имеет значения по умолчанию, команда parameters.name в манифесте приложения должна соответствовать в документе parameters.name описание OpenAPI.
Если обязательный параметр отсутствует, команда parameters.name в манифесте приложения должна соответствовать необязательным parameters.name в документе Описание OpenAPI.
Убедитесь, что имя параметров для каждой команды в манифесте приложения точно совпадает с соответствующим именем параметра, определенного для операции в документе Описание OpenAPI.
Шаблон отрисовки ответа должен быть определен для каждой команды, которая используется для преобразования ответов из API.
Описание команд и параметров не должно превышать 128 символов.
Ниже приведен пример манифеста приложения с определениями для расширений сообщений на основе API:
Объект, фиксирующий сведения, необходимые для проверки подлинности службы. Применимо, только если тип проверки подлинности имеет значение apiSecretServiceAuth.
Идентификатор регистрации возвращается, когда разработчик отправляет ключ API через портал разработчика.
composeExtensions.apiSpecificationFile
Ссылается на файл описания OpenAPI в пакете приложения. Включить, если тип имеет значение apiBased.
composeExtensions.commands.id
Уникальный идентификатор, назначенный команде поиска. Запрос пользователя включает этот идентификатор. Идентификатор должен совпадать с operationId доступным в описании OpenAPI.
composeExtensions.commands.context
Массив, в котором определены точки входа для расширения сообщений. Значения по умолчанию: compose и commandBox.
composeExtensions.commands.parameters
Определяет статический список параметров для команды . Имя должно сопоставляться с в parameters.name описании OpenAPI. Если вы ссылаетесь на свойство в схеме текста запроса, имя должно сопоставляться с properties.name параметрами запроса или .
Шаблон отрисовки ответа — это стандартный формат, который определяет, как результаты из API отображаются в Teams. Он использует шаблоны для создания адаптивных карточек или других элементов пользовательского интерфейса на основе отклика API, обеспечивая простой и интегрированный пользовательский интерфейс в Teams. Шаблон определяет макет и стиль представляемой информации, которая может включать текст, изображения и интерактивные компоненты. Убедитесь, что вы придерживаетесь следующих рекомендаций по шаблону отрисовки ответов:
Определите URL-адрес ссылки на схему в свойстве $schema , чтобы установить структуру шаблона в схеме шаблона отрисовки ответа.
Поддерживаемые значения для responseLayout : list и grid, которые определяют способ визуального представления ответа. Дополнительные сведения о макете см. в статье Реагирование на запросы пользователей.
Объект jsonPath запрашивается для массивов или, если данные для адаптивной карточки не являются корневым объектом. Например, если данные вложены в productDetails, путь JSON будет иметь значение productDetails.
Определите jsonPath в качестве пути к соответствующим данным или массиву в ответе API. Если путь указывает на массив, то каждая запись в массиве привязывается к шаблону адаптивной карточки и возвращается в виде отдельного результата.
[Необязательно]
Получите пример ответа для проверки шаблона отрисовки ответа. Это служит в качестве теста, чтобы убедиться, что шаблон работает должным образом.
Используйте такие средства, как Fiddler или Postman, чтобы вызвать API и убедиться, что запрос и ответ действительны. Этот шаг имеет решающее значение для устранения неполадок и подтверждения правильности работы API.
С помощью Designer адаптивной карточки можно привязать ответ API к шаблону отрисовки ответа и просмотреть адаптивную карточку. Вставьте шаблон адаптивной карточки в РЕДАКТОР ПОЛЕЗНЫХ ДАННЫХ КАРТОЧКИ и вставьте пример записи ответа в РЕДАКТОР ОБРАЗЦОВ ДАННЫХ.
Следующий код является примером шаблона отрисовки ответа:
Шаблон предварительного просмотра карта в схеме шаблона отрисовки ответа используется для сопоставления ответов JSON с предварительным карта, который пользователи видят при выборе результата поиска. Затем карта предварительного просмотра разворачивается в адаптивную карточку в окне создания сообщения. Шаблон предварительной версии карта является частью шаблона отрисовки ответа, который также включает шаблон адаптивной карточки и метаданные.
Расширенная адаптивная карточка
Параметры
Свойство
Тип
Описание
Обязательный
version
string
Версия схемы текущего шаблона отрисовки ответа.
Да
jsonPath
string
Путь к соответствующему разделу в результатах, к которым должны применяться responseCardTemplate и previewCardTemplate. Если значение не задано, корневой объект обрабатывается как соответствующий раздел. Если соответствующий раздел является массивом, каждая запись сопоставляется с responseCardTemplate и previewCardTemplate.
Нет
responseLayout
responseLayoutType
Указывает макет результатов во всплывающем элементе расширения сообщения. Поддерживаемые типы: list и grid.
Да
responseCardTemplate
adaptiveCardTemplate
Шаблон для создания адаптивной карточки из результирующих записей.
Да
previewCardTemplate
previewCardTemplate
Шаблон для создания предварительного карта из записи результата. Результирующий карта предварительного просмотра отображается во всплывающем меню расширения сообщения.
Да
Путь JSON
Путь JSON необязателен, но его следует использовать для массивов или где объект, используемый в качестве данных для адаптивной карточки, не является корневым объектом. Путь JSON должен соответствовать формату, определенному Newtonsoft. Это средство можно использовать. Средство JSON можно использовать для проверки правильности пути JSON. Если путь JSON указывает на массив, то каждая запись в этом массиве привязывается к шаблону адаптивной карточки и возвращается в виде отдельных результатов.
Пример Предположим, что у вас есть следующий код JSON для списка продуктов и вы хотите создать карта результат для каждой записи.
Как видите, массив результатов находится в разделе "products", который вложен в "warehouse", поэтому путь JSON будет "warehouse.products".
Используйте https://adaptivecards.io/designer/ для предварительного просмотра адаптивную карточку, вставив шаблон в Редактор полезных данных карточки. Возьмите пример записи ответа из массива или для объекта и вставьте ее в пример Редактор данных. Убедитесь, что карта правильно отрисовывается и соответствует вашему вкусу.
Преобразование схемы OpenAPI
Примечание
Мы отправляем заголовок языка принятия в HTTP-запросе, который отправляется в конечную точку, определенную в документе описания OpenAPI. Язык принятия основан на языковом стандарте клиента Teams и может использоваться разработчиком для возврата локализованного ответа.
Следующие типы данных в документе описания OpenAPI преобразуются в элементы адаптивной карточки следующим образом:
string, number, integerboolean типы преобразуются в TextBlock.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о Platform Docs
Platform Docs — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Узнайте, как улучшить взаимодействие с декларативными агентами с помощью адаптивных карточек для визуального отображения данных API. Создавайте и настраивайте шаблоны адаптивных карточек, интегрируйте их в подключаемые модули API и протестируйте настройку в Microsoft 365 Copilot. Узнайте о практических шагах по созданию и просмотру адаптивных карточек в Visual Studio Code.
Узнайте, как создать или создать расширение сообщений на основе API с помощью портала разработчика для Teams, набора средств Teams для Visual Studio, Visual Studio Code и CLI.
В этом модуле learn вы узнаете, как создать расширение сообщения с помощью документа Описание OpenAPI и шаблона отрисовки ответа для взаимодействия с внешними службами.
В этом модуле вы узнаете о расширении сообщений с помощью документа OpenAPI Description (OAD) с набором средств Teams и создайте расширение сообщений на основе API.
Узнайте, как определять команды действий расширения сообщений с помощью манифеста приложения в Teams. Пример (.NET, Node.js), create dialog (task module), ответ на действие отправки диалога.