Aggiungere un utente di Microsoft Teams a una chiamata esistente usando Automazione chiamate

Importante

Questa funzionalità di Servizi di comunicazione di Azure è attualmente in anteprima.

Le anteprime di API e SDK vengono fornite senza un contratto di servizio. È consigliabile non usarle per carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o risultare limitate.

Per altre informazioni, vedere le Condizioni per l'utilizzo supplementari delle anteprime di Microsoft Azure.

In questa guida introduttiva si usano le API di Automazione chiamate di Servizi di comunicazione di Azure per aggiungere, rimuovere e trasferire chiamate a un utente di Teams.

Prerequisiti

Passaggio 1: Autorizzazione per la risorsa di Servizi di comunicazione di Azure per abilitare la chiamata agli utenti di Microsoft Teams

Per abilitare la chiamata tramite le API di Automazione chiamate, un Amministratore di Microsoft Teams o Amministratore globale deve abilitare in modo esplicito l'accesso delle risorse dei Servizi di comunicazione al proprio tenant per consentire le chiamate.

Set-CsTeamsAcsFederationConfiguration (MicrosoftTeamsPowerShell): impostazione a livello di tenant che abilita/disabilita la federazione tra il tenant e le risorse specifiche dei Servizi di comunicazione.

Set-CsExternalAccessPolicy (SkypeForBusiness): criterio utente che consente all'amministratore di controllare ulteriormente quali utenti dell'organizzazione possono partecipare alle comunicazioni federate con gli utenti dei Servizi di comunicazione.

Passaggio 2: Usare l'API Graph per ottenere l'ID oggetto di Microsoft Entra per gli utenti di Teams e, facoltativamente, verificare se sono presenti

Per l'aggiunta o il trasferimento dell'utente da una chiamata dei Servizi di comunicazione, è necessario un ID oggetto di Microsoft Entra dell'utente di Teams. L'ID oggetto può essere recuperato tramite 1) portale di Office, 2) interfaccia di amministrazione di Microsoft Entra, 3) Microsoft Entra Connect o 4) API Graph. L'esempio seguente usa l'API Graph.

Un amministratore di Microsoft Entra deve concedere il consenso prima che Graph possa essere usato per cercare gli utenti. Per altre informazioni, vedere il documento Panoramica dell'API Microsoft Graph Security. L'ID oggetto può essere recuperato usando l'API di elenco degli utenti per cercare gli utenti. L'esempio seguente mostra una ricerca in base al nome visualizzato, ma è anche possibile cercare altre proprietà:

Elencare gli utenti con 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"
        }

Facoltativamente, la presenza per un utente può essere recuperata usando l'API Get presence e l'ID oggetto dell'utente. Per altre informazioni, vedere la documentazione di 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"

Passaggio 3: Aggiungere un utente di Teams a una chiamata di Servizi di comunicazione esistente controllata dalle API di Automazione chiamate

È necessario completare il passaggio prerequisito e avere un'app del servizio Web per controllare una chiamata dei Servizi di comunicazione. Usando l'oggetto callConnection, aggiungere un partecipante alla chiamata.

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

Nel client desktop di Microsoft Teams la chiamata di Jack viene inviata all'utente di Microsoft Teams tramite un avviso popup di chiamata in arrivo.

Screenshot del client desktop di Microsoft Teams, in cui la chiamata di Jack viene inviata all'utente di Microsoft Teams tramite un avviso popup di chiamata in arrivo.

Dopo che l'utente di Microsoft Teams accetta la chiamata, l'esperienza in chiamata per l'utente di Microsoft Teams visualizza tutti i partecipanti nell'elenco partecipanti di Microsoft Teams. L'applicazione che gestisce la chiamata usando l'API Automazione chiamate rimane nascosta all'utente di Teams nella schermata di chiamata. Screenshot dell'utente di Microsoft Teams che accetta la chiamata e accede all'esperienza in chiamata per l'utente di Microsoft Teams.

Passaggio 4: Rimuovere un utente di Teams da una chiamata di Servizi di comunicazione esistente controllata dalle API di Automazione chiamate

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

Funzionalità facoltativa: trasferire un utente di Teams da una chiamata di Servizi di comunicazione esistente controllata dalle API di Automazione chiamate

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

Pulire le risorse

Se si vuole pulire e rimuovere una sottoscrizione a Servizi di comunicazione, è possibile eliminare la risorsa o il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate. Altre informazioni sulla pulizia delle risorse.

Passaggi successivi