Создание приложений Microsoft Teams для собраний с помощью SPFx

В SharePoint Framework (SPFx) версии 1.8 добавлена возможность использовать веб-части SPFx для реализации вкладок Microsoft Teams. Использование SharePoint Framework может упростить разработку приложений Microsoft Teams, как описано в статье "Сборка для Microsoft Teams" с помощью SharePoint Framework.

Разработчики могут создавать приложения для собраний Microsoft Teams с помощью тех же методов, которые используются для создания настраиваемых вкладок. В этом руководстве описано, как реализовать пользовательское приложение для собраний Microsoft Teams с помощью веб-части SPFx.

Приложения для собраний Microsoft Teams должны поддерживать настраиваемые вкладки в области groupchat . Это позволяет использовать чаты перед собранием и после собрания. Дополнительные требования: создание приложений для собраний Teams: предварительные требования и рекомендации см. в следующей документации.

Важно!

Для работы с этим руководством требуется SPFx версии 1.11 или более поздней.

Создайте проект на вкладке Microsoft Teams

  1. Создайте каталог проекта в удобном для вас расположении:

    md teams-meeting-app
    
  2. Перейдите к каталогу проекта:

    cd teams-meeting-app
    
  3. Создайте новое решение, запустив Yeoman SharePoint Framework Generator:

    yo @microsoft/sharepoint
    
  4. При появлении запроса введите следующие значения (выберите вариант по умолчанию для всех запросов, не перечисленных ниже).

    • Как выглядит ваше решение?: teams-meeting-app
    • Предоставить администратору клиента возможность развернуть решение на всех сайтах сразу, не запуская развертывание компонентов или добавление приложений на сайтах?: Да
    • Какой тип клиентского компонента нужно создать?: WebPart
    • Имя веб-части: MyFirstTeamsMeetingApp
    • Что такое описание веб-части? Мое первое приложение для собраний Microsoft Teams
    • Какую платформу нужно использовать?: Не использовать платформу веб-решений на базе JavaScript

    На этом этапе Yeoman создает папки, & файлы для проекта, а затем устанавливает необходимые зависимости.

  5. Затем введите следующую команду, чтобы открыть проект веб-части в Visual Studio Code:

    code .
    

Обновление манифеста веб-части для обеспечения доступности в Microsoft Teams

Найдите файл ./src/webparts/**/manifest.json для веб-части, которую вы будете использовать в качестве вкладки для решения приложения для собраний. Найдите свойство supportedHosts для включаемой строки "TeamsTab":

{
  "$schema": "https://developer.microsoft.com/json-schemas/spfx/client-side-web-part-manifest.schema.json",
  "id": "..",
  "alias": "MyFirstTeamsMeetingAppWebPart",
  "componentType": "WebPart",
  "version": "*",

  //...

  "supportedHosts": ["SharePointWebPart", "TeamsTab"],

  //...
}

Обновление кода для учета контекста Microsoft Teams

  1. Откройте файл ./src/webparts/helloWorld/MyFirstTeamsTabWebPart.ts для внесения необходимых изменений, чтобы решение учитывало контекст Microsoft Teams, если оно используется в качестве вкладки.

  2. Обновите метод render(), как показано ниже.

    Обратите внимание на то, как мы отображаем разное содержимое в зависимости от того, обрабатывается ли код как вкладка в Microsoft Teams или как веб-часть в SharePoint. Мы можем определить, размещено ли решение в Microsoft Teams, проверив свойство this.context.sdks.microsoftTeams.

    public render(): void {
    
      let title: string = 'ERR: not in Microsoft Teams';
      let subTitle: string = 'ERR: not in Microsoft Teams';
    
      if (this.context.sdks.microsoftTeams) {
        if (this.context.sdks.microsoftTeams.context.meetingId) {
          title = "Welcome to Microsoft Teams!";
          subTitle = "We are in the context of following meeting: " + this.context.sdks.microsoftTeams.context.meetingId;
        } else {
          title = "Welcome to Microsoft Teams!";
          subTitle = "We are in the context of following team: " + this.context.sdks.microsoftTeams.context.teamName;
        }
      }
    
      this.domElement.innerHTML = `
        <div class="${ styles.myFirstTeamsMeetingApp }">
          <div class="${ styles.container }">
            <div class="${ styles.row }">
              <div class="${ styles.column }">
                <span class="${ styles.title }">${title}</span>
                <p class="${ styles.subTitle }">${subTitle}</p>
              </div>
            </div>
          </div>
        </div>`;
    }
    

Подготовка приложения Microsoft Teams к развертыванию

Если решение SPFx используется в приложении Microsoft Teams, оно должно быть развернуто как в SharePoint Online, так и в Microsoft Teams. Дополнительные сведения о вариантах развертывания см. в SharePoint Framework для решений microsoft Teams.

Приложения для собраний требуют сведений в файле манифеста приложения Microsoft Teams, который не создается автоматически SharePoint Online. Поэтому необходимо использовать предоставленный разработчиком манифест приложения Microsoft Teams & пакет .

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

Создание манифеста приложения Microsoft Teams

Создайте файл ./teams/manifest.json.

Добавьте в файл следующий код JSON:

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.8/MicrosoftTeams.schema.json",
  "manifestVersion": "1.8",
  "packageName": "{{SPFX_PACKAGE_NAME}}",
  "id": "{{SPFX_COMPONENT_ID}}",
  "version": "1.0",
  "developer": { .. },
  "name": {
    "short": "{{SPFX_COMPONENT_NAME}}"
  },
  "description": {
    "short": "{{SPFX_COMPONENT_SHORT_DESCRIPTION}}",
    "full": "{{SPFX_COMPONENT_LONG_DESCRIPTION}}"
  },
  "icons": {
    "outline": "{{SPFX_COMPONENT_ID}}_outline.png",
    "color": "{{SPFX_COMPONENT_ID}}_color.png"
  },
  "accentColor": "#004578",
  "configurableTabs": [
    {
      "configurationUrl": "https://{teamSiteDomain}/_layouts/15/TeamsLogon.aspx?SPFX=true&dest=/_layouts/15/teamshostedapp.aspx%3Fteams%26componentId={{SPFX_COMPONENT_ID}}",
      "canUpdateConfiguration": false,
      "scopes": [
        "team",
        "groupchat"
      ],
      "context": [
        "channelTab",
        "privateChatTab",
        "meetingSidePanel",
        "meetingDetailsTab",
        "meetingChatTab"
      ]
    }
  ],
  "validDomains": [
    "*.login.microsoftonline.com",
    "*.sharepoint.com",
    "resourceseng.blob.core.windows.net"
  ],
  "webApplicationInfo": {
    "resource": "https://{teamSiteDomain}",
    "id": "00000003-0000-0ff1-ce00-000000000000"
  }
}

После создания базового манифеста приложения Teams необходимо внести в него следующие изменения:

  • Найдите значения в {{SPFX_COMPONENT_*}} JSON... Эти значения необходимо обновить. Задайте для нескольких экземпляров {{SPFX_COMPONENT_ID}} идентификатор компонента. Он находится в свойстве id в файле ./src/webparts/**/manifest.json .
  • Замените packageName свойство именем приложения Teams.
  • Замените developer объект тем же объектом и значениями, заданными в файле ./config/package-solution.json .
  • Замените name & description объекты реальными значениями, которые указывают имя и описание приложения.

Примечание

Сведения о свойствах в манифесте приложения Microsoft Teams см. в схеме манифеста для Microsoft Teams.

Важно!

Не заменяйте строку {teamSiteDomain} в файле манифеста приложения. Этот заполнитель заменяется URL-адресом SharePoint Online клиента во время выполнения Microsoft Teams.

Создание пакета приложения Microsoft Teams

Чтобы решение SPFx было доступно для использования в Microsoft Teams, оно должно быть упаковано & в SharePoint Online.

  1. Создайте пакет приложения Microsoft Teams с именем TeamsSPFxApp.zip путем сжатия содержимого папки ./teams.

    Важно!

    Не сжимайте папку — вместо этого сожмите ее содержимое. Если вы заархивируйте папку, она создаст вложенную папку верхнего уровня в полученном ZIP-файле, который не является допустимым пакетом приложения для Microsoft Teams.

  2. Сохраните файл TeamsSPFxApp.zip в папке ./src/teams решения SPFx.

Упаковка и развертывание в SharePoint Online

  1. Выполните приведенные ниже команды, чтобы собрать пакет вашего решения. При этом будет выполнена сборка выпуска проекта с использованием динамической метки в качестве URL-адреса для размещения ресурсов.

    gulp bundle --ship
    
  2. Выполните приведенную ниже задачу, чтобы упаковать решение. При этом создается обновленный пакет ./sharepoint/solution/*.sppkg .

    gulp package-solution --ship
    
  3. Затем разверните пакет, созданный в каталоге приложений клиента.

    Перейдите в каталог приложений SharePoint вашего клиента.

  4. Отправьте или перетащите файл ./sharepoint/solution/*.sppkg в каталог приложений клиента.

    Загрузить решение в каталог приложений

    При этом будет развернут пакет клиентского решения.

    Убедитесь, что выбран параметр "Сделать это решение доступным для всех сайтов в организации", чтобы веб-часть можно было использовать в Microsoft Teams.

    Доверие развертыванию клиентского решения

  5. Нажмите Развернуть.

На этом этапе решение развертывается в SharePoint Online и доступно для всех сайтов SharePoint Online.

Публикация приложения для собраний в магазине приложений Microsoft Teams

Чтобы приложение для собраний было доступно в Microsoft Teams, вы сможете синхронизировать решение с командами.

Примечание

На этапе тестирования вы можете загрузить неопубликованное приложение для собраний в Microsoft Teams, а не развертывать его в магазине приложений вашей организации. Для этого можно пропустить этот раздел и перейти к разделу "Тестирование приложения для собраний ".

  1. Выберите пакет в каталоге приложений клиента SharePoint и нажмите кнопку "Синхронизировать с Teams " на ленте на вкладке "Файлы ".

    Кнопка Синхронизировать с Teams на ленте

    SharePoint Online **** *обнаружит файлTeamsSPFxApp.zipв пакете SPPKG и развернет его в магазине приложений Microsoft Teams вместо автоматического создания манифеста приложения и пакета приложения.

  2. Убедитесь, что вы видите сообщение о состоянии в правом верхнем углу.

    Кнопка "Синхронизация с Teams" в сообщении о состоянии ленты

Тестирование приложения для собраний

Последним шагом является тестирование приложения для собраний в Microsoft Teams. Для этого вы создадите собрание, которое не является собранием канала и на которое приглашен по крайней мере один человек:

  1. Откройте настольный клиент Microsoft Teams.

  2. Создайте собрание с помощью приложения "Календарь " на панели приложения слева.

  3. Пригласите кого-нибудь на собрание.

  4. Сохраните собрание.

  5. В приложении " Календарь" откройте созданное тестовом собрании.

  6. Нажмите кнопку + (плюс) справа от существующих вкладок.

    Вкладка "Добавление собрания"

  7. Выбор пользовательского приложения для собраний

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

Выбор приложения для собраний

Важно!

В настоящее время взаимодействие с участниками собрания для приложения для собраний Teams на основе SPFx не работает. Во время собрания, если выбрать приложение, приложение для собраний загрузит его на вкладку, но отобразит страницу ошибки SharePoint Online.

В настоящее время это связано с ограничением в Microsoft Teams, которое будет разрешено в первой половине 2021 г.

См. также