Добавление пользователя Microsoft Teams в существующий вызов с помощью службы автоматизации вызовов
Внимание
Эта функция Службы коммуникации Azure сейчас доступна в предварительной версии.
Предварительные версии API и пакеты SDK предоставляются без соглашения об уровне обслуживания. Рекомендуется не использовать их для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности.
Дополнительные сведения см . в дополнительных условиях использования для предварительных версий Microsoft Azure.
В этом кратком руководстве мы используем API службы автоматизации вызовов Службы коммуникации Azure для добавления, удаления и передачи вызова пользователю Teams.
Необходимые компоненты
- Учетная запись Azure с активной подпиской см. в статье "Создание учетной записи бесплатно".
- Лицензия Телефонная система Microsoft Teams и клиент Teams с правами администратора. Лицензия Teams Phone является обязательной для использования этой функции, дополнительные сведения о лицензиях Teams см. здесь. Пользователь Microsoft Teams также должен быть
voice
включен, см . раздел настройки телефонной системы. Административные привилегии необходимы для авторизации ресурса Служб коммуникации для вызова пользователей Teams, описанных далее на шаге 1. - Развернутый ресурс службы коммуникации и допустимый строка подключения, найденный путем выбора ключей в меню слева в портал Azure.
- Получите номер телефона ТСОП из ресурса службы коммуникации. Обратите внимание на номер телефона, который вы приобрели для использования в этом кратком руководстве.
- Подписка Сетка событий Azure для получения
IncomingCall
события. - Последняя библиотека API автоматизации вызовов службы коммуникации Azure для операционной системы.
- Веб-служба, реализующая библиотеку API автоматизации вызовов, следуйте инструкциям в этом руководстве.
Шаг 1. Авторизация для ресурса Службы коммуникации Azure для включения вызова пользователям Microsoft Teams
Чтобы включить вызов через API службы автоматизации вызовов, администратор Microsoft Teams или глобальный администратор должны явно включить доступ к ресурсам служб коммуникации к клиенту, чтобы разрешить вызов.
Параметр уровня клиента Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell), который включает или отключает федерацию между своим клиентом и определенными ресурсами служб коммуникации.
Политика пользователя Set-CsExternalAccessPolicy (SkypeForBusiness), которая позволяет администратору дополнительно контролировать, какие пользователи в своей организации могут участвовать в федеративном взаимодействии с пользователями служб коммуникации.
Шаг 2. Использование API Graph для получения идентификатора объекта Microsoft Entra для пользователей Teams и при необходимости проверки их присутствия
Идентификатор объекта Microsoft Entra (OID) пользователя Teams требуется для добавления или передачи в них из вызова Служб коммуникации. OID можно получить через 1) портал Office, 2) Центр администрирования Microsoft Entra, 3) Microsoft Entra Connect; или 4) API Graph. В следующем примере используется API Graph.
Администратор Microsoft Entra должен иметь большое согласие, прежде чем Graph можно будет использовать для поиска пользователей, дополнительные сведения см. в документе обзора Microsoft Graph API безопасности. OID можно получить с помощью API пользователей списка для поиска пользователей. В следующем примере показан поиск по отображаемого имени, но вы также можете искать другие свойства:
Вывод списка пользователей с помощью Microsoft Graph версии 1.0:
Request:
https://graph.microsoft.com/v1.0/users?$search="displayName:Art Anderson"
Permissions:
Application and delegated. Refer to documentation.
Response:
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
"value": [
{
"displayName": "Art Anderson",
"mail": "artanderson@contoso.com",
"id": "fc4ccb5f-8046-4812-803f-6c344a5d1560"
}
При необходимости можно получить присутствие для пользователя с помощью API получения присутствия и пользовательского ObjectId. Дополнительные сведения см. в документации по Microsoft Graph версии 1.0.
Request:
https://graph.microsoft.com/v1.0/users/fc4ccb5f-8046-4812-803f-6c344a5d1560/presence
Permissions:
Delegated only. Application not supported. Refer to documentation.
Response:
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('fc4ccb5f-8046-4812-803f-6c344a5d1560')/presence/$entity",
"id": "fc4ccb5f-8046-4812-803f-6c344a5d1560",
"availability": "Offline",
"activity": "Offline"
Шаг 3. Добавление пользователя Teams в существующий вызов служб коммуникации, контролируемый API автоматизации вызовов
Необходимо выполнить необходимый шаг и иметь приложение веб-службы для управления вызовом служб коммуникации. С помощью объекта callConnection добавьте участника в вызов.
CallAutomationClient client = new CallAutomationClient('<Connection_String>');
AnswerCallResult answer = await client.AnswerCallAsync(incomingCallContext, new Uri('<Callback_URI>'));
await answer.Value.CallConnection.AddParticipantAsync(
new CallInvite(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'))
{
SourceDisplayName = "Jack (Contoso Tech Support)"
});
CallAutomationClient client = new CallAutomationClientBuilder().connectionString("<resource_connection_string>").buildClient();
AnswerCallResult answer = client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.getCallConnection().addParticipant(
new CallInvite(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"))
.setSourceDisplayName("Jack (Contoso Tech Support)"));
const client = new CallAutomationClient("<resource_connection_string>");
const answer = await client.answerCall(incomingCallContext, "<Callback_URI>"));
answer.callConnection.addParticipant({
targetParticipant: { microsoftTeamsUserId: "<Teams_User_Guid>" },
sourceDisplayName: "Jack (Contoso Tech Support)"
});
call_automation_client = CallAutomationClient.from_connection_string("<resource_connection_string>")
answer = call_automation_client.answer_call(incoming_call_context = incoming_call_context, callback_url = "<Callback_URI>")
call_connection_client = call_automation_client.get_call_connection(answer.call_connection_id)
call_connection_client.add_participant(target_participant = CallInvite(
target = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"),
source_display_name = "Jack (Contoso Tech Support)"))
На классическом клиенте Microsoft Teams вызов Джека отправляется пользователю Microsoft Teams через входящее уведомление о вызове.
После того как пользователь Microsoft Teams принимает вызов, взаимодействие с вызовом для пользователя Microsoft Teams отображает всех участников в списке Microsoft Teams. Приложение, управляющее вызовом с помощью API автоматизации вызовов, остается скрытым для пользователя Teams на экране вызова.
Шаг 4. Удаление пользователя Teams из существующего вызова служб коммуникации, управляемого API автоматизации вызовов
await answer.Value.CallConnection.RemoveParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().removeParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.removeParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.remove_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id="<USER_ID>"))
Необязательная функция: передача пользователю Teams из существующего вызова служб коммуникации, управляемого API автоматизации вызовов.
await answer.Value.CallConnection.TransferCallToParticipantAsync(new MicrosoftTeamsUserIdentifier('<Teams_User_Guid>'));
answer.getCallConnection().transferCallToParticipant(new MicrosoftTeamsUserIdentifier("<Teams_User_Guid>"));
answer.callConnection.transferCallToParticipant({ microsoftTeamsUserId: "<Teams_User_Guid>" });
call_connection_client.transfer_call_to_participant(target_participant = MicrosoftTeamsUserIdentifier(user_id = "<USER_ID>"))
Очистка ресурсов
Если вы хотите отменить и удалить подписку на Службы коммуникации, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы. См. сведения об очистке ресурсов.
Следующие шаги
- Узнайте, как записывать вызовы.
- Дополнительные сведения об автоматизации вызовов и ее функциях.
- Дополнительные сведения о возможностях поддержки взаимодействия Teams с помощью автоматизации вызовов Службы коммуникации Azure
- Узнайте о действии воспроизведения звука в вызове.
- Узнайте, как создать рабочий процесс вызова для сценария поддержки клиентов.