Dela via


Lägga till en Microsoft Teams-användare i ett befintligt anrop med hjälp av Samtalsautomation

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 anrop till en Teams-användare.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration.
  • En Microsoft Teams-telefonlicens och en Teams-klientorganisation med administratörsbehörighet. Teams telefonlicens ä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 i menyn till vänster i Azure-portalen.
  • 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 aktivera communication services-resursens å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.

Observera att Teams-användare måste ha Telefon licens för att kunna använda den här funktionen. Om du vill tilldela licensen använder du cmdleten Set-Cs Telefon NumberAssignment och anger parametern EnterpriseVoiceEnabled till $true. Mer information finns i Konfigurera Teams Telefon i din organisation.

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 Anslut eller 4) Graph API. I exemplet nedan används Graph API.

Medgivande måste beviljas av en Microsoft Entra-administratör innan Graph kan användas för att söka efter användare. Läs mer genom att följa dokumentet Microsoft Graph API för säkerhet översikt. OID kan hämtas med hjälp av listan användare API för att söka efter användare. Följande visar en sökning efter visningsnamn, men även andra egenskaper kan sökas igenom:

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 anropet Anslut ion-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.

Skärmbild av Microsoft Teams skrivbordsklient, Jacks samtal skickas till Microsoft Teams-användaren via ett meddelande om inkommande popup-samtal.

När Microsoft Teams-användaren har accepterat samtalet visas alla deltagare i Microsoft Teams-listan. Observera att ditt program som hanterar anropet med hjälp av Api för samtalsautomatisering förblir dolt för Teams-användare på samtalsskärmen, förutom om du startar ett 1:1-samtal med Teams-användaren.
Skärmbild av Microsoft Teams-användare som accepterar samtalet och anger anropsupplevelsen för Microsoft Teams-användaren.

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