Создание надстройки Outlook для поставщика собраний по сети

Настройка собрания по сети — это основной интерфейс для пользователя Outlook, и вы можете легко создать собрание Teams с помощью Outlook. Однако создание собрания по сети в Outlook с помощью службы сторонних поставщиков может быть громоздким. Реализуя эту функцию, поставщики услуг могут упростить процесс создания собраний по сети и присоединения к ней для пользователей надстройки Outlook.

Важно!

Эта функция поддерживается в Outlook в Интернете, Windows (классическая и новая (предварительная версия)), Mac, Android и iOS с подпиской Microsoft 365.

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

Настройка среды

Завершите краткое руководство По созданию проекта надстройки с помощью генератора Yeoman для надстроек Office.

Настройка манифеста

Чтобы разрешить пользователям создавать собрания по сети с помощью надстройки, необходимо настроить манифест. Разметка отличается в зависимости от двух переменных:

Если надстройка использует XML-манифест, и надстройка будет поддерживаться только в Outlook в Интернете, Windows (классическая и новая (предварительная версия)) и Mac, выберите вкладку Windows, Mac, веб-сайт, чтобы получить рекомендации. Однако если ваша надстройка также будет поддерживаться в Outlook для Android и iOS, перейдите на вкладку Мобильные устройства.

Если надстройка использует унифицированный манифест (предварительная версия), выберите вкладку Единый манифест для Microsoft 365 (предварительная версия для разработчиков).

Важно!

Поставщики собраний по сети пока не поддерживаются для единого манифеста (предварительная версия). Мы работаем над предоставлением этой поддержки в ближайшее время.

  1. В редакторе кода откройте созданный проект быстрого запуска Outlook.

  2. Откройте файлmanifest.xml , расположенный в корне проекта.

  3. Выберите весь <узел VersionOverrides> (включая открытые и закрытые теги) и замените его следующим XML-кодом.

<VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
    <Description resid="residDescription"></Description>
    <Requirements>
      <bt:Sets>
        <bt:Set Name="Mailbox" MinVersion="1.3"/>
      </bt:Sets>
    </Requirements>
    <Hosts>
      <Host xsi:type="MailHost">
        <DesktopFormFactor>
          <FunctionFile resid="residFunctionFile"/>
          <ExtensionPoint xsi:type="AppointmentOrganizerCommandSurface">
            <OfficeTab id="TabDefault">
              <Group id="apptComposeGroup">
                <Label resid="residDescription"/>
                <Control xsi:type="Button" id="insertMeetingButton">
                  <Label resid="residLabel"/>
                  <Supertip>
                    <Title resid="residLabel"/>
                    <Description resid="residTooltip"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="icon-16"/>
                    <bt:Image size="32" resid="icon-32"/>
                    <bt:Image size="64" resid="icon-64"/>
                    <bt:Image size="80" resid="icon-80"/>
                  </Icon>
                  <Action xsi:type="ExecuteFunction">
                    <FunctionName>insertContosoMeeting</FunctionName>
                  </Action>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>
    <Resources>
      <bt:Images>
        <bt:Image id="icon-16" DefaultValue="https://contoso.com/assets/icon-16.png"/>
        <bt:Image id="icon-32" DefaultValue="https://contoso.com/assets/icon-32.png"/>
        <bt:Image id="icon-48" DefaultValue="https://contoso.com/assets/icon-48.png"/>
        <bt:Image id="icon-64" DefaultValue="https://contoso.com/assets/icon-64.png"/>
        <bt:Image id="icon-80" DefaultValue="https://contoso.com/assets/icon-80.png"/>
      </bt:Images>
      <bt:Urls>
        <bt:Url id="residFunctionFile" DefaultValue="https://contoso.com/commands.html"/>
      </bt:Urls>
      <bt:ShortStrings>
        <bt:String id="residDescription" DefaultValue="Contoso meeting"/>
        <bt:String id="residLabel" DefaultValue="Add a contoso meeting"/>
      </bt:ShortStrings>
      <bt:LongStrings>
        <bt:String id="residTooltip" DefaultValue="Add a contoso meeting to this appointment."/>
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
</VersionOverrides>

Совет

Дополнительные сведения о манифестах надстроек Outlook см. в разделах Манифесты надстроек Office и Добавление поддержки команд надстроек в Outlook на мобильных устройствах.

Реализация добавления сведений о собрании по сети

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

  1. В том же проекте быстрого запуска откройте файл ./src/commands/commands.js в редакторе кода.

  2. Замените все содержимое файлаcommands.js следующим кодом JavaScript.

    // 1. How to construct online meeting details.
    // Not shown: How to get the meeting organizer's ID and other details from your service.
    const newBody = '<br>' +
        '<a href="https://contoso.com/meeting?id=123456789" target="_blank">Join Contoso meeting</a>' +
        '<br><br>' +
        'Phone Dial-in: +1(123)456-7890' +
        '<br><br>' +
        'Meeting ID: 123 456 789' +
        '<br><br>' +
        'Want to test your video connection?' +
        '<br><br>' +
        '<a href="https://contoso.com/testmeeting" target="_blank">Join test meeting</a>' +
        '<br><br>';
    
    let mailboxItem;
    
    // Office is ready.
    Office.onReady(function () {
            mailboxItem = Office.context.mailbox.item;
        }
    );
    
    // 2. How to define and register a function command named `insertContosoMeeting` (referenced in the manifest)
    //    to update the meeting body with the online meeting details.
    function insertContosoMeeting(event) {
        // Get HTML body from the client.
        mailboxItem.body.getAsync("html",
            { asyncContext: event },
            function (getBodyResult) {
                if (getBodyResult.status === Office.AsyncResultStatus.Succeeded) {
                    updateBody(getBodyResult.asyncContext, getBodyResult.value);
                } else {
                    console.error("Failed to get HTML body.");
                    getBodyResult.asyncContext.completed({ allowEvent: false });
                }
            }
        );
    }
    // Register the function.
    Office.actions.associate("insertContosoMeeting", insertContosoMeeting);
    
    // 3. How to implement a supporting function `updateBody`
    //    that appends the online meeting details to the current body of the meeting.
    function updateBody(event, existingBody) {
        // Append new body to the existing body.
        mailboxItem.body.setAsync(existingBody + newBody,
            { asyncContext: event, coercionType: "html" },
            function (setBodyResult) {
                if (setBodyResult.status === Office.AsyncResultStatus.Succeeded) {
                    setBodyResult.asyncContext.completed({ allowEvent: true });
                } else {
                    console.error("Failed to set HTML body.");
                    setBodyResult.asyncContext.completed({ allowEvent: false });
                }
            }
        );
    }
    

Тестирование и проверка

Следуйте обычным рекомендациям, чтобы протестировать и проверить надстройку, а затем загрузить манифест неопубликованного приложения в Outlook в Интернете, в Windows (классическая или новая (предварительная версия)) или на Mac. Если надстройка также поддерживает мобильные устройства, перезапустите Outlook на устройстве Android или iOS после загрузки неопубликованного приложения. После загрузки надстройки неопубликованного приложения создайте собрание и убедитесь, что переключатель Microsoft Teams или Skype заменен вашим собственным.

Создание пользовательского интерфейса собрания

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

Экран создания собрания в Android с выключенным переключателем Contoso.Экран создания собрания в Android с переключателем загрузки Contoso.Экран создания собрания в Android с переключателем Contoso.

Присоединение к пользовательскому интерфейсу собрания

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

Экран присоединения к собранию в Android.

Важно!

Кнопка Присоединиться поддерживается только в Outlook в Интернете, на Mac, в Android, iOS и в новом Outlook в Windows (предварительная версия). Если вы видите только ссылку на собрание, но не видите кнопку Присоединиться в поддерживаемом клиенте, возможно, шаблон собрания по сети для вашей службы не зарегистрирован на наших серверах. Дополнительные сведения см. в разделе Регистрация шаблона онлайн-собрания .

Регистрация шаблона собрания по сети

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

Важно!

Кнопка Присоединиться поддерживается только в Outlook в Интернете, на Mac, в Android, iOS и в новом Outlook в Windows (предварительная версия).

  1. Создайте новую проблему GitHub.
  2. Задайте для новой проблемы заголовок "Outlook: регистрация шаблона собрания по сети для my-service", заменив my-service именем своей службы.
  3. В тексте проблемы замените существующий текст строкой, заданной в newBody переменной или аналогичной переменной из раздела Реализация добавления сведений о собрании по сети ранее в этой статье.
  4. Нажмите кнопку Отправить новую проблему.

Новый экран проблемы GitHub с примером содержимого Contoso.

Доступные API

Для этой функции доступны следующие API.

Ограничения

Применяется несколько ограничений.

  • Применимо только к поставщикам услуг собраний по сети.
  • На экране создания собрания будут отображаться только установленные администратором надстройки, заменяющие параметры Teams или Skype по умолчанию. Установленные пользователем надстройки не активируются.
  • Значок надстройки должен быть в оттенках серого с использованием шестнадцатеричного кода #919191 или его эквивалента в других цветовых форматах.
  • В режиме организатора встреч (создание) поддерживается только одна команда функции.
  • Надстройка должна обновить сведения о собрании в форме встречи в течение одной минуты времени ожидания. Однако любое время, затраченное в диалоговом окне надстройки, открытой для проверки подлинности, например, исключается из периода ожидания.

См. также