Aracılığıyla paylaş


Çağrı Otomasyonu kullanarak var olan bir aramaya Microsoft Teams kullanıcısı ekleme

Önemli

Azure İletişim Hizmetleri'nin bu özelliği şu anda önizleme aşamasındadır.

Önizleme API'leri ve SDK'ları hizmet düzeyi sözleşmesi olmadan sağlanır. Bunları üretim iş yükleri için kullanmamanızı öneririz. Bazı özellikler desteklenmeyebilir veya kısıtlı özelliklere sahip olabilir.

Daha fazla bilgi için Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları'nı gözden geçirin.

Bu hızlı başlangıçta, Teams kullanıcısına çağrı eklemek, kaldırmak ve aktarmak için Azure İletişim Hizmetleri Çağrı Otomasyonu API'lerini kullanacağız.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı, ayrıntılar için bkz. Ücretsiz hesap oluşturma..
  • yönetim ayrıcalıklarına sahip bir Microsoft Teams Telefon lisansı ve Teams kiracısı. Bu özelliği kullanmak için Teams Telefon lisansı şarttır. Teams lisansları hakkında buradan daha fazla bilgi edinebilirsiniz. Microsoft Teams kullanıcısının da voice etkinleştirilmesi gerekir. Bkz . telefonunuzun sistemini ayarlama. daha sonra 1. Adımda açıklandığı gibi, İletişim Hizmetleri kaynağını Teams kullanıcılarını çağırmak üzere yetkilendirmek için yönetici ayrıcalıkları gerekir.
  • Dağıtılmış bir İletişim Hizmeti kaynağı ve Geçerli bağlantı dizesi, Azure portalında sol taraftaki menüde Anahtarlar'ı seçerek bulunur.
  • İletişim Hizmeti kaynağından bir PSTN telefon numarası alın. Bu hızlı başlangıçta kullanmak için edindiğiniz telefon numarasını not edin.
  • Olayı almak IncomingCall için bir Azure Event Grid aboneliği.
  • İşletim sisteminiz için en son Azure İletişim Hizmeti Çağrı Otomasyonu API kitaplığı .
  • Çağrı Otomasyonu API kitaplığını uygulayan bir web hizmeti, bu öğreticiyi izleyin.

1. Adım: Microsoft Teams kullanıcılarına çağrıyı etkinleştirmek için Azure İletişim Hizmetleri Kaynağınız için yetkilendirme

Arama Otomasyonu API'leri aracılığıyla aramayı etkinleştirmek için, Bir Microsoft Teams Yöneticisinin veya Genel Yöneticisinin, çağrıya izin vermek için kiracısına İletişim Hizmetleri kaynakları erişimini açıkça etkinleştirmesi gerekir.

Kiracıları ile belirli İletişim Hizmetleri kaynakları arasında federasyonu etkinleştiren/devre dışı bırakan Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) Kiracı düzeyi ayarı.

Set-CsExternalAccessPolicy (SkypeForBusiness) Yöneticinin kuruluşundaki hangi kullanıcıların İletişim Hizmetleri kullanıcıları ile federasyon iletişimlerine katılabileceğini daha fazla denetlemesine olanak tanıyan kullanıcı ilkesi.

2. Adım: Teams kullanıcıları için Microsoft Entra nesne kimliğini almak ve isteğe bağlı olarak iletişim durumlarını denetlemek için Graph API'sini kullanın

Teams kullanıcısını bir İletişim Hizmetleri çağrısına eklemek veya bu çağrıdan aktarmak için Microsoft Entra nesne kimliği (OID) gerekir. OID, 1) Office portalı, 2) Microsoft Entra yönetim merkezi, 3) Microsoft Entra Connect aracılığıyla alınabilir; veya 4) Graf API'si. Aşağıdaki örnek Graph API'sini kullanır.

Graph'ın kullanıcıları aramak için kullanılabilmesi için bir Microsoft Entra yöneticisinin büyük onay vermesi gerekir. Microsoft Graph Güvenlik API'sine genel bakış belgesini izleyerek daha fazla bilgi edinin. OID, kullanıcıları aramak için liste kullanıcıları API'sini kullanarak alınabilir. Aşağıdaki örnekte görünen ada göre bir arama gösterilmektedir, ancak diğer özellikleri de arayabilirsiniz:

Microsoft Graph v1.0 kullanan kullanıcıları listeleme:

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"
        }

İsteğe bağlı olarak, bir kullanıcının İletişim Durumu, get iletişim durumu API'sini ve kullanıcı ObjectId'sini kullanarak alınabilir. Microsoft Graph v1.0 belgelerinde daha fazla bilgi edinin.

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. Adım: Arama Otomasyonu API'leri tarafından denetlenen mevcut bir İletişim Hizmetleri çağrısına Teams kullanıcısı ekleme

İletişim Hizmetleri çağrısını denetlemek için önkoşul adımını tamamlamanız ve bir web hizmeti uygulamanız olması gerekir. callConnection nesnesini kullanarak çağrıya bir katılımcı ekleyin.

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 masaüstü istemcisinde, Jack'in çağrısı microsoft Teams kullanıcısına gelen arama bildirimi aracılığıyla gönderilir.

Microsoft Teams masaüstü istemcisinin ekran görüntüsü, Jack'in çağrısı microsoft teams kullanıcısına gelen arama bildirim bildirimi aracılığıyla gönderilir.

Microsoft Teams kullanıcısı aramayı kabul ettikten sonra, Microsoft Teams kullanıcısının arama içi deneyimi tüm katılımcıları Microsoft Teams listesinde görüntüler. Çağrı Otomasyonu API'sini kullanarak çağrıyı yöneten uygulamanız, arama ekranında Teams kullanıcısına gizli kalır. Microsoft Teams kullanıcısının aramayı kabul edip Microsoft Teams kullanıcısı için arama içi deneyimi girmesinin ekran görüntüsü.

4. Adım: Teams kullanıcısını Arama Otomasyonu API'leri tarafından denetlenen mevcut bir İletişim Hizmetleri çağrısından kaldırma

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>"))

İsteğe bağlı özellik: Arama Otomasyonu API'leri tarafından denetlenen mevcut bir İletişim Hizmetleri çağrısından Teams kullanıcısına aktarma

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>"))

Kaynakları temizleme

İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Kaynakları temizleme hakkında daha fazla bilgi edinin.

Sonraki adımlar