Stöd för Azure Communication Services för Teams-identiteter – Användningsfall
Microsoft Teams tillhandahåller identiteter som hanteras av Microsoft Entra-ID och samtalsupplevelser som styrs av Teams administrationscenter och principer. Användare kan ha tilldelat licenser för att aktivera telefonsamtal och avancerade samtalsfunktioner i Microsoft Teams-telefon. Stöd för Azure Communication Services för Teams-identiteter gör det möjligt att hantera VoIP-samtal (Teams voice over IP), Teams-telefonsamtal och delta i Teams-möten. Utvecklare kan utöka Azure Communication Services med Graph API för att tillhandahålla kontextuella data från Microsoft 365-ekosystemet. Den här sidan ger inspiration till hur du använder befintliga Microsoft-tekniker för att tillhandahålla en heltäckande upplevelse för samtalsscenarier med Teams-användare och Azure Communication Services som anropar SDK:er.
Användningsfall 1: Gör utgående Teams PSTN-anrop
Det här scenariot visar ett användningsfall för flera innehavare, där företaget Contoso tillhandahåller SaaS till företaget Fabrikam. Med SaaS kan Fabrikams användare ringa Teams-telefonsamtal via en anpassad webbplats som tar identiteten för Teams-användaren och konfigurationen av PSTN-anslutningen som tilldelats den Teams-användaren.
Följande sekvensdiagram visar detaljerade steg för initiering av ett Teams-telefonsamtal:
Steg
- Autentisera Alice från Fabrikam i Contosos klientprogram: Alice använder en webbläsare för att öppna Fabrikams webbsida och autentisera. Mer information om autentisering med Teams-identitet finns. Om autentiseringen lyckas omdirigeras Alice till den första sidan.
- Läs in kunder och deras PSTN-nummer: Contoso tillhandahåller anpassad logik för att hämta listan över kunder och deras associerade telefonnummer. Den här listan återges på den första sidan till Alice.
- Starta ett anrop till Megan: Alice väljer en knapp för att initiera ett PSTN-anrop till Megan i Contosos klientprogram. Klientprogrammet använder Azure Communication Services anropande SDK för att tillhandahålla anropsfunktionen. Först skapar den en instans av callAgent som innehåller åtkomsttoken för Azure Communication Services som hämtades under det första steget.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Då måste du starta ett samtal till Megans telefonnummer.
const pstnCallee = { phoneNumber: '<MEGAN_PHONE_NUMBER_E164_FORMAT>' }
const oneToOneCall = callAgent.startCall([pstnCallee], { threadId: '00000000-0000-0000-0000-000000000000' });
- Ansluta PSTN-samtal till Megan: Samtalet dirigeras via Teams-telefonanslutningen som tilldelats Alice, når PSTN-nätverket och ringer telefonen som är associerad med det angivna telefonnumret. Megan ser ett inkommande samtal från det telefonnummer som är kopplat till Alice Teams-användare.
- Megans accepterar samtalet: Megan accepterar samtalet och anslutningen mellan Alice och Megan upprättas.
Användningsfall 2: Ta emot inkommande Teams-telefonsamtal
Det här scenariot visar ett användningsfall för flera innehavare, där företaget Contoso tillhandahåller SaaS till företaget Fabrikam. Med SaaS kan Fabrikams användare ta emot ett Teams-telefonsamtal via en anpassad webbplats som tar identiteten för Teams-användaren och konfigurationen av PSTN-anslutningen som tilldelats den Teams-användaren.
Följande sekvensdiagram visar detaljerade steg för att acceptera inkommande Teams-telefonsamtal:
Steg
- Autentisera Alice från Fabrikam i Contosos klientprogram: Alice använder en webbläsare för att öppna Fabrikams webbsida och autentisera. Mer information om autentisering med Teams-identitet finns. Om autentiseringen lyckas omdirigeras Alice till den första sidan.
- Prenumerera på att ta emot samtal: Klientprogrammet använder Azure Communication Services anropande SDK för att tillhandahålla samtalsfunktionen. Först skapar den en instans av callAgent som innehåller åtkomsttoken för Azure Communication Services som hämtades under det första steget.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Sedan prenumererar du på den inkommande samtalshändelsen.
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);
Metoden showIncomingCall är en anpassad Contoso-metod som renderar ett användargränssnitt för att indikera inkommande samtal och två knappar för att acceptera och avvisa anropet. Om du väljer acceptera-knappen används följande kod:
// Accept the call
var call = await incomingCall.accept();
Om du väljer knappen Neka används följande kod:
// Reject the call
incomingCall.reject();
- Megan start är ett samtal till PSTN-nummer som tilldelats Teams-användaren Alice: Megan använder sin telefon för att ringa Alice. Operatörsnätverket ansluter till Teams-telefonanslutning som tilldelats Alice och den kommer att ringa alla Teams-slutpunkter som är registrerade för Alice. Den innehåller: Teams desktop, mobil, webbklienter och program baserade på Azure Communication Services som anropar SDK.
- Contosos klientprogram visar Megans inkommande samtal: Klientprogrammet tar emot inkommande samtalsavisering. showIncomingCall-metoden skulle använda anpassad Contosos logik för att översätta telefonnumret till kundens namn (till exempel en databas som lagrar nyckel/värde-par som består av ett telefonnummer och ett kundnamn). När informationen hämtas visas meddelandet för Alice i Contosos klientprogram.
- Alice accepterar samtalet: Alice väljer en knapp för att acceptera samtalet och anslutningen mellan Alice och Megan upprättas.
Användningsfall 3: Gör utgående Teams VoIP-anrop
Det här scenariot visar ett användningsfall för flera innehavare, där företaget Contoso tillhandahåller SaaS till företaget Fabrikam. Med SaaS kan Fabrikams användare göra Teams VoIP-anrop via en anpassad webbplats som tar Teams-användarens identitet.
Följande sekvensdiagram visar detaljerade steg för initiering av ett Teams VoIP-anrop:
Steg
- Autentisera Alice från Fabrikam i Contosos klientprogram: Alice använder en webbläsare för att öppna Fabrikams webbsida och autentisera. Mer information om autentisering med Teams-identitet finns. Om autentiseringen lyckas omdirigeras Alice till den första sidan.
- Läs in användare från Fabrikams organisation och deras identifierare: Contoso-klientprogrammet använder Graph API för att hämta en lista över användare från Fabrikams klientorganisation. Alice eller hennes administratör måste ge medgivande till Graph API för att utföra den här åtgärden. Du kan läsa mer om Graph API-kommandot i dokumentationen.
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"
Contosos klientprogram visar sedan listan över användare och möjligheten att initiera ett anrop till en viss användare.
- Starta ett anrop till Megan: Alice väljer en knapp för att initiera ett Teams VoIP-anrop till Megan i Contosos klientprogram. Klientprogrammet använder Azure Communication Services anropande SDK för att tillhandahålla anropsfunktionen. Samtal i Teams-klienter är associerade med Teams-chatt. Först begär programmet att en dedikerad chatt skapas för VoIP-anropet.
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"
Sedan skapar klientprogrammet en instans av callAgent som innehåller åtkomsttoken för Azure Communication Services som hämtades under det första steget.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Sedan startar du ett samtal till Megans Teams-ID.
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' });
- Ansluta VoIP-anrop till Megan: Samtalet dirigeras via Teams och ringer Teams-klienter som är associerade med Megan. Megan ser ett inkommande samtal från Alice med namnet som definierats i Microsoft Entra-ID:t.
- Megans accepterar samtalet: Megan accepterar samtalet och anslutningen mellan Alice och Megan upprättas.
Användningsfall 4: Ta emot inkommande Teams VoIP-samtal
Det här scenariot visar ett användningsfall för flera innehavare, där företaget Contoso tillhandahåller SaaS till företaget Fabrikam. Med SaaS kan Fabrikams användare ta emot ett Teams VoIP-anrop via en anpassad webbplats som tar Teams-användarens identitet och tillämpar routningsprinciper som tillämpas på Teams-användaren.
Följande sekvensdiagram visar detaljerade steg för att acceptera inkommande Teams VoIP-anrop:
Steg
- Autentisera Alice från Fabrikam i Contosos klientprogram: Alice använder en webbläsare för att öppna Fabrikams webbsida och autentisera. Mer information om autentisering med Teams-identitet finns. Om autentiseringen lyckas omdirigeras Alice till den första sidan.
- Prenumerera på att ta emot samtal: Klientprogrammet använder Azure Communication Services anropande SDK för att tillhandahålla samtalsfunktionen. Först skapar den en instans av callAgent som innehåller åtkomsttoken för Azure Communication Services som hämtades under det första steget.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Sedan prenumererar programmet på den inkommande samtalshändelsen.
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);
Metoden showIncomingCall är en anpassad Contoso-metod som renderar ett användargränssnitt för att indikera inkommande samtal och två knappar för att acceptera och avvisa anropet. Om du väljer acceptera-knappen används följande kod:
// Accept the call
var call = await incomingCall.accept();
Om du väljer knappen Neka används följande kod:
// Reject the call
incomingCall.reject();
- Megan start är ett VoIP-samtal till Teams-användaren Alice: Megan använder sin Teams-skrivbordsklient för att ringa Alice. Teams-infrastrukturen kommer att ringa alla slutpunkter som är associerade med Alice. Den innehåller: Teams desktop, mobil, webbklienter och program baserade på Azure Communication Services som anropar SDK.
- Contosos klientprogram visar Megans inkommande samtal: Klientprogrammet tar emot inkommande samtalsavisering. showIncomingCall-metoden skulle använda Graph API för att översätta Teams användar-ID till visningsnamn.
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"
När informationen hämtas visas meddelandet för Alice i Contosos klientprogram.
- Alice accepterar samtalet: Alice väljer en knapp för att acceptera samtalet och anslutningen mellan Alice och Megan upprättas.
Användningsfall 5: Anslut till Teams-möte
Det här scenariot visar ett användningsfall för flera innehavare, där företaget Contoso tillhandahåller SaaS till företaget Fabrikam. Med SaaS kan Fabrikams användare ansluta till Teams-möten via en anpassad webbplats som tar Teams-användarens identitet.
Följande sekvensdiagram visar detaljerade steg för att ansluta till ett Teams-möte:
Steg
- Autentisera Alice från Fabrikam i Contosos klientprogram: Alice använder en webbläsare för att öppna Fabrikams webbsida och autentisera. Mer information om autentisering med Teams-identitet finns. Om autentiseringen lyckas omdirigeras Alice till den första sidan.
- Läs in Teams-möten och deras identifierare: Contoso-klientprogrammet använder Graph API för att hämta en lista över Teams-möten för Fabrikams användare. Alice eller hennes administratör måste ge medgivande till Graph API för att utföra den här åtgärden. Du kan läsa mer om Graph API-kommandot i dokumentationen.
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;
Contosos klientprogram visar sedan listan över Teams-möten och möjligheten att ansluta till dem.
- Delta i Teams-mötet "Project Tailspin": Alice väljer en knapp för att ansluta till Teams-mötet "Project Tailspin" i Contosos klientprogram. Klientprogrammet använder Azure Communication Services anropande SDK för att tillhandahålla anropsfunktionen. Klientprogram skapar en instans av callAgent som innehåller åtkomsttoken för Azure Communication Services som hämtades under det första steget.
const callClient = new CallClient();
tokenCredential = new AzureCommunicationTokenCredential('<AlICE_ACCESS_TOKEN>');
callAgent = await callClient.createTeamsCallAgent(tokenCredential)
Sedan ansluter programmet till ett möte via mottagen joinUrl.
var meetingLocator = new TeamsMeetingLinkLocator("https://teams.microsoft.com/l/meetup-join/...");
callAgent.startCallJoinAsync(meetingLocator , new JoinCallOptions());
Alice ansluter sedan till Teams-mötet.
- Andra deltagare som ansluter till Teams-mötet: Den tillhandahållna upplevelsen är ett standardmöte i Teams. Baserat på konfigurationen och inbjudningarna kan Teams-mötet anslutas av Teams-användare, Anonym Teams-användare med teamwebbklient, Teams-skrivbordsklient, Teams mobilklient, Azure Communication Services-användare via program baserade på Kommunikationstjänster som anropar SDK eller användare som använder telefoner.
Nästa steg
Följande artiklar kan vara av intresse för dig:
- Läs mer om autentisering.
- Prova snabbstarten för autentisering av Teams-användare.
- Prova snabbstarten för att anropa en Teams-användare.