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


Прямая ссылка на рабочий процесс в Teams

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

В этой статье вы узнаете, как создать прямую ссылку:

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

https://teams.microsoft.com/l/chat/0/0?users=<user1>,<user2>,...&topicName=<chat name>&message=<precanned text>

Пример: https://teams.microsoft.com/l/chat/0/0?users=joe@contoso.com,bob@contoso.com&topicName=Prep%20For%20Meeting%20Tomorrow&message=Hi%20folks%2C%20kicking%20off%20a%20chat%20about%20our%20meeting%20tomorrow

Параметры запроса:

  • users: разделенный запятыми список идентификаторов пользователей, представляющих участников чата. Пользователь, выполняющий действие, всегда включен в качестве участника. Поле идентификатора пользователя поддерживает Microsoft Entra UserPrincipalName, например только адрес электронной почты.
  • topicName: необязательное поле для отображаемого имени чата, если в чате есть три или более пользователей. Если это поле не указано, отображаемое имя чата основывается на именах участников.
  • message: необязательное поле для текста сообщения, которое необходимо вставить в поле создания текущего пользователя, когда чат находится в состоянии черновика.

Чтобы использовать эту прямую ссылку с ботом, укажите прямую ссылку в качестве целевого URL-адреса в кнопке карта или коснитесь действия с помощью openUrl типа действия. Приложения также могут использовать клиентскую библиотеку Teams JavaScript (TeamsJS) версии 2.0 или более поздней версии, чтобы создать эту библиотеку без необходимости вручную подготавливать прямую ссылку. В следующем примере teamsJS используется для проверка, если поддерживается возможность чата:

if(chat.isSupported()) {
    const chatPromise = chat.openGroupChat({ users: ["joe@contoso.com","bob@contoso.com"], topic: "Prep For Meeting Tomorrow", message: "Hi folks kicking off chat about our meeting tomorrow"});
    chatPromise.
      then((result) => {/*Successful operation*/}).
      catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }

Примечание.

Если чат уже существует, в этом чате открывается прямая ссылка.

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

Хотя мы рекомендуем использовать типизированные API TeamsJS, можно вручную создать глубокие ссылки на встроенное диалоговое окно планирования Teams.

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

https://teams.microsoft.com/l/meeting/new?subject=<meeting subject>&startTime=<date>&endTime=<date>&content=<content>&attendees=<user1>,<user2>,<user3>,...

Примечание.

Параметры поиска не поддерживают сигнал + вместо пробела (``). Убедитесь, что код кодировки URI возвращается %20 для пробелов. Например, хорошо, ?subject=test%20subject но ?subject=test+subject плохо.

Параметры запроса:

  • attendees: необязательный список идентификаторов пользователей, разделенных запятыми, представляющих участников собрания. Пользователь, выполняющий действие, является организатором собрания. Поле идентификатора пользователя поддерживает только Microsoft Entra UserPrincipalName, обычно это адрес электронной почты.
  • startTime: необязательный параметр для времени начала события. Время начала должно быть в формате ISO 8601, например 2018-03-12T23:55:25+02:00.
  • endTime: необязательный параметр для времени окончания события, также в формате ISO 8601.
  • subject: необязательный параметр для темы собрания.
  • content: необязательный параметр для поля сведений о собрании.

Примечание.

Невозможно указать расположение, так как оно не поддерживается. При создании времени начала и окончания необходимо указать смещение в формате UTC, включая часовые пояса.

Чтобы использовать эту прямую ссылку с ботом, можно указать прямую ссылку в качестве целевого URL-адреса в кнопке карта или в качестве действия касания с помощью openUrl типа действия.

Пример: https://teams.microsoft.com/l/meeting/new?subject=test%20subject&attendees=joe@contoso.com,bob@contoso.com&startTime=10%2F24%2F2018%2010%3A30%3A00&endTime=10%2F24%2F2018%2010%3A30%3A00&content=​​​​​​​test%3Acontent​​​​​​​​​​​​​​

Вы также можете использовать TeamsJS версии 2.0 или более поздней версии в приложении Teams, чтобы открыть диалоговое окно планирования собрания без необходимости вручную подготавливать ссылку. Чтобы открыть диалоговое окно планирования в Teams, необходимо продолжать использовать исходный метод на основе URL-адреса прямой ссылки, так как Teams еще не поддерживает возможность календаря:

// Open a scheduling dialog from your tab
if(calendar.isSupported()) {
   const calendarPromise = calendar.composeMeeting({
      attendees: ["joe@contoso.com", "bob@contoso.com"],
      content: "test content",
      endTime: "2018-10-24T10:30:00-07:00",
      startTime: "2018-10-24T10:00:00-07:00",
      subject: "test subject"});
   calendarPromise.
      then((result) => {/*Successful operation*/}).
      catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }

Дополнительные сведения о работе с календарем см. в пространстве имен календаря в справочной документации по API.

Вы можете настроить приложения Teams, чтобы подготовить прямую ссылку для пользователей, чтобы начать единый звонок, групповой звонок или видеозвонок. Вы можете вызывать только звуковые или аудио-видеозвонки для одного пользователя или группы пользователей, указав тип вызова и участников. Перед выполнением вызова Teams клиент запрашивает подтверждение. Если есть групповой вызов, вы можете вызвать набор пользователей VoIP и ТСОП в одном вызове глубокой ссылки.

В видеовызове клиент Teams запрашивает подтверждение перед включением видео звонящего для вызова. Получатель звонка может ответить только через голосовой вызов или голосовой и видеовызов через окно уведомления о звонках Teams.

Примечание.

Этот метод нельзя использовать для вызова собрания.

Вы можете настроить глубокие ссылки одним из следующих двух способов:

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

Прямая ссылка Формат Пример
Совершение голосовых звонков https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2> https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com
Совершение голосовых и видеозвонков https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true
Совершение голосовых и видеозвонков с дополнительным источником параметров https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true&source=demoApp https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true&source=demoApp
Совершение голосовых и видеозвонков пользователям для пользователей протокола VoIP и ТСОП https://teams.microsoft.com/l/call/0/0?users=<user1>,4:<phonenumber> https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com,4:9876543210

Ниже приведены параметры запроса:

  • users: разделенный запятыми список идентификаторов пользователей, представляющих участников вызова. Поле идентификатора пользователя поддерживает Microsoft Entra UserPrincipalName, обычно адрес электронной почты, или в вызове по ТСОП поддерживает ТСОП MRI 4:<phonenumber>.
  • withVideo: необязательный параметр, который можно использовать для выполнения видеозвонка. Установка этого параметра включает только камеру вызывающего объекта. Получатель звонка может ответить с помощью звука или аудио- и видеозвонка через окно уведомлений о вызове Teams.

Приложения также могут использовать TeamsJS версии 2.0 или более поздней версии для запуска вызовов без необходимости вручную подготавливать эти глубокие ссылки. В следующем коде показано использование TeamsJS для запуска вызова:

if(call.isSupported()) {
    const callPromise = call.startCall({ targets: ["joe@contoso.com","bob@contoso.com","4:9876543210"], requestedModalities: [call.CallModalities.Audio], source: "demoApp"});
    callPromise.
      then((result) => {/*Successful operation*/}).
      catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }

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

{ "appSharingUrl" : "https://teams.microsoft.com/extensibility-apps/meetingapis/view", "appId": "9ec80a73-1d41-4bcb-8190-4b9eA9e29fbb" , "useMeetNow": false }

Параметры запроса для контекста приложения:

  • appID: это идентификатор, который можно получить из манифеста приложения.
  • appSharingUrl: URL-адрес, к которому необходимо предоставить общий доступ на этапе, должен быть допустимым доменом, определенным в манифесте приложения. Если URL-адрес не является допустимым доменом, появится диалоговое окно с ошибкой, чтобы предоставить пользователю описание ошибки.
  • useMeetNow: включает логический параметр, который может иметь значение true или false.
    • True: если useMeetNow значение равно true и если текущее собрание отсутствует, будет инициировано новое собрание Meet now. При текущем собрании это значение будет игнорироваться.

    • False: значение по умолчанию равно false. Это означает, что при совместном использовании прямой ссылки на этап и отсутствии текущего useMeetNow собрания появится всплывающее окно календаря. Однако вы можете предоставить общий доступ непосредственно во время собрания.

Убедитесь, что все параметры запроса правильно закодированы URI, а контекст приложения должен быть закодирован дважды в конечном URL-адресе. Ниже приведен пример:

const appContext= JSON.stringify({ 
  "appSharingUrl" : "https://teams.microsoft.com/extensibility-apps/meetingapis/view",
  "appId": "9cc80a93-1d41-4bcb-8170-4b9ec9e29fbb",
  "useMeetNow": false
});
const encodedContext = encodeURIComponent(appContext).replace(/'/g,"%27").replace(/"/g,"%22");
const encodedAppContext = encodeURIComponent(encodedContext).replace(/'/g,"%27").replace(/"/g,"%22");

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

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

msteams:/l/meeting-share?deeplinkId={GUID}&fqdn={string}&lm=deeplink&appContext={json encoded app context}

Пример: https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Atrue%257D

Прямая ссылка Формат Пример
Чтобы предоставить общий доступ к приложению и открыть календарь Teams, если useMeeetNow имеет значение false, по умолчанию. https://teams.microsoft.com/l/meeting-share?deeplinkId={deeplinkid}&fqdn={fqdn}}&lm=deeplink%22&appContext={encoded app context} https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Afalse%257D
Чтобы предоставить общий доступ к приложению и инициировать мгновенное собрание, когда useMeeetNow имеет значение true. https://teams.microsoft.com/l/meeting-share?deeplinkId={deeplinkid}&fqdn={fqdn}}&lm=deeplink%22&appContext={encoded app context} https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Atrue%257D

Параметры запроса:

  • deepLinkId: любой идентификатор, используемый для корреляции телеметрии.
  • fqdn: fqdn необязательный параметр, который можно использовать для переключения в соответствующую среду собрания для предоставления общего доступа к приложению на сцене. Он поддерживает сценарии, в которых определенный общий ресурс приложения происходит в определенной среде. Значение по умолчанию — корпоративный fqdn URL-адрес, а возможные значения — Teams.live.com для Teams для жизни, teams.microsoft.comили teams.microsoft.us.

Примечание.

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

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

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

https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>.

Пример:

https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456&context={"chatId": "17:b42de192376346a7906a7dd5cb84b673@thread.v2","contextType":"chat"}

По умолчанию прямая ссылка открывается на боковой панели собрания. Чтобы открыть прямую ссылку непосредственно в приложении, а не на боковой панели собрания, добавьте openInMeeting=false в формате прямой ссылки:

https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false

Дополнительные сведения см. в разделе Прямая ссылка на вкладку.

Прямая ссылка не открывается на боковой панели собрания в следующих сценариях:

  • Активное собрание отсутствует.
  • В манифесте приложения нет sidePanel объявленного контекста.
  • openInMeeting в прямой ссылке задано значение false .
  • Прямая ссылка выбирается за пределами окна собрания или компонента.
  • Прямая ссылка не соответствует текущему собранию, например прямая ссылка, созданная в другом собрании.

Приложение Teams может считывать URL-адрес для присоединения к URL-адресу собрания с помощью API Graph. Эта прямая ссылка открывает пользовательский интерфейс для присоединения пользователя к собранию. Дополнительные сведения см. в разделе Получение onlineMeeting и получение сведений о собрании.

Пример кода

Название примера Описание .NET Node.js
Прямая ссылка, используюющая идентификатор subentity В этом примере показано, как использовать прямую ссылку из чата бота на вкладку, используюющую идентификатор subentity. Здесь также показаны подробные ссылки для:
— Переход к приложению
— Переход к чату
— Открытие диалогового окна профиля
— Открытие диалогового окна планирования
Просмотр Просмотр