Delen via


Een Microsoft Teams-gebruiker toevoegen aan een bestaand gesprek met behulp van Gespreksautomatisering

In deze quickstart gebruiken we de Azure Communication Services Call Automation-API's om oproepen aan een Teams-gebruiker toe te voegen, te verwijderen en door te zetten.

Vereisten

  • Een Azure-account met een actief abonnement, zie Gratis een account maken voor meer informatie.
  • Een Microsoft Teams Telefoon licentie en een Teams-tenant met beheerdersbevoegdheden. Teams Phone-licentie is een must om deze functie te kunnen gebruiken. Meer informatie over Teams-licenties vindt u hier. De Gebruiker van Microsoft Teams moet ook zijn voice ingeschakeld, zie het instellen van uw telefoonsysteem. Beheerdersbevoegdheden zijn vereist voor het autoriseren van Communication Services-resources om Teams-gebruikers aan te roepen, zoals verderop in stap 1 wordt uitgelegd.
  • Een geïmplementeerde Communication Service-resource en geldige verbindingsreeks gevonden door sleutels te selecteren in het menu aan de linkerkant in Azure Portal.
  • Haal een PSTN-telefoonnummer op uit de Communication Service-resource. Noteer het telefoonnummer dat u hebt aangeschaft voor gebruik in deze quickstart.
  • Een Azure Event Grid-abonnement om de IncomingCall gebeurtenis te ontvangen.
  • De nieuwste Api-bibliotheek voor aanroepen van Azure Communication Service voor uw besturingssysteem.
  • Volg deze zelfstudie voor een webservice waarmee de API-bibliotheek voor aanroepen wordt geïmplementeerd.

Stap 1: Autorisatie voor uw Azure Communication Services-resource om aanroepen naar Microsoft Teams-gebruikers mogelijk te maken

Als u gesprekken wilt inschakelen via Call Automation-API's, moet een Microsoft Teams-beheerder of globale beheerder de Communication Services-resources expliciet toegang tot hun tenant inschakelen om aanroepen toe te staan.

Instelling op tenantniveau Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell) waarmee federatie tussen hun tenant en specifieke Communication Services-resources wordt ingeschakeld/uitgeschakeld.

Set-CsExternalAccessPolicy (SkypeForBusiness) Gebruikersbeleid waarmee de beheerder verder kan bepalen welke gebruikers in hun organisatie kunnen deelnemen aan federatieve communicatie met Communication Services-gebruikers.

Stap 2: Gebruik de Graph API om de Object-id van Microsoft Entra op te halen voor Teams-gebruikers en optioneel hun aanwezigheid te controleren

De Microsoft Entra-object-id (OID) van een Teams-gebruiker is vereist om ze toe te voegen aan of over te dragen vanuit een Communication Services-aanroep. De OID kan worden opgehaald via 1) Office-portal, 2) Microsoft Entra-beheercentrum, 3) Microsoft Entra Connect; of 4) Graph API. In het volgende voorbeeld wordt Graph API gebruikt.

Een Microsoft Entra-beheerder moet toestemming geven voordat Graph kan worden gebruikt voor het zoeken naar gebruikers. Meer informatie vindt u in het overzichtsdocument van Microsoft Graph beveiligings-API. De OID kan worden opgehaald met behulp van de API voor lijstgebruikers om naar gebruikers te zoeken. In het volgende voorbeeld ziet u een zoekopdracht op weergavenaam, maar u kunt ook zoeken naar andere eigenschappen:

Gebruikers weergeven met 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"
        }

Optioneel kan aanwezigheid voor een gebruiker worden opgehaald met behulp van de aanwezigheids-API en de object-id van de gebruiker. Meer informatie over de microsoft Graph v1.0-documentatie.

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"

Stap 3: Een Teams-gebruiker toevoegen aan een bestaande Communication Services-aanroep die wordt beheerd door Call Automation-API's

U moet de vereiste stap voltooien en een webservice-app hebben om een Communication Services-aanroep te beheren. Voeg met behulp van het callConnection-object een deelnemer toe aan de oproep.

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

Op de bureaubladclient van Microsoft Teams wordt Jack's oproep verzonden naar de Microsoft Teams-gebruiker via een pop-upmelding voor binnenkomende oproepen.

Schermopname van de Microsoft Teams-bureaubladclient, jack's oproep wordt verzonden naar de Microsoft Teams-gebruiker via een pop-upmelding voor binnenkomende oproepen.

Nadat de Gebruiker van Microsoft Teams het gesprek heeft geaccepteerd, worden in de gesprekservaring voor de Microsoft Teams-gebruiker alle deelnemers weergegeven in het Microsoft Teams-rooster. Uw toepassing die de aanroep beheert met behulp van de Call Automation-API blijft verborgen voor teams-gebruikers op het gespreksscherm. Schermopname van Microsoft Teams-gebruiker die het gesprek accepteert en de in-call-ervaring voor de Microsoft Teams-gebruiker invoert.

Stap 4: Een Teams-gebruiker verwijderen uit een bestaande Communication Services-aanroep die wordt beheerd door Call Automation-API's

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

Optionele functie: Overdragen naar een Teams-gebruiker vanuit een bestaande Communication Services-aanroep die wordt beheerd door Call Automation-API's

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

Resources opschonen

Als u een Communication Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle bijbehorende resources verwijderd. Meer informatie over het opschonen van resources.

Volgende stappen