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
- Un account Azure con una sottoscrizione attiva. Per informazioni dettagliate, vedere Creare un account gratuitamente.
- Una licenza di Telefono di Microsoft Teams e un tenant di Teams con privilegi amministrativi. La licenza di Telefono di Teams è obbligatoria per usare questa funzionalità. Per altre informazioni sulle licenze di Teams, vedere qui. L'utente di Microsoft Teams deve anche essere abilitato per
voice
. Vedere Configurazione del sistema telefonico. I privilegi amministrativi sono necessari per autorizzare la risorsa di Servizi di comunicazione a chiamare gli utenti di Teams, come illustrato più avanti nel passaggio 1. - Una risorsa del servizio di comunicazione distribuita e una stringa di connessione valida trovata selezionando Chiavi nel menu a sinistra nel portale di Azure.
- Acquisire un numero di telefono PSTN dalla risorsa del servizio di comunicazione. Prendere nota del numero di telefono acquisito da usare in questa guida introduttiva.
- Una sottoscrizione di Griglia di eventi di Azure per ricevere l'evento
IncomingCall
. - La libreria API di Automazione chiamate del servizio di comunicazione di Azure più recente per il sistema operativo.
- Un servizio Web che implementa la libreria API di Automazione chiamate. Seguire questa esercitazione.
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.
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.
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
- Informazioni su come registrare le chiamate.
- Altre informazioni su Automazione chiamate e sulle funzionalità.
- Altre informazioni sulle funzionalità del supporto dell'interoperabilità di Teams con Automazione chiamate di Servizi di comunicazione di Azure
- Informazioni sull'azione Riproduci per riprodurre l'audio in una chiamata.
- Informazioni su come creare un flusso di lavoro di chiamate per uno scenario di assistenza clienti.