Справка. Схема предварительного просмотра манифеста общедоступных разработчиков для Microsoft Teams

Сведения о том, как включить предварительный просмотр разработчика, см. в Microsoft Teams.

Примечание

Если вы не используете функции предварительного просмотра разработчика, включая запуск Teams личных вкладок и расширений обмена сообщениями в Outlook и Office,вместо этого используйте манифест приложения для функций GA.

Манифест Microsoft Teams описывает, как приложение интегрируется в платформу Microsoft Teams. Манифест должен соответствовать схеме, которая была на https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json уровне .

Образец полного манифеста

{
  "$schema": "https://raw.githubusercontent.com/OfficeDev/microsoft-teams-app-schema/preview/DevPreview/MicrosoftTeams.schema.json",
  "manifestVersion": "devPreview",
  "version": "1.0.0",
  "id": "%MICROSOFT-APP-ID%",
  "packageName": "com.example.myapp",
  "devicePermissions" : [ "geolocation", "media" ],
  "developer": {
    "name": "Publisher Name",
    "websiteUrl": "https://website.com/",
    "privacyUrl": "https://website.com/privacy",
    "termsOfUseUrl": "https://website.com/app-tos",
    "mpnId": "1234567890"
  },
  "localizationInfo": {
    "defaultLanguageTag": "es-es",
    "additionalLanguages": [
      {
        "languageTag": "en-us",
        "file": "en-us.json"
      }
    ]
  },
  "name": {
    "short": "Name of your app (<=30 chars)",
    "full": "Full name of app, if longer than 30 characters"
  },
  "description": {
    "short": "Short description of your app",
    "full": "Full description of your app"
  },
  "icons": {
    "outline": "%FILENAME-32x32px%",
    "color": "%FILENAME-192x192px"
  },
  "accentColor": "%HEX-COLOR%",
  "configurableTabs": [
    {
      "configurationUrl": "https://contoso.com/teamstab/configure",
      "canUpdateConfiguration": true,
      "scopes": [ "team", "groupchat" ]
    }
  ],
  "staticTabs": [
    {
      "entityId": "idForPage",
      "name": "Display name of tab",
      "contentUrl": "https://contoso.com/content?host=msteams",
      "contentBotId": "Specifies to the app that tab is an Adaptive Card Tab. You can either provide the contentBotId or contentUrl.",
      "websiteUrl": "https://contoso.com/content",
      "scopes": [ "personal" ]
    }
  ],
  "bots": [
    {
      "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
      "needsChannelSelector": false,
      "isNotificationOnly": false,
      "scopes": [ "team", "personal", "groupchat" ],
      "supportsFiles": true,
      "commandLists": [
        {
          "scopes": [ "team", "groupchat" ],
          "commands": [
            {
              "title": "Command 1",
              "description": "Description of Command 1"
            },
            {
              "title": "Command N",
              "description": "Description of Command N"
            }
          ]
        },
        {
          "scopes": [ "personal", "groupchat" ],
          "commands": [
            {
              "title": "Personal command 1",
              "description": "Description of Personal command 1"
            },
            {
              "title": "Personal command N",
              "description": "Description of Personal command N"
            }
          ]
        }
      ]
    }
  ],
  "connectors": [
    {
      "connectorId": "GUID-FROM-CONNECTOR-DEV-PORTAL%",
      "configurationUrl": "https://contoso.com/teamsconnector/configure",
      "scopes": [ "team"]
    }
  ],
  "composeExtensions": [
    {
      "botId": "%MICROSOFT-APP-ID-REGISTERED-WITH-BOT-FRAMEWORK%",
      "canUpdateConfiguration": true,
      "commands": [
        {
          "id": "exampleCmd1",
          "title": "Example Command",
          "description": "Command Description; e.g., Search on the web",
          "initialRun": true,
          "type" : "search",
          "context" : ["compose", "commandBox"],
          "parameters": [
            {
              "name": "keyword",
              "title": "Search keywords",
              "description": "Enter the keywords to search for"
            }
          ]
        },
        {
          "id": "exampleCmd2",
          "title": "Example Command 2",
          "description": "Command Description; e.g., Search for a customer",
          "initialRun": true,
          "type" : "action",
          "fetchTask" : true,
          "context" : ["message"],
          "parameters": [
            {
              "name": "custinfo",
              "title": "Customer name",
              "description": "Enter a customer name",
              "inputType" : "text"
            }
          ]
        },
        {
          "id": "exampleMessageHandler",
          "title": "Message Handler",
          "description": "Domains that will create a preview when pasted into the compose box",
          "messageHandlers": [
            {
              "type" : "link",
              "value" : {
                "domains" : [
                  "mysite.someplace.com",
                  "othersite.someplace.com"
                ]
              }
            }
          ]
        }
      ]
    }
  ],
  "permissions": [
    "identity",
    "messageTeamMembers",
  ],
  "validDomains": [
     "contoso.com",
     "mysite.someplace.com",
     "othersite.someplace.com"
  ],
  "webApplicationInfo": {
    "id": "AAD App ID",
    "resource": "Resource URL for acquiring auth token for SSO",
    "applicationPermissions": [
      "TeamSettings.Read.Group",
      "ChannelSettings.Read.Group",
      "ChannelSettings.Edit.Group",
      "Channel.Create.Group",
      "Channel.Delete.Group",
      "ChannelMessage.Read.Group",
      "TeamsApp.Read.Group",
      "TeamsTab.Read.Group",
      "TeamsTab.Create.Group",
      "TeamsTab.Edit.Group",
      "TeamsTab.Delete.Group",
      "Member.Read.Group",
      "Owner.Read.Group",
      "Member.ReadWrite.Group",
      "Owner.ReadWrite.Group"
    ],
  },
   "configurableProperties": [
     "name",
     "shortDescription",
     "longDescription",
     "smallImageUrl", 
     "largeImageUrl", 
     "accentColor",
     "developerUrl",
     "privacyUrl",
     "termsOfUseUrl"        
  ],
  "defaultInstallScope": "meetings",
  "defaultGroupCapability": {
    "meetings": "tab", 
    "team": "bot", 
    "groupchat": "bot"
  },
  "subscriptionOffer": {
    "offerId": "publisherId.offerId"
  }
}

Схема определяет следующие свойства:

$schema

Необязательный, но рекомендуемый – String

https://URL-адрес, ссылающийся на схему JSON для манифеста.

manifestVersion

Обязательно – String

Версия схемы манифеста, используемая этим манифестом. Используйте m365DevPreview только в том случае, если вы Teams приложения, работающие в Office и Outlook. В противном случае используйте все devPreview Teams функции предварительного просмотра.

version

Обязательно – String

Версия конкретного приложения. Если вы что-то обновляете в манифесте, необходимо также приумножная версия. Благодаря этому при установке нового манифеста будет переписан существующий, а пользователь получит новые функции. Если это приложение было отправлено в магазин, новый манифест должен быть повторно отправлен и повторно проверен. Затем пользователи этого приложения получат новый обновленный манифест автоматически через несколько часов после его утверждения.

Если приложение запрашивает разрешения изменить, пользователям будет предложено обновить и повторно согласиться на приложение.

Эта строка версии должна следовать стандарту semver (MAJOR. MINOR. PATCH).

id

Обязательно – ID приложения Майкрософт

Уникальный идентификатор, созданный Корпорацией Майкрософт для этого приложения. Если вы зарегистрировали бота через Microsoft Bot Framework или веб-приложение вашей вкладки уже входит в Microsoft, вы уже должны иметь ID и ввести его здесь. В противном случае необходимо создать новый ID на портале регистрации приложений Microsoft(Моиприложения), введите его здесь, а затем повторно использовать при добавлении бота.

packageName

Обязательно – String

Уникальный идентификатор для этого приложения в обратной нотации домена; например, com.example.myapp.

developer

Required

Указывает сведения о вашей компании. Для приложений, представленных в AppSource (ранее Office Store), эти значения должны соответствовать сведениям в записи AppSource.

Имя Максимальный размер Обязательный Описание
name 32 символа Имя отображения для разработчика.
websiteUrl 2048 символов Url https:// url-адрес веб-сайта разработчика. Эта ссылка должна принимать пользователей на страницу вашей компании или конкретного продукта.
privacyUrl 2048 символов Url https:// url-адрес политики конфиденциальности разработчика.
termsOfUseUrl 2048 символов Url https:// url-адрес для условий использования разработчика.
mpnId 10 символов Необязательный Идентификатор Сети партнеров Майкрософт, который определяет организацию-партнер, которая строит приложение.

локализацияInfo

Необязательное

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

Имя Максимальный размер Обязательный Описание
defaultLanguageTag 4 символа Языковой тег строк в этом файле манифеста верхнего уровня.

локализацияInfo.additionalLanguages

Массив объектов, указывающих дополнительные языковые переводы.

Имя Максимальный размер Обязательный Описание
languageTag 4 символа Языковой тег строки в предоставленного файла.
file 4 символа Относительный путь к файлу .json, содержащим переведенные строки.

name

Required

Имя приложения, отображаемого пользователям в Teams. Для приложений, представленных в AppSource, эти значения должны соответствовать сведениям, указанным в записи AppSource. Значения и short не full должны быть одинаковыми.

Имя Максимальный размер Обязательный Описание
short 30 символов Короткое имя отображения приложения.
full 100 символов Полное имя приложения, используемого, если полное имя приложения превышает 30 символов.

description

Required

Описывает приложение для пользователей. Для приложений, представленных в AppSource, эти значения должны соответствовать сведениям, указанным в записи AppSource.

Убедитесь, что ваше описание точно описывает ваш опыт и предоставляет сведения, чтобы помочь потенциальным клиентам понять, что делает ваш опыт. В полном описании также следует отметить, если для использования требуется внешняя учетная запись. Значения и short не full должны быть одинаковыми. Короткое описание не должно повторяться в длинном описании и не должно включать любое другое имя приложения.

Имя Максимальный размер Обязательный Описание
short 80 символов Краткое описание работы приложения, используемого при ограниченном пространстве.
full 4000 символов Полное описание приложения.

icons

Required

Значки, используемые в Teams приложении. Файлы значков должны быть включены в пакет отправки.

Имя Максимальный размер Обязательный Описание
outline 2048 символов Относительный путь к прозрачному значку контура PNG 32x32.
color 2048 символов Относительный путь к значку PNG полного цвета 192x192.

accentColor

Обязательно – String

Цвет, который можно использовать в сочетании с и в качестве фона для значков контура.

Значение должно быть допустимым цветовым кодом HTML, начиная, например, с #4464ee "#".

configurableTabs

Необязательное

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

Объект — массив со всеми элементами object типа. Этот блок требуется только для решений, которые предоставляют настраиваемое решение вкладки канала.

Имя Тип Максимальный размер Обязательный Описание
configurationUrl Строка 2048 символов URL-https://, который можно использовать при настройке вкладки.
canUpdateConfiguration Логический Значение, указывающее, может ли экземпляр конфигурации вкладки обновляться пользователем после создания. По умолчанию: true
scopes Массив перечислений 1 В настоящее время настраиваемые вкладки поддерживают только team области groupchat и области.
sharePointPreviewImage Строка 2048 Относительный путь к изображению предварительного просмотра вкладок для использования в SharePoint. Размер 1024x768.
supportedSharePointHosts Массив перечислений 1 Определяет, как вкладка будет доступна в SharePoint. Параметры sharePointFullPage и sharePointWebPart

staticTabs

Необязательное

Определяет набор вкладок, которые можно "прикрепить" по умолчанию, не добавляя их вручную. Статические вкладки, объявленные в области, всегда прикрепяются к личному опыту personal приложения. Статические вкладки, объявленные в team области, в настоящее время не поддерживаются.

Отрисуйка вкладок с адаптивными картами, указав вместо в contentBotId contentUrl блоке staticTabs.

Объект — массив (не более 16 элементов) со всеми элементами object типа. Этот блок требуется только для решений, которые предоставляют статическое решение вкладки.

Имя Тип Максимальный размер Обязательный Описание
entityId Строка 64 символа Уникальный идентификатор для объекта, отображаемого на вкладке.
name String 128 символов Отображение имени вкладки в интерфейсе канала.
contentUrl Строка 2048 символов URL https://, который указывает на пользовательский интерфейс объекта, отображаемого на Teams холсте.
contentBotId ID Microsoft Teams, указанный для бота на портале Bot Framework.
websiteUrl Строка 2048 символов В https:// нужно указать URL-адрес, если пользователь выбирает просмотр в браузере.
scopes Массив перечислений 1 В настоящее время статические вкладки поддерживают только область, что означает, что она может быть предусмотрена только в personal рамках личного опыта.

боты

Необязательное

Определяет решение бота, а также необязательные сведения, такие как свойства команд по умолчанию.

Объект — массив (максимум 1 элемент в настоящее время разрешен только для одного бота в приложении) со всеми — элементами типа object . Этот блок необходим только для решений, которые предоставляют возможность работы с ботом.

Имя Тип Максимальный размер Обязательный Описание
botId String 64 символа Уникальный идентификатор приложения Майкрософт для бота, зарегистрированный в Bot Framework. Это вполне может быть таким же, как общий ID приложения.
needsChannelSelector Логический Описывает, использует ли бот пользовательское указание для добавления бота в определенный канал. По умолчанию: false
isNotificationOnly Логический Указывает, является ли бот односторонним и только для уведомлений, в отличие от бота для беседы. По умолчанию: false
supportsFiles Логический Указывает, поддерживает ли бот возможность отправки и скачивания файлов в личном чате. По умолчанию: false
scopes Массив перечислений 3 Указывает, предлагает ли бот функции в контексте канала в team, в групповом чате (groupchat) или функции, ограниченные только отдельным пользователем (personal). Эти параметры не являются исключающими.

bots.commandLists

Необязательный список команд, которые бот может рекомендовать пользователям. Объект — массив (не более 2 элементов) со всеми элементами типа; необходимо определить отдельный список команд для каждой области, поддерживаемой object ботом. Дополнительные сведения см. в меню Bot.

Имя Тип Максимальный размер Обязательный Описание
items.scopes массив перечислений 3 Указывает область, для которой действует список команд. Возможны значения team, personal и groupchat.
items.commands массив объектов 10 Массив команд, поддерживаемых ботом:
title: имя команды бота (строка, 32).
description: простое описание или пример синтаксиса команды и его аргумента (строка, 128).

соединители

Необязательное

Блок connectors определяет Office 365 соединители для приложения.

Объект — массив (максимум 1 элемент) со всеми элементами object типа. Этот блок необходим только для решений, которые предоставляют соединители.

Имя Тип Максимальный размер Обязательный Описание
configurationUrl String 2048 символов URL https://, который необходимо использовать при настройке соединителя.
connectorId String 64 символа Уникальный идентификатор соединитетеля, который соответствует его идентификатору в панели мониторинга разработчиков соединителок.
scopes Массив перечислений 1 Указывает, предоставляет ли соединители опыт в контексте канала в канале или только для отдельного пользователя team ( personal ). В настоящее время team поддерживается только область.

composeExtensions

Необязательное

Определяет расширение обмена сообщениями для приложения.

Примечание

В ноябре 2017 г. имя функции было изменено с "расширение составить" на "расширение обмена сообщениями", но имя манифеста остается таким же, чтобы существующие расширения продолжили функционировать.

Объект — массив (максимум 1 элемент) со всеми элементами object типа. Этот блок необходим только для решений, которые предоставляют расширение обмена сообщениями.

Имя Тип Максимальный размер Обязательный Описание
botId Строка 64 Уникальный ID приложения Майкрософт для бота, который возвращает расширение обмена сообщениями, как зарегистрирован в Bot Framework. Это вполне может быть таким же, как общий ID приложения.
canUpdateConfiguration Логическое Значение, указывающее, может ли пользователь обновить конфигурацию расширения обмена сообщениями. Значение по умолчанию: false.
commands Массив объекта 10 Массив команд, поддерживаемых расширением обмена сообщениями

composeExtensions.commands

Расширение обмена сообщениями должно объявлять одну или несколько команд. Каждая команда отображается Microsoft Teams как потенциальное взаимодействие с точки входа на основе пользовательского интерфейса. Существует не более 10 команд.

Каждый элемент команды — это объект со следующей структурой:

Имя Тип Максимальный размер Обязательный Описание
id Строка 64 символа ID для команды.
type Строка 64 символа Тип команды. Один query из или action . По умолчанию: query
title Строка 32 символа Удобное имя команды.
description Строка 128 символов В описании, которое отображается пользователями, указывается назначение этой команды.
initialRun Логическое Значение Boolean, которое указывает, следует ли запускать команду изначально без параметров. По умолчанию: false
context Массив строк 3 Определяет, из чего можно вызвать расширение обмена сообщениями. Любое сочетание compose commandBox , message . Значение по умолчанию: ["compose", "commandBox"]
fetchTask Логический Значение boolean, которое указывает, следует ли динамически получать модуль задач.
taskInfo Объект Укажите модуль задач для предварительной загрузки при использовании команды расширения обмена сообщениями.
taskInfo.title Строка 64 Начальное название диалогов.
taskInfo.width Строка Ширина диалогов — число в пикселях или макет по умолчанию, такие как "большой", "средний" или "маленький".
taskInfo.height Строка Высота диалогов — число пикселей или макет по умолчанию, например "большой", "средний" или "маленький".
taskInfo.url Строка Начальный URL-адрес веб-просмотров.
messageHandlers Массив объектов 5 Список обработчиков, которые позволяют вызывать приложения при определенных условиях. Домены также должны быть указаны в validDomains .
messageHandlers.type String Тип обработка сообщений. Должно быть задано значение "link".
messageHandlers.value.domains Массив строк Массив доменов, для которые обработник сообщений ссылок может зарегистрироваться.
parameters Массив объекта 5 Список параметров, которые принимает команда. Минимум: 1; максимум: 5
parameter.name String 64 символа Имя параметра, как оно отображается в клиенте. Это включено в запрос пользователя.
parameter.title Строка 32 символа Удобное название для параметра.
parameter.description Строка 128 символов Удобное для пользователя строка, описываемая назначение этого параметра.
parameter.inputType Строка 128 символов Определяет тип управления, отображаемого в модуле задач fetchTask: true для . Один text из textarea , , , , , number date time toggle choiceset .
parameter.choices Массив объектов 10 Параметры выбора choiceset для . Используйте только parameter.inputType тогда, когда choiceset это .
parameter.choices.title Строка 128 Название выбора.
parameter.choices.value Строка 512 Значение выбора.

permissions

Необязательное

Массив указывает, какие разрешения запрашивает приложение, что позволяет конечным пользователям узнать, как string будет выполняться расширение. Следующие параметры не являются эксклюзивными:

  • identity Требуется информация о удостоверении пользователя.
  • messageTeamMembers Требуется разрешение на отправку прямых сообщений членам группы.

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

devicePermissions

Необязательный Массив строк

Указывает родных функций на устройстве пользователя, к которое ваше приложение может запрашивать доступ. Доступные варианты:

  • geolocation
  • media
  • notifications
  • midi
  • openExternal

validDomains

Необязательный, за исключением обязательного, где отмечено

Список допустимого домена, из которого приложение ожидает загрузки любого контента. Списки домена могут включать, например, поддиайки. *.example.com Это соответствует ровно одному сегменту домена; если вам нужно a.b.example.com соответствовать, то используйте *.*.example.com . Если конфигурации вкладок или пользовательскому интерфейсу контента необходимо перейти к любому другому домену, кроме одного использования для конфигурации вкладок, этот домен должен быть указан здесь.

Однако не обязательно включать в приложение домены поставщиков удостоверений, которые вы хотите поддерживать. Например, чтобы проверить подлинность с помощью google ID, необходимо перенаправить на accounts.google.com, но не следует включать accounts.google.com validDomains[] в .

Важно!

Не добавляйте домены, которые находятся вне вашего контроля, напрямую или с помощью подкрентов. Например, yourapp.onmicrosoft.com допустимо, *.onmicrosoft.com но не является допустимым.

Объект — массив со всеми элементами string типа.

webApplicationInfo

Необязательное

Укажите свой ID приложения Azure AD и Graph, чтобы помочь пользователям без проблем войти в приложение Auzre AD.

Имя Тип Максимальный размер Обязательный Описание
id Строка 36 символов ID приложения Azure AD приложения. Этот ID должен быть GUID.
resource String 2048 символов URL-адрес ресурса приложения для приобретения маркера auth для SSO.
applicationPermissions Массив Не более 100 элементов Разрешения ресурсов для приложения.

configurableProperties

Необязательный - массив

Блок определяет свойства приложений, которые могут configurableProperties Teams администраторы. Дополнительные сведения см. в приложении Enable customization.

Примечание

Необходимо определить как минимум одно свойство. В этом блоке можно определить максимум девять свойств.

Можно определить любое из следующих свойств:

  • name: Имя отображения приложения.
  • shortDescriptionКраткое описание приложения.
  • longDescriptionПодробное описание приложения.
  • smallImageUrl: Значок контура приложения.
  • largeImageUrl: Значок цвета приложения.
  • accentColor: Цвет, который нужно использовать в сочетании с и в качестве фона для значков контура.
  • developerUrlURL-адрес HTTPS веб-сайта разработчика.
  • privacyUrl: URL-адрес HTTPS политики конфиденциальности разработчика.
  • termsOfUseUrl: URL-адрес HTTPS условий использования разработчика.

defaultInstallScope

Необязательный — строка

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

  • personal
  • team
  • groupchat
  • meetings

defaultGroupCapability

Необязательный — объект

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

  • team
  • groupchat
  • meetings
Имя Тип Максимальный размер Обязательный Описание
team string Если выбрана область установки, это поле указывает доступные возможности team по умолчанию. Параметры: tab bot , или connector .
groupchat Строка Если выбрана область установки, это поле указывает доступные возможности groupchat по умолчанию. Параметры: tab bot , или connector .
meetings Строка Если выбрана область установки, это поле указывает доступные возможности meetings по умолчанию. Параметры: tab bot , или connector .

subscriptionOffer

Необязательный — объект

Указывает предложение SaaS, связанное с вашим приложением.

Имя Тип Максимальный размер Обязательный Описание
offerId string 2048 символов Уникальный идентификатор, который включает идентификатор Publisher и идентификатор предложения, которые можно найти в Центре партнеров. Строку необходимо форматить как publisherId.offerId .