Udostępnij za pośrednictwem


Dodawanie użytkownika usługi Microsoft Teams do istniejącego wywołania przy użyciu usługi Call Automation

W tym przewodniku Szybki start używamy interfejsów API automatyzacji wywołań usług Azure Communication Services, aby dodawać, usuwać i przenosić wywołania do użytkownika usługi Teams.

Wymagania wstępne

  • Aby uzyskać szczegółowe informacje, zobacz Tworzenie konta platformy Azure z aktywną subskrypcją.
  • Licencja Telefon w Microsoft Teams i dzierżawa usługi Teams z uprawnieniami administracyjnymi. Licencja na telefon usługi Teams jest wymagana w celu korzystania z tej funkcji. Dowiedz się więcej o licencjach usługi Teams tutaj. Użytkownik usługi Microsoft Teams musi być voice również włączony. Zobacz Konfigurowanie systemu telefonicznego. Uprawnienia administracyjne są wymagane do autoryzowania zasobów usług komunikacyjnych w celu wywołania użytkowników usługi Teams, co wyjaśniono w dalszej części kroku 1.
  • Wdrożony zasób usługi komunikacyjnej i prawidłowy parametry połączenia znaleziony, wybierając pozycję Klucze w menu po lewej stronie w witrynie Azure Portal.
  • Uzyskaj numer telefonu PSTN z zasobu usługi komunikacji. Zanotuj numer telefonu uzyskany do użycia w tym przewodniku Szybki start.
  • Subskrypcja usługi Azure Event Grid do odbierania IncomingCall zdarzenia.
  • Najnowsza biblioteka interfejsu API usługi Azure Communication Service Call Automation dla systemu operacyjnego.
  • Usługa internetowa, która implementuje bibliotekę interfejsu API usługi Call Automation, postępuj zgodnie z tym samouczkiem.

Krok 1. Autoryzacja zasobu usług Azure Communication Services w celu umożliwienia wywoływania użytkowników usługi Microsoft Teams

Aby umożliwić wywoływanie za pośrednictwem interfejsów API automatyzacji wywołań, administrator usługi Microsoft Teams lub administrator globalny musi jawnie włączyć dostęp zasobów usług komunikacyjnych do dzierżawy, aby umożliwić wywoływanie.

Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) Ustawienie poziomu dzierżawy, które włącza/wyłącza federację między dzierżawą i określonymi zasobami usług komunikacyjnych.

Set-CsExternalAccessPolicy (SkypeForBusiness) Zasady użytkownika, które umożliwiają administratorowi dalszą kontrolę nad tym, którzy użytkownicy w organizacji mogą uczestniczyć w federacyjnej komunikacji z użytkownikami usług Communication Services.

Krok 2. Uzyskiwanie identyfikatora obiektu Entra firmy Microsoft dla użytkowników usługi Teams przy użyciu interfejsu API programu Graph i opcjonalnie sprawdzanie ich obecności

Do dodania lub przeniesienia do nich z wywołania usług komunikacyjnych jest wymagany identyfikator obiektu Entra (OID) użytkownika usługi Teams. Identyfikator OID można pobrać za pośrednictwem 1) Portalu pakietu Office, 2) Centrum administracyjne firmy Microsoft Entra, 3) Microsoft Entra Connect; lub 4) Interfejs API programu Graph. W poniższym przykładzie użyto interfejsu API programu Graph.

Administrator firmy Microsoft Entra musi wyrazić wielką zgodę, zanim program Graph będzie mógł wyszukiwać użytkowników, dowiedz się więcej, wykonując czynności opisane w dokumencie Microsoft Graph interfejs API Zabezpieczenia overview (Omówienie programu Microsoft Graph). Identyfikator OID można pobrać przy użyciu interfejsu API użytkowników listy do wyszukiwania użytkowników. Poniższy przykład przedstawia wyszukiwanie według nazwy wyświetlanej, ale można również wyszukać inne właściwości:

Wyświetlanie listy użytkowników przy użyciu programu Microsoft Graph w wersji 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"
        }

Opcjonalnie obecność użytkownika można pobrać przy użyciu interfejsu API pobierania obecności i identyfikatora ObjectId użytkownika. Dowiedz się więcej na temat dokumentacji programu Microsoft Graph w wersji 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"

Krok 3. Dodawanie użytkownika usługi Teams do istniejącego wywołania usług Komunikacyjnych kontrolowanego przez interfejsy API automatyzacji wywołań

Musisz wykonać krok wymagań wstępnych i mieć aplikację usługi internetowej, aby kontrolować wywołanie usług komunikacyjnych. Za pomocą obiektu callConnection dodaj uczestnika do wywołania.

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

Na kliencie stacjonarnym aplikacji Microsoft Teams wywołanie Jacka jest wysyłane do użytkownika usługi Microsoft Teams za pośrednictwem przychodzącego powiadomienia wyskakujących wywołań.

Zrzut ekranu przedstawiający klienta klasycznego usługi Microsoft Teams, wywołanie Jacka jest wysyłane do użytkownika usługi Microsoft Teams za pośrednictwem przychodzącego powiadomienia wyskakujących wywołań.

Gdy użytkownik aplikacji Microsoft Teams zaakceptuje połączenie, środowisko w wywołaniu użytkownika usługi Microsoft Teams wyświetli wszystkich uczestników w składzie usługi Microsoft Teams. Aplikacja zarządzająca wywołaniem przy użyciu interfejsu API usługi Call Automation pozostaje ukryta dla użytkownika aplikacji Teams na ekranie wywołania. Zrzut ekranu przedstawiający użytkownika aplikacji Microsoft Teams akceptującego połączenie i wprowadzającego środowisko wywołania dla użytkownika aplikacji Microsoft Teams.

Krok 4. Usuwanie użytkownika usługi Teams z istniejącego wywołania usług komunikacyjnych kontrolowanego przez interfejsy API automatyzacji wywołań

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

Opcjonalna funkcja: transfer do użytkownika usługi Teams z istniejącego wywołania usług komunikacyjnych kontrolowanego przez interfejsy API usługi Call Automation

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

Czyszczenie zasobów

Jeśli chcesz wyczyścić i usunąć subskrypcję usług Komunikacyjnych, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Dowiedz się więcej o czyszczeniu zasobów.

Następne kroki