Службы коммуникации Azure поддержка удостоверений Teams — варианты использования
Microsoft Teams предоставляет удостоверения, управляемые идентификатором Microsoft Entra ИД, и интерфейсы вызова, контролируемые Центром администрирования Teams и политиками. У пользователей могут быть назначены лицензии для включения телефонных звонков и расширенных возможностей звонков Телефонная система Microsoft Teams. Службы коммуникации Azure поддержка удостоверений Teams позволяет управлять голосовой связью Teams через IP-адрес (VoIP), телефонными звонками Teams и присоединяться к собраниям Teams. Разработчики могут расширить Службы коммуникации Azure с ПОМОЩЬЮ API Graph для предоставления контекстных данных из экосистемы Microsoft 365. Эта страница предоставляет вдохновение для использования существующих технологий Майкрософт для предоставления комплексного интерфейса для вызова сценариев с пользователями Teams и Службы коммуникации Azure вызова пакетов SDK.
Вариант использования 1. Выполнение исходящего вызова ТСОП Teams
В этом сценарии показан вариант использования с несколькими клиентами, где компания Contoso предоставляет SaaS компании Fabrikam. SaaS позволяет пользователям Fabrikam совершать телефонные звонки Teams с помощью пользовательского веб-сайта, который принимает удостоверение пользователя Teams и конфигурацию подключения ТСОП, назначенного этому пользователю Teams.
На следующей схеме последовательности показаны подробные шаги по запуску телефонного звонка Teams:
Шаги
- Проверка подлинности Алисы из Fabrikam в клиентском приложении Contoso: Алиса использует браузер для открытия веб-страницы Fabrikam и проверки подлинности. Дополнительные сведения о проверке подлинности с помощью удостоверений Teams можно найти. Если проверка подлинности выполнена успешно, Алиса перенаправляется на начальную страницу.
- Загрузка клиентов и их номеров ТСОП: Компания Contoso предоставляет пользовательскую логику для получения списка клиентов и связанных с ними номеров телефонов. Этот список отображается на начальной странице в Алисе.
- Инициируйте вызов Меган: Алиса выбирает кнопку, чтобы инициировать вызов ТСОП Меган в клиентском приложении Contoso. Клиентское приложение использует пакет SDK для вызова Службы коммуникации Azure для предоставления возможности вызова. Во-первых, он создает экземпляр callAgent, содержащий маркер доступа Службы коммуникации Azure, полученный на первом шаге.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Затем необходимо начать звонок по телефону Мегана.
const pstnCallee = { phoneNumber: '<MEGAN_PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = callAgent.startCall([pstnCallee], { threadId: '00000000-0000-0000-0000-000000000000' });
- Подключение ТСОП к Меган: звонок направляется через телефонное подключение Teams, назначенное Алисе, достигая сети ТСОП и звоня по телефону, связанному с предоставленным номером телефона. Меган видит входящий звонок с номера телефона, связанного с пользователем Teams Алисы.
- Меганс принимает звонок: Меган принимает звонок и устанавливается соединение между Алиса и Меганом.
Вариант использования 2. Получение входящего звонка Teams по телефону
В этом сценарии показан вариант использования с несколькими клиентами, где компания Contoso предоставляет SaaS компании Fabrikam. SaaS позволяет пользователям Fabrikam получать телефонный звонок Teams с помощью пользовательского веб-сайта, который принимает удостоверение пользователя Teams и конфигурацию подключения ТСОП, назначенного этому пользователю Teams.
На следующей схеме последовательности показаны подробные шаги по приему входящих телефонных звонков Teams:
Шаги
- Проверка подлинности Алисы из Fabrikam в клиентском приложении Contoso: Алиса использует браузер для открытия веб-страницы Fabrikam и проверки подлинности. Дополнительные сведения о проверке подлинности с помощью удостоверений Teams можно найти. Если проверка подлинности выполнена успешно, Алиса перенаправляется на начальную страницу.
- Подписка на прием вызовов: клиентское приложение использует пакет SDK для вызова Службы коммуникации Azure для предоставления возможности вызова. Во-первых, он создает экземпляр callAgent, содержащий маркер доступа Службы коммуникации Azure, полученный на первом шаге.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Затем вы подписываетесь на событие входящего вызова.
const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
const incomingCall = args.teamsIncomingCall;
// Get information about caller
var callerInfo = incomingCall.callerInfo
showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);
Метод showIncomingCall — это пользовательский метод Contoso, который будет отображать пользовательский интерфейс для указания входящих вызовов и двух кнопок для принятия и отклонения вызова. Если выбрать кнопку "Принять", используется следующий код:
// Accept the call
var call = await incomingCall.accept();
Если выбрать кнопку "Отклонить", используется следующий код:
// Reject the call
incomingCall.reject();
- Меган начинает звонок на номер ТСОП, назначенный пользователю Teams Алиса: Меган использует свой телефон для вызова Алисы. Сеть оператора будет подключаться к телефону Teams, назначенному Алисе, и она будет звонить всем конечным точкам Teams, зарегистрированным для Алисы. Она включает в себя: классические, мобильные, веб-клиенты и приложения Teams на основе Службы коммуникации Azure вызываемого пакета SDK.
- Клиентское приложение Contoso отображает входящие вызовы Мегана: клиентское приложение получает уведомление о входящих звонках. Метод showIncomingCall будет использовать пользовательскую логику Contoso для перевода номера телефона в имя клиента (например, база данных, включающая пары "ключ-значение", состоящая из номера телефона и имени клиента). При извлечении сведений уведомление отображается в клиентском приложении Компании Алиса.
- Алиса принимает вызов: Алиса выбирает кнопку, чтобы принять звонок, и устанавливается соединение между Алиса и Меганом.
Вариант использования 3. Выполнение исходящего вызова VoIP Teams
В этом сценарии показан вариант использования с несколькими клиентами, где компания Contoso предоставляет SaaS компании Fabrikam. SaaS позволяет пользователям Fabrikam совершать вызовы VoIP Teams с помощью пользовательского веб-сайта, который принимает удостоверение пользователя Teams.
На следующей схеме последовательности показаны подробные шаги по запуску вызова VoIP Teams:
Шаги
- Проверка подлинности Алисы из Fabrikam в клиентском приложении Contoso: Алиса использует браузер для открытия веб-страницы Fabrikam и проверки подлинности. Дополнительные сведения о проверке подлинности с помощью удостоверений Teams можно найти. Если проверка подлинности выполнена успешно, Алиса перенаправляется на начальную страницу.
- Загрузка пользователей из организации Fabrikam и их идентификаторов: клиентское приложение Contoso использует API Graph для получения списка пользователей из клиента Fabrikam. Алиса или ее администратор должны предоставить согласие API Graph для выполнения этого действия. Дополнительные сведения о команде API Graph см. в документации.
GET https://graph.microsoft.com/v1.0/users
Permissions: User.ReadBasic.All (delegated)
Response: response.body.value[1].displayName; // ”Megan Bowen”
response.body.value[1].id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"
Затем клиентское приложение Contoso отобразит список пользователей и возможность инициировать вызов заданного пользователя.
- Инициируйте вызов Меган: Алиса выбирает кнопку, чтобы инициировать вызов VoIP Teams в клиентском приложении Contoso. Клиентское приложение использует пакет SDK для вызова Службы коммуникации Azure для предоставления возможности вызова. Звонки в клиентах Teams связаны с чатом Teams. Во-первых, приложение запрашивает создание выделенного чата для вызова VoIP.
POST https://graph.microsoft.com/v1.0/chats
Body:
{
"chatType": "oneOnOne",
"members": [
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [
"owner"
],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca')"
},
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": [
"owner"
],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('e8b753b5-4117-464e-9a08-713e1ff266b3')"
}
]
}
Permissions: Chat.Create (delegated)
Response: response.body.value.id; // "19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces"
Затем клиентское приложение создает экземпляр callAgent, содержащий маркер доступа Службы коммуникации Azure, полученный на первом шаге.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Затем вы начнете вызов идентификатора Teams Мегана.
var teamsUser = { microsoftTeamsUserId: 'e8b753b5-4117-464e-9a08-713e1ff266b3'};
const oneToOneCall = callAgent.startCall([teamsUser], { threadId: '19:8c0a1a67-50ce-4114-bb6c-da9c5dbcf6ca_e8b753b5-4117-464e-9a08-713e1ff266b3@unq.gbl.spaces' });
- Подключение вызова VoIP к Megan: вызов направляется через Teams и звоня клиенты Teams, связанные с Меганом. Меган видит входящий звонок из Алисы с именем, определенным в идентификаторе Microsoft Entra.
- Меганс принимает звонок: Меган принимает звонок и устанавливается соединение между Алиса и Меганом.
Вариант использования 4. Получение входящего вызова VoIP Teams
В этом сценарии показан вариант использования с несколькими клиентами, где компания Contoso предоставляет SaaS компании Fabrikam. SaaS позволяет пользователям Fabrikam получать вызов VoIP Teams с помощью пользовательского веб-сайта, который принимает удостоверение пользователя Teams и применяет политики маршрутизации, применяемые к пользователю Teams.
На следующей схеме последовательности показаны подробные шаги по приему входящих вызовов VoIP Teams:
Шаги
- Проверка подлинности Алисы из Fabrikam в клиентском приложении Contoso: Алиса использует браузер для открытия веб-страницы Fabrikam и проверки подлинности. Дополнительные сведения о проверке подлинности с помощью удостоверений Teams можно найти. Если проверка подлинности выполнена успешно, Алиса перенаправляется на начальную страницу.
- Подписка на прием вызовов: клиентское приложение использует пакет SDK для вызова Службы коммуникации Azure для предоставления возможности вызова. Во-первых, он создает экземпляр callAgent, содержащий маркер доступа Службы коммуникации Azure, полученный на первом шаге.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Затем приложение подписывается на событие входящего вызова.
const incomingCallHandler = async (args: { teamsIncomingCall: TeamsIncomingCall }) => {
const incomingCall = args.teamsIncomingCall;
// Get information about caller
var callerInfo = incomingCall.callerInfo
showIncomingCall(callerInfo,incomingCall);
};
callAgent.on('incomingCall', incomingCallHandler);
Метод showIncomingCall — это пользовательский метод Contoso, который будет отображать пользовательский интерфейс для указания входящих вызовов и двух кнопок для принятия и отклонения вызова. Если выбрать кнопку "Принять", используется следующий код:
// Accept the call
var call = await incomingCall.accept();
Если выбрать кнопку "Отклонить", используется следующий код:
// Reject the call
incomingCall.reject();
- Меган начинает вызов VoIP к пользователю Teams Алиса: Меган использует свой классический клиент Teams для вызова Алисы. Инфраструктура Teams будет звонить всем конечным точкам, связанным с Алиса. Она включает в себя: классические, мобильные, веб-клиенты и приложения Teams на основе Службы коммуникации Azure вызываемого пакета SDK.
- Клиентское приложение Contoso отображает входящие вызовы Мегана: клиентское приложение получает уведомление о входящих звонках. Метод showIncomingCall будет использовать API Graph для перевода идентификатора пользователя Teams для отображения имени.
GET https://graph.microsoft.com/v1.0/users/e8b753b5-4117-464e-9a08-713e1ff266b3
Permissions: User.Read (delegated)
Response: response.body.value.displayName; // ”Megan Bowen”
response.body.value.id; // "e8b753b5-4117-464e-9a08-713e1ff266b3"
При извлечении сведений уведомление отображается в клиентском приложении Компании Алиса.
- Алиса принимает вызов: Алиса выбирает кнопку, чтобы принять звонок, и устанавливается соединение между Алиса и Меганом.
Вариант использования 5. Присоединение к собранию Teams
В этом сценарии показан вариант использования с несколькими клиентами, где компания Contoso предоставляет SaaS компании Fabrikam. SaaS позволяет пользователям Fabrikam присоединяться к собраниям Teams с помощью пользовательского веб-сайта, который принимает удостоверение пользователя Teams.
На следующей схеме последовательности показаны подробные шаги по присоединению к собранию Teams:
Шаги
- Проверка подлинности Алисы из Fabrikam в клиентском приложении Contoso: Алиса использует браузер для открытия веб-страницы Fabrikam и проверки подлинности. Дополнительные сведения о проверке подлинности с помощью удостоверений Teams можно найти. Если проверка подлинности выполнена успешно, Алиса перенаправляется на начальную страницу.
- Загрузка собраний Teams и их идентификаторов: клиентское приложение Contoso использует API Graph для получения списка собраний Teams для пользователей Fabrikam. Алиса или ее администратор должны предоставить согласие API Graph для выполнения этого действия. Дополнительные сведения о команде API Graph см. в документации.
GET https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime={start_datetime}&endDateTime={end_datetime}
Permissions: Calendars.Read (delegated)
Response: response.body.value[0].subject; // ”Project Tailspin”
response.body.value[0].onlineMeeting.joinUrl; // "https://teams.microsoft.com/l/meetup-join/..."
response.body.value[0].start.dateTime;
response.body.value[0].end.dateTime;
response.body.value[0].location.displayName;
Затем клиентское приложение Contoso отобразит список собраний Teams и возможность присоединиться к ним.
- Присоединение к собранию Teams "Project Tailspin": Алиса выбирает кнопку для присоединения к собранию Teams "Project Tailspin" в клиентском приложении Contoso. Клиентское приложение использует пакет SDK для вызова Службы коммуникации Azure для предоставления возможности вызова. Клиентские приложения создают экземпляр callAgent, содержащий маркер доступа Службы коммуникации Azure, полученный на первом шаге.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Затем приложение присоединяется к собранию с помощью полученного joinUrl.
var meetingLocator = new TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...");
callAgent.startCallJoinAsync(meetingLocator , new JoinCallOptions());
Затем Алиса присоединяется к собранию Teams.
- Другие участники, присоединенные к собранию Teams: предоставленный интерфейс — это стандартное собрание Teams. На основе конфигурации и приглашений собрание Teams можно присоединить к пользователю Teams, анонимному пользователю Teams с помощью веб-клиента Team, классического клиента Teams, мобильного клиента Teams, Службы коммуникации Azure пользователя через приложения на основе пакета SDK для связи или пользователей с помощью телефонов.
Следующие шаги
Вам могут быть интересны следующие статьи.
- Дополнительные сведения о проверке подлинности.
- Краткое руководство по проверке подлинности пользователей Teams.
- Краткое руководство по вызову пользователя Teams.