Freigeben über


Hinzufügen eines Microsoft Teams-Benutzers zu einem vorhandenen Anruf mithilfe der Anrufautomatisierung

In dieser Schnellstartanleitung verwenden wir die Azure Communication Services-Anrufautomatisierungs-APIs zum Hinzufügen, Entfernen und Übertragen von Anrufen an einen Teams-Benutzer.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement.
  • Eine Microsoft Teams-Telefonlizenz und ein Teams-Mandant mit Administratorrechten. Teams-Telefonlizenz ist ein Muss, um dieses Feature zu verwenden, erfahren Sie hier mehr über Teams-Lizenzen. Der Microsoft Teams-Benutzer muss auch für voice aktiviert sein, siehe Einrichten Ihres Telefonsystems. Administratorrechte sind erforderlich, um die Communication Services-Ressource zum Aufrufen von Microsoft Teams-Benutzern zu autorisieren, die weiter unten in Schritt 1 erläutert werden.
  • Eine bereitgestellte Communication Services-Ressource und eine gültige Verbindungszeichenfolge. Diese finden Sie, indem Sie im Menü auf der linken Seite des Azure-Portals die Option „Schlüssel“ auswählen.
  • Abrufen einer PSTN-Telefonnummer über die Communication Services-Ressource Notieren Sie sich die abgerufene Telefonnummer für die Verwendung in dieser Schnellstartanleitung.
  • Ein Azure Event Grid-Abonnement zum Empfangen des IncomingCall Ereignisses.
  • Die neueste API-Bibliothek für die Anrufautomatisierung des Azure Communication Service für Ihr Betriebssystem.
  • Ein Webdienst, der die API-Bibliothek für die Anrufautomatisierung implementiert, folgen Sie diesem Tutorial.

Schritt 1: Autorisierung für Ihre Azure Communication Services-Ressource zum Aktivieren des Anrufs an Microsoft Teams-Benutzer

Um das Aufrufen über Anrufautomatisierungs-APIs zu aktivieren, muss ein Microsoft Teams-Administrator oder globaler Administrator explizit den Zugriff der Communication Services-Ressource auf seinen Mandanten aktivieren, um Anrufe zuzulassen.

Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) Mandantenebene, die den Partnerverbund zwischen ihrem Mandanten und bestimmten Communication Services-Ressourcen aktiviert/deaktiviert.

Set-CsExternalAccessPolicy (SkypeForBusiness) Benutzerrichtlinie, mit der der Administrator weiter steuern kann, welche Benutzer in ihrer Organisation an der Verbundkommunikation mit Communication Services-Benutzern teilnehmen können.

Beachten Sie, dass der Teams-Benutzer über eine Telefonlizenz verfügen muss, um dieses Feature verwenden zu können. Um die Lizenz zuzuweisen, verwenden Sie das Set-CsPhoneNumberAssignment-Cmdlet, und stellen Sie den Parameter EnterpriseVoiceEnabled auf „$true“ ein. Weitere Informationen finden Sie unter Einrichten von Teams Telefon in Ihrer Organisation.

Schritt 2: Verwenden der Graph-API zum Abrufen der Microsoft Entra-Objekt-ID für Microsoft Teams-Benutzer und optionale Überprüfung der Anwesenheit

Die Microsoft Entra-Objekt-ID (OID) eines Teams-Benutzers ist erforderlich, um sie aus einem Communication Services-Aufruf hinzuzufügen oder zu ihnen zu übertragen. Das OID kann über 1) Office-Portal, 2) Microsoft Entra Admin Center, 3) Microsoft Entra Connect; oder 4) Graph-API abgerufen werden. Im folgenden Beispiel wird die Graph-API verwendet.

Die Zustimmung muss von einem Microsoft Entra-Administrator erteilt werden, bevor Graph für die Suche nach Benutzern verwendet werden kann. Weitere Informationen finden Sie im Übersichtsdokument der Microsoft Graph-Sicherheits-API. Das OID kann mithilfe der Listenbenutzer-API abgerufen werden, um nach Benutzern zu suchen. Im Folgenden wird eine Suche anhand des Anzeigenamens angezeigt, andere Eigenschaften können jedoch auch durchsucht werden:

Auflisten von Benutzern mit Microsoft Graph v1.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"
        }

Optional können Anwesenheitsinformationen für einen Benutzer mithilfe der Get Presence-API und der User ObjectId abgerufen werden. Weitere Informationen finden Sie in der Microsoft Graph v1.0-Dokumentation.

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"

Schritt 3: Hinzufügen eines Teams-Benutzers zu einem vorhandenen Communication Services-Aufruf, der von Anrufautomatisierungs-APIs gesteuert wird

Sie müssen den erforderlichen Schritt ausführen und über eine Webdienst-App verfügen, um einen Communication Services-Aufruf zu steuern. Fügen Sie mithilfe des callConnection-Objekts einen Teilnehmer zum Anruf hinzu.

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

Auf dem Microsoft Teams-Desktopclient wird Jacks Anruf über eine eingehende Popupbenachrichtigung an den Microsoft Teams-Benutzer gesendet.

Screenshot des Microsoft Teams-Desktopclients, Jacks Anruf wird über eine eingehende Anruf-Popupbenachrichtigung an den Microsoft Teams-Benutzer gesendet.

Nachdem der Microsoft Teams-Benutzer den Anruf angenommen hat, wird die Anruffunktion für den Microsoft Teams-Benutzer alle Teilnehmer in der Microsoft Teams-Liste angezeigt. Beachten Sie, dass Ihre Anwendung, die den Anruf mithilfe der Anrufautomatisierungs-API verwaltet, auf dem Anrufbildschirm für Teams-Benutzer/-Benutzerinnen ausgeblendet bleibt, außer bei einem 1:1-Anruf mit einem oder einer Teams-Benutzer/-Benutzerin.
Screenshot des Microsoft Teams-Benutzers, der den Anruf akzeptiert und die Anruffunktion für den Microsoft Teams-Benutzer eingibt.

Schritt 4: Entfernen eines Teams-Benutzers aus einem vorhandenen Communication Services-Aufruf, der von Anrufautomatisierungs-APIs gesteuert wird

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

Optionale Funktion: Übertragung von einem vorhandenen Communication Services-Aufruf, der von Anrufautomatisierungs-APIs gesteuert wird, an einen Teams-Benutzer

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

Bereinigen von Ressourcen

Wenn Sie ein Communication Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind. Weitere Informationen zum Bereinigen von Ressourcen finden Sie hier.

Nächste Schritte