Azure Communication Services-Unterstützung für Teams-Identitäten: Anwendungsfälle

Microsoft Teams stellt Identitäten bereit, die von der Microsoft Entra-ID und den Anruffunktionen verwaltet werden, die von Teams Admin Center und Richtlinien gesteuert werden. Die Benutzer verfügen möglicherweise über zugewiesene Lizenzen, um Telefonanrufe und erweiterte Anruffunktionen des Microsoft Teams-Telefons zu ermöglichen. Azure Communication Services Unterstützung für Teams-Identitäten ermöglicht das Verwalten von Teams-VoIP-Anrufen, Teams-Telefonanrufen und der Teilnahme an Teams-Besprechungen. Entwickler können die Azure Communication Services um die Graph-API erweitern, um Kontextdaten aus dem Microsoft 365-Ökosystem bereitzustellen. Diese Seite gibt Anregungen zum Verwenden vorhandener Microsoft-Technologien, um eine End-to-End-Benutzererfahrung für Anrufszenarien mit Teams-Benutzern und Anruf-SDKS von Azure Communication Services bereitzustellen.

Anwendungsfall 1: Ausgehender Teams-PSTN-Anruf

Dieses Szenario zeigt einen Anwendungsfall mit mehreren Mandanten, bei dem das Unternehmen Contoso SaaS für das Unternehmen Fabrikam bereitstellt. Mit SaaS können Fabrikam-Benutzer Teams-Telefonanrufe über eine benutzerdefinierte Website tätigen, die die Identität des Teams-Benutzers und die Konfiguration der PSTN-Konnektivität übernimmt, die diesem Teams Benutzer zugewiesen wurde.

Diagram is showing user experience of Alice making Teams phone call to customer Megan.

Das folgende Sequenzdiagramm zeigt die Schritte zur Einleitung eines Teams-Telefonanrufs im Detail:

Sequence diagram is describing detailed set of steps that happens to initiate a Teams phone call using Azure Communication Services and Teams.

Schritte

  1. Authentifizieren von Alice von Fabrikam in der Clientanwendung von Contoso: Alice verwendet einen Browser, um die Webseite von Fabrikam zu öffnen, und authentifiziert sich. Hier finden Sie weitere Informationen zur Authentifizierung mit einer Teams-Identität. Wenn die Authentifizierung erfolgreich ist, wird Alice zur Startseite weitergeleitet.
  2. Laden von Kunden und deren Festnetz-Telefonnummern: Contoso bietet benutzerdefinierte Logik zum Abrufen der Kundenliste und der zugehörigen Telefonnummern. Diese Liste wird für Alice auf der Startseite gerendert.
  3. Einleiten eines Anrufs an Megan: Alice wählt eine Schaltfläche aus, um einen Festnetzanruf an Megan in der Clientanwendung von Contoso einzuleiten. Die Clientanwendung verwendet das Anruf-SDK von Azure Communication Services, um die Anruffunktion bereitzustellen. Zunächst wird eine Instanz von callAgent erstellt, die das Azure Communication Services-Zugriffstoken enthält, das im ersten Schritt erworben wurde.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Anschließend müssen Sie einen Anruf an die Telefonnummer von Megan einleiten.

const pstnCallee = { phoneNumber: '<MEGAN_PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = callAgent.startCall([pstnCallee], { threadId: '00000000-0000-0000-0000-000000000000' });
  1. Verbinden des Festnetzanrufs mit Megan: Der Anruf wird über die Teams-Telefonkonnektivität weitergeleitet, die Alice zugewiesen ist, das Telefonfestnetz wird erreicht und das Telefon, das der angegebenen Telefonnummer zugeordnet ist, läutet. Megan sieht einen eingehenden Anruf von der Telefonnummer, die Alices Teams-Benutzer zugeordnet ist.
  2. Megan nimmt den Anruf an: Megan nimmt den Anruf an, und die Verbindung zwischen Alice und Megan wird hergestellt.

Anwendungsfall 2: Empfangen eines eingehenden Teams-Telefonanrufs

Dieses Szenario zeigt einen Anwendungsfall mit mehreren Mandanten, bei dem das Unternehmen Contoso SaaS für das Unternehmen Fabrikam bereitstellt. Mit SaaS können Fabrikam-Benutzer Teams-Telefonanrufe über eine benutzerdefinierte Website annehmen, die die Identität des Teams-Benutzers und die Konfiguration der Telefonfestnetzkonnektivität übernimmt, die dem betreffenden Teams-Benutzer zugewiesen wurde.

Diagram is showing user experience of Alice receiving Teams phone call from customer Megan.

Das folgende Sequenzdiagramm zeigt die Schritte zum Annehmen eingehender Teams-Telefonanrufe im Detail:

Sequence diagram is describing detailed set of steps that happens to receive a Teams phone call using Azure Communication Services and Teams.

Schritte

  1. Authentifizieren von Alice von Fabrikam in der Clientanwendung von Contoso: Alice verwendet einen Browser, um die Webseite von Fabrikam zu öffnen, und authentifiziert sich. Hier finden Sie weitere Informationen zur Authentifizierung mit einer Teams-Identität. Wenn die Authentifizierung erfolgreich ist, wird Alice zur Startseite weitergeleitet.
  2. Abonnieren eingehender Anrufe: Die Clientanwendung verwendet das Anruf-SDK von Azure Communication Services, um die Anruffunktion bereitzustellen. Zunächst wird eine Instanz von callAgent erstellt, die das Azure Communication Services-Zugriffstoken enthält, das im ersten Schritt erworben wurde.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Anschließend abonnieren Sie das Ereignis für eingehende Anrufe.

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

Die Methode showIncomingCall ist eine benutzerdefinierte Methode von Contoso, die eine Benutzeroberfläche rendert, um eingehende Anrufe und zwei Schaltflächen darzustellen, mit denen der Anruf angenommen oder abgewiesen werden kann. Wenn Sie die Annehmen-Schaltfläche auswählen, kommt der folgende Code zur Anwendung:

// Accept the call
var call = await incomingCall.accept();

Wenn Sie die Ablehnen-Schaltfläche auswählen, kommt der folgende Code zur Anwendung:

// Reject the call
incomingCall.reject();
  1. Megan leitet einen Anruf an die Festnetz-Telefonnummer ein, die Teams-Benutzerin Alice zugewiesen ist: Megan verwendet ihr Telefon für den Anruf an Alice. Das Netzwerk des Netzbetreibers stellt eine Verbindung mit der Teams-Telefonkonnektivität her, die Alice zugewiesen ist, und läutet an allen für Alice registrierten Teams-Endpunkten. Dazu gehören: Teams Desktop, mobil, Webclients und Anwendungen, die auf dem Anruf-SDK von Azure Communication Services basieren.
  2. Die Clientanwendung von Contoso zeigt den eingehenden Anruf von Megan an: Die Clientanwendung empfängt eine Benachrichtigung über einen eingehenden Anruf. Die showIncomingCall-Methode verwendet die benutzerdefinierte Logik von Contoso, um die Telefonnummer in den Namen des Kunden zu übersetzen (z. B. eine Datenbank, die Schlüssel-Wert-Paare speichert, die aus einer Telefonnummer und einem Kundennamen bestehen). Wenn die Informationen abgerufen wurden, wird Alice die Benachrichtigung in der Clientanwendung von Contoso angezeigt.
  3. Alice nimmt den Anruf an: Alice wählt eine Schaltfläche aus, um den Anruf anzunehmen, und die Verbindung zwischen Alice und Megan wird hergestellt.

Anwendungsfall 3: Ausgehender Teams-VoIP-Anruf

Dieses Szenario zeigt einen Anwendungsfall mit mehreren Mandanten, bei dem das Unternehmen Contoso SaaS für das Unternehmen Fabrikam bereitstellt. Mit SaaS können Fabrikam-Benutzer Teams-VoIP-Anrufe über eine benutzerdefinierte Website tätigen, die die Identität des Teams-Benutzers akzeptiert.

Diagram is showing user experience of Alice making Teams VoIP call to colleague Megan.

Das folgende Sequenzdiagramm zeigt die Schritte zur Einleitung eines Teams-VoIP-Anrufs im Detail:

Sequence diagram is describing detailed set of steps that happens to initiate a Teams VoIP call using Azure Communication Services and Teams.

Schritte

  1. Authentifizieren von Alice von Fabrikam in der Clientanwendung von Contoso: Alice verwendet einen Browser, um die Webseite von Fabrikam zu öffnen, und authentifiziert sich. Hier finden Sie weitere Informationen zur Authentifizierung mit einer Teams-Identität. Wenn die Authentifizierung erfolgreich ist, wird Alice zur Startseite weitergeleitet.
  2. Laden von Benutzern aus der Fabrikam-Organisation und ihrer Bezeichner: Die Contoso-Clientanwendung verwendet die Graph-API, um eine Liste der Benutzer aus dem Fabrikam-Mandanten abzurufen. Alice oder ihr Administrator muss der Graph-API zustimmen, um diese Aktion auszuführen. Weitere Informationen zum Befehl „Graph-API“ finden Sie in der Dokumentation.
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"

Die Clientanwendung von Contoso zeigt dann die Liste der Benutzer und die Möglichkeit an, einen Anruf an einen bestimmten Benutzer einzuleiten.

  1. Einleiten eines Anrufs an Megan: Alice wählt eine Schaltfläche aus, um einen Teams-VoIP-Anruf an Megan in der Clientanwendung von Contoso einzuleiten. Die Clientanwendung verwendet das Anruf-SDK von Azure Communication Services, um die Anruffunktion bereitzustellen. Anrufe in Teams-Clients sind Teams-Chat zugeordnet. Zunächst fordert die Anwendung die Erstellung eines dedizierten Chats für den VoIP-Anruf an.
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"

Anschließend erstellt die Clientanwendung eine Instanz von callAgent, die das Azure Communication Services-Zugriffstoken enthält, das im ersten Schritt erworben wurde.

const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Dann beginnen Sie einen Anruf an die Teams-ID von Megan.

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' });
  1. Verbinden des VoIP-Anrufs an Megan: Der Anruf wird über die Teams-Clients weitergeleitet und läutet bei den Megan zugeordneten Teams-Clients. Megan sieht einen eingehenden Anruf von Alice mit dem in der Microsoft Entra-ID definierten Namen.
  2. Megan nimmt den Anruf an: Megan nimmt den Anruf an, und die Verbindung zwischen Alice und Megan wird hergestellt.

Anwendungsfall 4: Empfangen eines eingehenden Teams-VoIP-Anrufs

Dieses Szenario zeigt einen Anwendungsfall mit mehreren Mandanten, bei dem das Unternehmen Contoso SaaS für das Unternehmen Fabrikam bereitstellt. SaaS ermöglicht es Fabrikam-Benutzern, einen Teams-VoIP-Aufruf über eine benutzerdefinierte Website zu empfangen, die die Identität des Teams-Benutzers übernimmt und Routingrichtlinien anwendet, die den Teams-Benutzern zugeordnet wurden.

Diagram is showing user experience of Alice receiving Teams VoIP call from customer Megan.

Das folgende Sequenzdiagramm zeigt die Schritte zum Annehmen eingehender Teams-VoIP-Anrufe im Detail:

Sequence diagram is describing detailed set of steps that happens to receive a Teams VoIP call using Azure Communication Services. Graph API, and Teams.

Schritte

  1. Authentifizieren von Alice von Fabrikam in der Clientanwendung von Contoso: Alice verwendet einen Browser, um die Webseite von Fabrikam zu öffnen, und authentifiziert sich. Hier finden Sie weitere Informationen zur Authentifizierung mit einer Teams-Identität. Wenn die Authentifizierung erfolgreich ist, wird Alice zur Startseite weitergeleitet.
  2. Abonnieren eingehender Anrufe: Die Clientanwendung verwendet das Anruf-SDK von Azure Communication Services, um die Anruffunktion bereitzustellen. Zunächst wird eine Instanz von callAgent erstellt, die das Azure Communication Services-Zugriffstoken enthält, das im ersten Schritt erworben wurde.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Anschließend abonniert die Anwendung das Ereignis für eingehende Anrufe.

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

Die Methode showIncomingCall ist eine benutzerdefinierte Methode von Contoso, die eine Benutzeroberfläche rendert, um eingehende Anrufe und zwei Schaltflächen darzustellen, mit denen der Anruf angenommen oder abgewiesen werden kann. Wenn Sie die Annehmen-Schaltfläche auswählen, kommt der folgende Code zur Anwendung:

// Accept the call
var call = await incomingCall.accept();

Wenn Sie die Ablehnen-Schaltfläche auswählen, kommt der folgende Code zur Anwendung:

// Reject the call
incomingCall.reject();
  1. Megan beginnt einen VoIP-Anruf an Teams-Benutzerin Alice: Megan verwendet ihren Teams-Desktopclient, um Alice anzurufen. Die Teams-Infrastruktur läutet an allen Endpunkten, die Alice zugeordnet sind. Dazu gehören: Teams Desktop, mobil, Webclients und Anwendungen, die auf dem Anruf-SDK von Azure Communication Services basieren.
  2. Die Clientanwendung von Contoso zeigt den eingehenden Anruf von Megan an: Die Clientanwendung empfängt eine Benachrichtigung über einen eingehenden Anruf. Die showIncomingCall-Methode verwendet Graph-API, um die Teams-Benutzer-ID in den Anzeigenamen zu übersetzen.
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"

Wenn die Informationen abgerufen wurden, wird Alice die Benachrichtigung in der Clientanwendung von Contoso angezeigt.

  1. Alice nimmt den Anruf an: Alice wählt eine Schaltfläche aus, um den Anruf anzunehmen, und die Verbindung zwischen Alice und Megan wird hergestellt.

Anwendungsfall 5: Teilnehmen an einer Teams-Besprechung

Dieses Szenario zeigt einen Anwendungsfall mit mehreren Mandanten, bei dem das Unternehmen Contoso SaaS für das Unternehmen Fabrikam bereitstellt. Mit SaaS können Fabrikam-Benutzer an Teams-Besprechungen über eine benutzerdefinierte Website teilnehmen, die die Identität des Teams-Benutzers akzeptiert.

Diagram is showing user experience of Alice joining Teams Meeting.

Das folgende Sequenzdiagramm zeigt die Schritte für die Teilnahme an einer Teams-Besprechung im Detail:

Sequence diagram is describing detailed set of steps that happens to join a Teams meeting using Azure Communication Services, Graph API, and Teams.

Schritte

  1. Authentifizieren von Alice von Fabrikam in der Clientanwendung von Contoso: Alice verwendet einen Browser, um die Webseite von Fabrikam zu öffnen, und authentifiziert sich. Hier finden Sie weitere Informationen zur Authentifizierung mit einer Teams-Identität. Wenn die Authentifizierung erfolgreich ist, wird Alice zur Startseite weitergeleitet.
  2. Laden von Teams-Besprechungen und ihrer Bezeichner: Die Contoso-Clientanwendung verwendet die Graph-API, um eine Liste der Teams-Besprechungen für die Benutzer von Fabrikam abzurufen. Alice oder ihr Administrator muss der Graph-API zustimmen, um diese Aktion auszuführen. Weitere Informationen zum Befehl „Graph-API“ finden Sie in der Dokumentation.
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;

Die Clientanwendung von Contoso zeigt dann die Liste der Teams-Besprechungen und die Möglichkeit an, diesen beizutreten.

  1. Teilnehmen an der Teams-Besprechung „Project Tailspin“: Alice wählt eine Schaltfläche aus, um in der Clientanwendung von Contoso an der Teams-Besprechung „Project Tailspin“ teilzunehmen. Die Clientanwendung verwendet das Anruf-SDK von Azure Communication Services, um die Anruffunktion bereitzustellen. Clientanwendungen erstellen eine Instanz von callAgent, die das Azure Communication Services-Zugriffstoken enthält, das im ersten Schritt erworben wurde.
const callClient = new CallClient(); 
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)

Anschließend tritt die Anwendung über received joinUrl einer Besprechung bei.

var meetingLocator = new TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...");
callAgent.startCallJoinAsync(meetingLocator , new JoinCallOptions());

Alice nimmt dann an der Teams-Besprechung teil.

  1. Andere Teilnehmer, die der Teams-Besprechung beitreten: Die bereitgestellte Erfahrung ist eine Teams-Standardbesprechung. Auf der Grundlage der Konfiguration und der Einladungen können an der Teams-Besprechung Teams-Benutzer, anonyme Teams-Benutzer mit Teams-Webclient, Teams-Desktopclient, mobilem Teams-Client, Azure Communication Services-Benutzer über Anwendungen, die auf dem Anruf-SDK von Communication Services basieren, oder Benutzer teilnehmen, die Telefone verwenden.

Nächste Schritte

Die folgenden Artikel sind möglicherweise für Sie von Interesse: