Lägga till en Microsoft Teams-användare i ett befintligt anrop med hjälp av Samtalsautomation
Viktigt!
Den här funktionen i Azure Communication Services är för närvarande i förhandsversion.
Förhandsversions-API:er och SDK:er tillhandahålls utan ett serviceavtal. Vi rekommenderar att du inte använder dem för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds, eller så kan de ha begränsade funktioner.
Mer information finns i Kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
I den här snabbstarten använder vi API:erna för samtalsautomatisering i Azure Communication Services för att lägga till, ta bort och överföra samtal till en Teams-användare.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration finns i Skapa ett konto kostnadsfritt.
- En Microsoft Teams-telefon licens och en Teams-klientorganisation med administratörsbehörighet. Teams Phone-licens är ett måste för att kunna använda den här funktionen, läs mer om Teams-licenser här. Microsoft Teams-användaren måste också vara
voice
aktiverad, se setting-up-your-phone-system. Administrativa behörigheter krävs för att auktorisera Communication Services-resursen för att anropa Teams-användare, som beskrivs senare i steg 1. - En distribuerad kommunikationstjänstresurs och giltig anslutningssträng hittades genom att välja Nycklar på menyn till vänster på Azure Portal.
- Hämta ett PSTN-telefonnummer från kommunikationstjänstens resurs. Observera det telefonnummer som du skaffade för att använda i den här snabbstarten.
- En Azure Event Grid-prenumeration för att ta emot
IncomingCall
händelsen. - Det senaste AZURE Communication Service Call Automation API-biblioteket för ditt operativsystem.
- Följ den här självstudien om en webbtjänst som implementerar api-biblioteket för samtalsautomatisering.
Steg 1: Auktorisering för din Azure Communication Services-resurs för att aktivera anrop till Microsoft Teams-användare
Om du vill aktivera samtal via API:er för samtalsautomatisering måste en Microsoft Teams-administratör eller global administratör uttryckligen ge Communication Services-resurserna åtkomst till klientorganisationen för att tillåta samtal.
Inställningen Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) klientnivå som aktiverar/inaktiverar federation mellan klientorganisationen och specifika Communication Services-resurser.
Set-CsExternalAccessPolicy (SkypeForBusiness) Användarprincip som gör det möjligt för administratören att ytterligare kontrollera vilka användare i organisationen som kan delta i federerad kommunikation med Communication Services-användare.
Steg 2: Använd Graph API för att hämta Microsoft Entra-objekt-ID för Teams-användare och eventuellt kontrollera deras närvaro
En Teams-användares Microsoft Entra-objekt-ID (OID) krävs för att lägga till dem i eller överföra dem från ett Communication Services-anrop. OID kan hämtas via 1) Office-portalen, 2) Administrationscenter för Microsoft Entra, 3) Microsoft Entra Connect; eller 4) Graph API. I följande exempel används Graph API.
En Microsoft Entra-administratör måste ge sitt stora medgivande innan Graph kan användas för att söka efter användare. Läs mer genom att följa översiktsdokumentet för Microsoft Graph API för säkerhet. OID kan hämtas med hjälp av listan användare API för att söka efter användare. I följande exempel visas en sökning efter visningsnamn, men du kan också söka efter andra egenskaper:
Visa en lista över användare som använder 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"
}
Du kan också hämta närvaro för en användare med hjälp av API:et hämta närvaro och användaren ObjectId. Läs mer i dokumentationen om Microsoft Graph v1.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"
Steg 3: Lägg till en Teams-användare i ett befintligt Communication Services-anrop som styrs av API:er för samtalsautomatisering
Du måste slutföra det nödvändiga steget och ha en webbtjänstapp för att styra ett Communication Services-anrop. Med hjälp av callConnection-objektet lägger du till en deltagare i anropet.
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)"))
På Microsoft Teams skrivbordsklient skickas Jacks samtal till Microsoft Teams-användaren via ett meddelande om inkommande popup-samtal.
När Microsoft Teams-användaren har accepterat samtalet visar anropsupplevelsen för Microsoft Teams-användaren alla deltagare i Microsoft Teams-listan. Ditt program som hanterar anropet med hjälp av Api för samtalsautomatisering förblir dolt för Teams-användare på samtalsskärmen.
Steg 4: Ta bort en Teams-användare från ett befintligt Communication Services-anrop som styrs av API:er för samtalsautomatisering
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>"))
Valfri funktion: Överföra till en Teams-användare från ett befintligt Communication Services-anrop som styrs av API:er för samtalsautomatisering
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>"))
Rensa resurser
Om du vill rensa och ta bort en Communication Services-prenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort. Läs mer om att rensa resurser.
Nästa steg
- Lär dig hur du registrerar dina samtal.
- Läs mer om Samtalsautomation och dess funktioner.
- Läs mer om funktionerna i Teams samverkansstöd med Azure Communication Services Call Automation
- Lär dig mer om spela upp åtgärder för att spela upp ljud i ett samtal.
- Lär dig hur du skapar ett samtalsarbetsflöde för ett kundsupportscenario.