Поделиться через


Create надстройку Outlook для поставщика онлайн-собраний

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

Важно!

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

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

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

Выполните краткое руководство по Outlook , в котором создадите проект надстройки с помощью генератора Yeoman для надстроек Office.

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

Действия по настройке манифеста зависят от типа манифеста, выбранного в кратком руководстве.

  1. Откройте файл manifest.json .

  2. Найдите первый объект в массиве authorization.permissions.resourceSpecific и задайте для его свойства name значение MailboxItem.ReadWrite.User. Это должно выглядеть так, когда вы закончите.

    {
        "name": "MailboxItem.ReadWrite.User",
        "type": "Delegated"
    }
    
  3. В массиве validDomains измените URL-адрес на "https://contoso.com", который является URL-адресом вымышленного поставщика онлайн-собраний. По завершении массив должен выглядеть следующим образом.

    "validDomains": [
        "https://contoso.com"
    ],
    
  4. Добавьте следующий объект в массив extensions.runtimes. Обратите внимание на указанные ниже аспекты этого кода.

    • Параметр minVersion набора обязательных элементов почтового ящика имеет значение 1.3, поэтому среда выполнения не будет запускаться на платформах и в версиях Office, где эта функция не поддерживается.
    • Для идентификатора среды выполнения задается описательное имя "online_meeting_runtime".
    • Для свойства "code.page" задается URL-адрес HTML-файла без пользовательского интерфейса, который загрузит команду функции.
    • Свойство "время существования" имеет значение "short", что означает, что среда выполнения запускается при выборе кнопки команды функции и завершает работу после завершения функции. (В некоторых редких случаях среда выполнения завершает работу до завершения обработчика. См . раздел Среды выполнения в надстройках Office.)
    • Существует действие для запуска функции с именем insertContosoMeeting. Вы создадите эту функцию на следующем шаге.
    {
        "requirements": {
            "capabilities": [
                {
                    "name": "Mailbox",
                    "minVersion": "1.3"
                }
            ],
            "formFactors": [
                "desktop"
            ]
        },
        "id": "online_meeting_runtime",
        "type": "general",
        "code": {
            "page": "https://contoso.com/commands.html"
        },
        "lifetime": "short",
        "actions": [
            {
                "id": "insertContosoMeeting",
                "type": "executeFunction",
                "displayName": "insertContosoMeeting"
            }
        ]
    }
    
  5. Замените массив extensions.ribbons следующим. Обратите внимание на следующие особенности этой разметки.

    • Параметр minVersion набора обязательных элементов почтового ящика имеет значение "1.3", поэтому настройки ленты не будут отображаться на платформах и в версиях Office, где эта функция не поддерживается.
    • Массив contexts указывает, что лента доступна только в окне организатора сведений о собрании.
    • На вкладке ленты по умолчанию (в окне организатора сведений о собрании) будет находиться пользовательская группа управления, помеченная как собрание Contoso.
    • Группа будет иметь кнопку с меткой Добавить собрание Contoso.
    • Для параметра actionId кнопки задано значение insertContosoMeeting, которое соответствует идентификатору действия, созданного на предыдущем шаге.
    "ribbons": [
      {
        "requirements": {
            "capabilities": [
                {
                    "name": "Mailbox",
                    "minVersion": "1.3"
                }
            ],
            "scopes": [
                "mail"
            ],
            "formFactors": [
                "desktop"
            ]
        },
        "contexts": [
            "meetingDetailsOrganizer"
        ],
        "tabs": [
            {
                "builtInTabId": "TabDefault",
                "groups": [
                    {
                        "id": "apptComposeGroup",
                        "label": "Contoso meeting",
                        "controls": [
                            {
                                "id": "insertMeetingButton",
                                "type": "button",
                                "label": "Add a Contoso meeting",
                                "icons": [
                                    {
                                        "size": 16,
                                        "url": "icon-16.png"
                                    },
                                    {
                                        "size": 32,
                                        "url": "icon-32.png"
                                    },
                                    {
                                        "size": 64,
                                        "url": "icon-64_02.png"
                                    },
                                    {
                                        "size": 80,
                                        "url": "icon-80.png"
                                    }
                                ],
                                "supertip": {
                                    "title": "Add a Contoso meeting",
                                    "description": "Add a Contoso meeting to this appointment."
                                },
                                "actionId": "insertContosoMeeting",
                            }
                        ]
                    }
                ]
            }
        ]
      }
    ]
    

Добавление поддержки мобильных устройств

  1. Откройте файл manifest.json .

  2. В массиве extensions.ribbons.requirements.formFactors добавьте mobile в качестве элемента. По завершении массив должен выглядеть следующим образом.

"formFactors": [
    "desktop",
    "mobile"
]
  1. В массиве extensions.ribbons.contexts добавьте onlineMeetingDetailsOrganizer в качестве элемента. По завершении массив должен выглядеть следующим образом.
"contexts": [
    "meetingDetailsOrganizer",
    "onlineMeetingDetailsOrganizer"
],
  1. В массиве extensions.ribbons.tabs найдите вкладку со значением builtInTabId элемента TabDefault. Добавьте в него дочерний массив customMobileRibbonGroups (в качестве однорангового узла существующего свойства groups). По завершении массив tabs должен выглядеть следующим образом:
"tabs": [
    {
        "builtInTabId": "TabDefault",
        "groups": [
            <-- non-mobile group objects omitted -->
        ],
        "customMobileRibbonGroups": [
            {
                "id": "mobileApptComposeGroup",
                "label": "Contoso Meeting",
                "controls": [
                    { 
                        "id": "mobileInsertMeetingButton",
                        "label": "Add Meeting",
                        "buttonType": "MobileButton",
                        "actionId": "insertContosoMeeting",
                        "icons": [
                            {
                                "scale": 1,
                                "size": 25,
                               "url": "https://contoso.com/assets/icon-25.png"
                            },
                            {
                                "scale": 1,
                                "size": 32,
                                "url": "https://contoso.com/assets/icon-32.png"
                            },
                            {
                                "scale": 1,
                                "size": 48,
                                "url": "https://contoso.com/assets/icon-48.png"
                            },                                
                            {
                                "scale": 2,
                                "size": 25,
                                "url": "https://contoso.com/assets/icon-25.png"
                            },
                            {
                                "scale": 2,
                                "size": 32,
                                "url": "https://contoso.com/assets/icon-32.png"
                            },
                            {
                                "scale": 2,
                                "size": 48,
                                "url": "https://contoso.com/assets/icon-48.png"
                            },                                
                            {
                                "scale": 3,
                                "size": 25,
                                "url": "https://contoso.com/assets/icon-25.png"
                            },
                            {
                                "scale": 3,
                                "size": 32,
                                "url": "https://contoso.com/assets/icon-32.png"
                            },
                            {
                                "scale": 3,
                                "size": 48,
                                "url": "https://contoso.com/assets/icon-48.png"
                            }
                        ]
                    }
                ]
            }
        ]
    }
]  

Совет

Дополнительные сведения о манифестах надстроек 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 заменен вашим собственным.

Пользовательский интерфейс собрания Create

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

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

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

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

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

Важно!

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

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

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

Важно!

  • Кнопка Присоединиться поддерживается только в Outlook в Интернете, на Mac, в Android, iOS и в новом Outlook в Windows (предварительная версия).
  • Кнопка Присоединиться использует технологию, используемую контекстными надстройками Outlook на основе сущностей. Так как эта технология будет прекращена к концу июня 2024 года, в настоящее время разрабатывается альтернативная реализация кнопки "Присоединиться ". При переходе на эту реализацию кнопка "Присоединиться " может не отображаться при использовании надстройки собрания по сети. В качестве обходного решения необходимо выбрать ссылку на собрание в тексте приглашения на собрание, чтобы присоединиться к собранию напрямую. Дополнительные сведения о прекращении использования контекстных надстроек на основе сущностей см. в разделе Прекращение использования контекстных надстроек Outlook на основе сущностей.
  1. Create новую проблему GitHub.
  2. Задайте для новой проблемы заголовок "Outlook: регистрация шаблона собрания по сети для my-service", заменив my-service именем своей службы.
  3. В тексте проблемы замените существующий текст строкой, заданной в newBody переменной или аналогичной переменной из раздела Реализация добавления сведений о собрании по сети ранее в этой статье.
  4. Нажмите кнопку Отправить новую проблему.

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

Доступные API

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

Ограничения

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

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

См. также