Guida introduttiva: Gestire una chiamata alla sala
Introduzione
Durante una chiamata in sala Servizi di comunicazione di Azure (ACS), è possibile gestire la chiamata usando gli SDK per chiamate o gli SDK di Automazione delle chiamate o entrambi. In una chiamata alla sala è possibile controllare le azioni in chiamata usando entrambi i ruoli assegnati ai partecipanti e alle proprietà configurate nella sala. Le funzionalità di controllo dei ruoli del partecipante consentite per partecipante, mentre le proprietà della sala si applicano alla chiamata di sala nel suo complesso.
Calling SDK
L'SDK per chiamate è una libreria di chiamate lato client che consente ai partecipanti di una chiamata in sala di eseguire diverse operazioni in chiamata, ad esempio la condivisione dello schermo, attivare/disattivare video, disattivare o disattivare l'audio e così via. Per l'elenco completo delle funzionalità, vedere Panoramica dell'SDK per chiamate.
È possibile controllare le funzionalità in base ai ruoli assegnati ai partecipanti nella chiamata. Ad esempio, solo il relatore può condividere lo schermo. Per i ruoli e le autorizzazioni dei partecipanti, vedere Concetti relativi alle sale.
Chiamare gli SDK di Automazione delle chiamate
Call Automation SDK è una libreria lato server che consente agli amministratori di gestire una chiamata in sala in corso in un ambiente centrale e controllato. A differenza di Calling SDK, le operazioni di Call Automation SDK sono indipendenti dai ruoli. Pertanto, un amministratore di chiamata può eseguire diverse operazioni in chiamata per conto dei partecipanti alle chiamate in sala.
Gli elenchi seguenti descrivono le azioni comuni in chiamata disponibili in una chiamata alla sala.
Connettersi a una chiamata alla sala
L'automazione delle chiamate deve connettersi a una chiamata di sala esistente prima di eseguire qualsiasi operazione in chiamata. Gli CallConnected
eventi o ConnectFailed
vengono generati usando meccanismi di callback per indicare se un'operazione di connessione ha avuto esito positivo o negativo rispettivamente.
Uri callbackUri = new Uri("https://<myendpoint>/Events"); //the callback endpoint where you want to receive subsequent events
CallLocator roomCallLocator = new RoomCallLocator("<RoomId>");
ConnectCallResult response = await client.ConnectAsync(roomCallLocator, callbackUri);
Una volta stabilita la connessione a una chiamata alla sala, un CallConnect
evento viene informato tramite l'URI di callback. È possibile usare callConnectionId
per recuperare una connessione di chiamata nella chiamata alla sala in base alle esigenze. I frammenti di codice di esempio seguenti usano per callConnectionId
illustrare questa funzione.
Aggiungere un partecipante PSTN
Usando Call Automation è possibile effettuare la chiamata a un numero PSTN e aggiungere il partecipante a una chiamata in sala. È tuttavia necessario configurare una stanza per abilitare l'opzione di uscita PSTN (EnabledPSTNDialout
impostata su true
) e la risorsa Servizi di comunicazione di Azure deve avere un numero di telefono valido di cui è stato effettuato il provisioning.
Per altre informazioni, vedere Guida introduttiva alle sale.
var callerIdNumber = new PhoneNumberIdentifier("+16044561234"); // This is the ACS-provisioned phone number for the caller
var callThisPerson = new CallInvite(new PhoneNumberIdentifier("+16041234567"), callerIdNumber); // The target phone number to dial out to
CreateCallResult response = await client.GetCallConnection(callConnectionId).AddParticipantAsync(callThisPerson);
Rimuovere un partecipante PSTN
var removeThisUser = new PhoneNumberIdentifier("+16044561234");
// Remove a participant from the call with optional parameters
var removeParticipantOptions = new RemoveParticipantOptions(removeThisUser)
{
OperationContext = "operationContext",
OperationCallbackUri = new Uri("uri_endpoint"); // Sending event to a non-default endpoint
}
RemoveParticipantsResult result = await client.GetCallConnection(callConnectionId).RemoveParticipantAsync(removeParticipantOptions);
Inviare DTMF
Inviare un elenco di toni DTMF a un partecipante esterno.
var tones = new DtmfTone[] { DtmfTone.One, DtmfTone.Two, DtmfTone.Three, DtmfTone.Pound };
var sendDtmfTonesOptions = new SendDtmfTonesOptions(tones, new PhoneNumberIdentifier(calleePhonenumber))
{
OperationContext = "dtmfs-to-ivr"
};
var sendDtmfAsyncResult = await callAutomationClient.GetCallConnection(callConnectionId).GetCallMedia().SendDtmfTonesAsync(sendDtmfTonesOptions);
Registrazione delle chiamate
Servizi di comunicazione di Azure rooms supportano funzionalità di registrazione, tra cui start
, stop
pause
, resume
, e così via, fornite da Automazione chiamate. Vedere i frammenti di codice seguenti per avviare/arrestare/sospendere/riprendere una registrazione in una chiamata alla sala. Per un elenco completo delle azioni, vedere Registrazione di Automazione chiamate.
// Start recording
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
RecordingStorage = RecordingStorage.CreateAzureBlobContainerRecordingStorage(new Uri("<YOUR_STORAGE_CONTAINER_URL>"))
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
.StartAsync(recordingOptions);
// Pause recording using recordingId received in response of start recording.
var pauseRecording = await callAutomationClient.GetCallRecording ().PauseAsync(recordingId);
// Resume recording using recordingId received in response of start recording.
var resumeRecording = await callAutomationClient.GetCallRecording().ResumeAsync(recordingId);
// Stop recording using recordingId received in response of start recording.
var stopRecording = await callAutomationClient.GetCallRecording().StopAsync(recordingId);
Terminare una chiamata
È possibile usare l'azione Di blocco di Call Automation SDK per terminare una chiamata. Al termine dell'azione Di sospensione, l'SDK pubblica un CallDisconnected
evento.
_ = await client.GetCallConnection(callConnectionId).HangUpAsync(forEveryone: true);
Altre azioni
Le azioni in chiamata seguenti sono supportate anche in una chiamata alla sala.
- Aggiungi partecipante (identificatore ACS)
- Rimuovi partecipante (identificatore ACS)
- Annulla aggiunta partecipante (identificatore ACS e numero PSTN)
- Hang up call
- Ottenere il partecipante (identificatore ACS e numero PSTN)
- Ottenere più partecipanti (identificatore ACS e numero PSTN)
- Ottenere informazioni più recenti su una chiamata
- Riprodurre sia file audio che testo
- Riprodurre tutti i file audio e il testo
- Riconoscere sia DTMF che riconoscimento vocale
- Riconoscere DTMF continuo
Per altre informazioni, vedere Chiamare azioni e azioni multimediali.
Passaggi successivi
In questa sezione si è appreso come:
- Partecipare a una chiamata di sala dall'applicazione
- Aggiungere azioni di chiamata in una chiamata alla sala tramite SDK per chiamate
- Aggiungere azioni di chiamata in una chiamata alla sala usando gli SDK di Automazione delle chiamate
Può essere utile vedere anche gli articoli seguenti:
- Informazioni sul concetto di Rooms
- Informazioni sulle funzionalità degli SDK per chiamate
- Informazioni sui concetti di Automazione delle chiamate