Guida introduttiva alla registrazione delle chiamate
Questo argomento di avvio rapido illustra come iniziare a registrare chiamate per le chiamate vocali e video. Per iniziare a usare le API registrazione chiamate, è necessario disporre di una chiamata. Assicurarsi di avere familiarità con l'SDK client chiamante e/o Call Automation per creare l'esperienza di chiamata dell'utente finale.
Codice di esempio
È possibile scaricare l'app di esempio da GitHub
Prerequisiti
- È necessario un account Azure con una sottoscrizione attiva.
- Distribuire una risorsa del servizio di comunicazione. Registrare la stringa di connessione della risorsa.
- Sottoscrivere eventi tramite Griglia di eventi di Azure.
- Scaricare .NET SDK
Prima di iniziare
Le API di registrazione delle chiamate usano esclusivamente l'oggetto serverCallId
per avviare la registrazione. Esistono alcuni metodi che è possibile usare per recuperare l'oggetto serverCallId
a seconda dello scenario:
Scenari di automazione delle chiamate
- Quando si usa Automazione chiamate, sono disponibili due opzioni per ottenere :
serverCallId
- Dopo aver creato una chiamata, viene
serverCallId
restituito come proprietà dell'eventoCallConnected
dopo che è stata stabilita una chiamata. Informazioni su come ottenere l'evento CallConnected da Call Automation SDK. - Dopo aver risposto alla chiamata o a una chiamata,
serverCallId
viene restituito rispettivamente come proprietà delle risposte dell'APIAnswerCallResult
oCreateCallResult
.
- Dopo aver creato una chiamata, viene
Scenari di SDK per chiamate
- Quando si usa l'SDK
serverCallId
client chiamante, è possibile recuperare usando ilgetServerCallId
metodo nella chiamata. Usare questo esempio per informazioni su come ottenere serverCallId dall'SDK client chiamante.
Iniziamo con alcuni semplici passaggi!
1. Creare un client di Automazione chiamate
Le API di registrazione delle chiamate fanno parte delle librerie di automazione chiamate Servizi di comunicazione di Azure. È quindi necessario creare un client di Automazione chiamate.
Per creare un client di automazione chiamate, usare la stringa di connessione di Servizi di comunicazione e passarla all'oggetto CallAutomationClient
.
CallAutomationClient callAutomationClient = new CallAutomationClient("<ACSConnectionString>");
2. Avviare la sessione di registrazione con StartRecordingOptions usando l'API 'StartAsync'
Usare l'oggetto ricevuto durante l'avvio serverCallId
della chiamata.
- RecordingContent viene usato per passare il tipo di contenuto di registrazione. Usare l'audio
- RecordingChannel viene usato per passare il tipo di canale di registrazione. Usare misti o non mescolati.
- RecordingFormat viene usato per passare il formato della registrazione. Usare wav.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>");
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
.StartAsync(recordingOptions);
2.1. Solo per Unmixed - Specificare un utente sul canale 0
Per produrre file di registrazione audio non mescolati, è possibile usare la AudioChannelParticipantOrdering
funzionalità per specificare l'utente che si vuole registrare nel canale 0. Il resto dei partecipanti viene assegnato a un canale mentre parlano. Se si usa ma non si usa RecordingChannel.Unmixed
AudioChannelParticipantOrdering
, La registrazione chiamate assegna il canale 0 al primo partecipante che parla.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
AudioChannelParticipantOrdering = { new CommunicationUserIdentifier("<ACS_USER_MRI>") }
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording().StartAsync(recordingOptions);
2.2. Solo per Unmixed - Specificare l'affinità del canale
var channelAffinity = new ChannelAffinity(new CommunicationUserIdentifier("<ACS_USER_MRI>")) { Channel = 0};
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
{
RecordingContent = RecordingContent.Audio,
RecordingChannel = RecordingChannel.Unmixed,
RecordingFormat = RecordingFormat.Wav,
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
ChannelAffinity = new List<ChannelAffinity>{ channelAffinity }
};
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording().StartAsync(recordingOptions);
La StartAsync
risposta API contiene l'oggetto recordingId
della sessione di registrazione.
3. Arrestare la sessione di registrazione usando l'API 'StopAsync'
Usare l'oggetto recordingId
ricevuto in risposta a StartAsync
.
var stopRecording = await callAutomationClient.GetCallRecording().StopAsync(recordingId);
4. Sospendere la sessione di registrazione usando l'API 'PauseAsync'
Usare l'oggetto recordingId
ricevuto in risposta a StartAsync
.
var pauseRecording = await callAutomationClient.GetCallRecording ().PauseAsync(recordingId);
5. Riprendere la sessione di registrazione usando l'API "ResumeAsync"
Usare l'oggetto recordingId
ricevuto in risposta a StartAsync
.
var resumeRecording = await callAutomationClient.GetCallRecording().ResumeAsync(recordingId);
6. Scaricare il file di registrazione usando l'API 'DownloadToAsync'
Usare un Griglia di eventi di Azure hook Web o un'altra azione attivata per notificare ai servizi quando il supporto registrato è pronto per il download.
Una notifica Microsoft.Communication.RecordingFileStatusUpdated
griglia di eventi viene pubblicata quando una registrazione è pronta per il recupero, in genere alcuni minuti dopo il completamento del processo di registrazione (ad esempio, riunione terminata, registrazione arrestata). Le notifiche degli eventi di registrazione includono contentLocation
e , metadataLocation
che vengono usate per recuperare sia i supporti registrati che un file di metadati di registrazione.
Esempio dello schema dell'evento:
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Usare DownloadToAsync
l'API per scaricare i supporti registrati.
var recordingDownloadUri = new Uri(contentLocation);
var response = await callAutomationClient.GetCallRecording().DownloadToAsync(recordingDownloadUri, fileName);
L'oggetto downloadLocation
per la registrazione può essere recuperato dall'attributo contentLocation
di recordingChunk
. DownloadToAsync
metodo scarica il contenuto nel nome file specificato.
7. Eliminare il contenuto di registrazione usando l'API 'DeleteAsync'
Usare DeleteAsync
l'API per eliminare il contenuto di registrazione (ad esempio, supporti registrati, metadati)
var recordingDeleteUri = new Uri(deleteLocation);
var response = await callAutomationClient.GetCallRecording().DeleteAsync(recordingDeleteUri);
Codice di esempio
È possibile scaricare l'app di esempio da GitHub
Prerequisiti
- È necessario un account Azure con una sottoscrizione attiva.
- Distribuire una risorsa del servizio di comunicazione. Registrare la stringa di connessione della risorsa.
- Sottoscrivere eventi tramite Griglia di eventi di Azure.
- Scaricare Java SDK
Prima di iniziare
Le API di registrazione delle chiamate usano esclusivamente l'oggetto serverCallId
per avviare la registrazione. Esistono alcuni metodi che è possibile usare per recuperare l'oggetto serverCallId
a seconda dello scenario:
Scenari di automazione delle chiamate
- Quando si usa Automazione chiamate, sono disponibili due opzioni per ottenere :
serverCallId
- Dopo aver creato una chiamata, viene
serverCallId
restituito come proprietà dell'eventoCallConnected
dopo che è stata stabilita una chiamata. Informazioni su come ottenere l'evento CallConnected da Call Automation SDK. - Dopo aver risposto alla chiamata o a una chiamata,
serverCallId
viene restituito rispettivamente come proprietà delle risposte dell'APIAnswerCallResult
oCreateCallResult
.
- Dopo aver creato una chiamata, viene
Scenari di SDK per chiamate
- Quando si usa l'SDK
serverCallId
client chiamante, è possibile recuperare usando ilgetServerCallId
metodo nella chiamata. Usare questo esempio per informazioni su come ottenere serverCallId dall'SDK client chiamante.
Iniziamo con alcuni semplici passaggi!
1. Creare un client di Automazione chiamate
Le API di registrazione delle chiamate fanno parte delle librerie di automazione chiamate Servizi di comunicazione di Azure. È quindi necessario creare un client di Automazione chiamate.
Per creare un client di automazione chiamate, si userà la stringa di connessione di Servizi di comunicazione e la passerà all'oggetto CallAutomationClient
.
CallAutomationClient callAutomationClient = new CallAutomationClientBuilder()
.connectionString("<acsConnectionString>")
.buildClient();
2. Avviare la sessione di registrazione con StartRecordingOptions usando l'API 'startWithResponse'
Usare l'oggetto ricevuto durante l'avvio serverCallId
della chiamata.
- RecordingContent viene usato per passare il tipo di contenuto di registrazione. Usare AUDIO
- RecordingChannel viene usato per passare il tipo di canale di registrazione. Usare MIXED o UNMIXED.
- RecordingFormat viene usato per passare il formato della registrazione. Usare WAV.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
.setRecordingChannel(RecordingChannel.UNMIXED)
.setRecordingFormat(RecordingFormat.WAV)
.setRecordingContent(RecordingContent.AUDIO)
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>");
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
.startWithResponse(recordingOptions, null);
2.1. Solo per Unmixed - Specificare un utente sul canale 0
Per produrre file di registrazione audio non mescolati, è possibile usare la AudioChannelParticipantOrdering
funzionalità per specificare l'utente che si vuole registrare nel canale 0. Il resto dei partecipanti verrà assegnato a un canale mentre parlano. Se si usa ma non si usa RecordingChannel.Unmixed
AudioChannelParticipantOrdering
, La registrazione chiamate assegna il canale 0 al primo partecipante che parla.
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
.setRecordingChannel(RecordingChannel.UNMIXED)
.setRecordingFormat(RecordingFormat.WAV)
.setRecordingContent(RecordingContent.AUDIO)
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>")
.setAudioChannelParticipantOrdering(List.of(new CommunicationUserIdentifier("<participantMri>")));
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
.startWithResponse(recordingOptions, null);
2.2. Solo per Unmixed - Specificare l'affinità del canale
ChannelAffinity channelAffinity = new ChannelAffinity()
.setParticipant(new PhoneNumberIdentifier("RECORDING_ID"))
.setChannel(0);
List<ChannelAffinity> channelAffinities = Arrays.asList(channelAffinity);
StartRecordingOptions startRecordingOptions = new StartRecordingOptions(new ServerCallLocator(SERVER_CALL_ID))
.setRecordingChannel(RecordingChannel.UNMIXED)
.setRecordingFormat(RecordingFormat.WAV)
.setRecordingContent(RecordingContent.AUDIO)
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>")
.setChannelAffinity(channelAffinities);
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
.startRecordingWithResponse(recordingOptions, null);
La startWithResponse
risposta dell'API contiene l'oggetto recordingId
della sessione di registrazione.
3. Arrestare la sessione di registrazione usando l'API 'stopWithResponse'
Usare l'oggetto recordingId
ricevuto in risposta a startWithResponse
.
Response<Void> response = callAutomationClient.getCallRecording()
.stopWithResponse(response.getValue().getRecordingId(), null);
4. Sospendere la sessione di registrazione con l'API 'pauseWithResponse'
Usare l'oggetto recordingId
ricevuto in risposta a startWithResponse
.
Response<Void> response = callAutomationClient.getCallRecording()
.pauseWithResponse(response.getValue().getRecordingId(), null);
5. Riprendere la sessione di registrazione usando l'API 'resumeWithResponse'
Usare l'oggetto recordingId
ricevuto in risposta a startWithResponse
.
Response<Void> response = callAutomationClient.getCallRecording()
.resumeWithResponse(response.getValue().getRecordingId(), null);
6. Scaricare il file di registrazione usando l'API 'downloadToWithResponse'
Usare un web hook Griglia di eventi di Azure o un'altra azione attivata per notificare ai servizi quando il supporto registrato è pronto per il download.
Una notifica Microsoft.Communication.RecordingFileStatusUpdated
di Griglia di eventi viene pubblicata quando una registrazione è pronta per il recupero, in genere alcuni minuti dopo il completamento del processo di registrazione (ad esempio, la riunione è terminata, la registrazione è stata arrestata). Le notifiche degli eventi di registrazione includono contentLocation
e metadataLocation
, che vengono usate per recuperare i supporti registrati e un file di metadati di registrazione.
Di seguito è riportato un esempio dello schema di eventi.
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Usare il downloadToWithResponse
metodo della CallRecording
classe per scaricare i supporti registrati. Di seguito sono riportati i parametri supportati per downloadToWithResponse
il metodo :
contentLocation
: Servizi di comunicazione di Azure URL in cui si trova il contenuto.destinationPath
: percorso del file.parallelDownloadOptions
: oggetto Facoltativo ParallelDownloadOptions per modificare il funzionamento del download parallelo - .overwrite
: true per sovrascrivere il file, se esistente.context
: contesto che rappresenta il contesto della richiesta.
Boolean overwrite = true;
ParallelDownloadOptions parallelDownloadOptions = null;
Context context = null;
String filePath = String.format(".\\%s.%s", documentId, fileType);
Path destinationPath = Paths.get(filePath);
Response<Void> downloadResponse = callAutomationClient.getCallRecording().downloadToWithResponse(contentLocation, destinationPath, parallelDownloadOptions, overwrite, context);
Il percorso del contenuto e gli ID documento per i file di registrazione possono essere recuperati rispettivamente dai contentLocation
campi e documentId
per ogni recordingChunk
oggetto .
7. Eliminare il contenuto di registrazione usando l'API 'deleteWithResponse'.
Utilizzare il deleteWithResponse
metodo della CallRecording
classe per eliminare il supporto registrato. Di seguito sono riportati i parametri supportati per deleteWithResponse
il metodo :
deleteLocation
: Servizi di comunicazione di Azure URL in cui si trova il contenuto da eliminare.context
: contesto che rappresenta il contesto della richiesta.
Response<Void> deleteResponse = callAutomationClient.getCallRecording().deleteWithResponse(deleteLocation, context);
Il percorso di eliminazione per la registrazione può essere recuperato dal deleteLocation
campo dell'evento griglia di eventi.
Codice di esempio
È possibile scaricare l'app di esempio da GitHub
Prerequisiti
- È necessario un account Azure con una sottoscrizione attiva.
- Distribuire una risorsa del servizio di comunicazione. Registrare la stringa di connessione della risorsa.
- Sottoscrivere eventi tramite Griglia di eventi di Azure.
- Python 3.7+.
Prima di iniziare
Le API di registrazione delle chiamate usano esclusivamente per avviare la serverCallId
registrazione. Esistono due metodi che è possibile usare per recuperare l'oggetto serverCallId
a seconda dello scenario:
Scenari di automazione delle chiamate
- Quando si usa l'automazione delle chiamate, sono disponibili due opzioni per ottenere :
serverCallId
- Dopo la creazione di una chiamata, un
serverCallId
oggetto viene restituito come proprietà dell'eventoCallConnected
dopo che è stata stabilita una chiamata. Informazioni su come ottenere un evento CallConnected da Call Automation SDK. - Dopo aver risposto alla chiamata o a una chiamata, viene
serverCallId
restituito come proprietà delleAnswerCallResult
risposte api oCreateCallResult
rispettivamente.
- Dopo la creazione di una chiamata, un
Scenari dell'SDK per chiamate
- Quando si usa l'SDK
serverCallId
client chiamante, è possibile recuperare usando laserver_call_id
variabile nella chiamata. Usare questo esempio per informazioni su come ottenere serverCallId da Calling Client SDK.
Iniziamo con alcuni semplici passaggi.
1. Creare un client di automazione delle chiamate
Le API di registrazione delle chiamate fanno parte delle librerie di automazione delle chiamate Servizi di comunicazione di Azure. È quindi necessario creare un client di automazione delle chiamate.
Per creare un client di automazione delle chiamate, si userà la stringa di connessione di Servizi di comunicazione e la si passerà all'oggetto CallAutomationClient
.
call_automation_client = CallAutomationClient.from_connection_string("<ACSConnectionString>")
2. Avviare la registrazione della sessione start_recording API
Usare l'oggetto ricevuto durante l'avvio serverCallId
della chiamata.
- RecordingContent viene usato per passare il tipo di contenuto di registrazione. Usare l'audio
- RecordingChannel viene usato per passare il tipo di canale di registrazione. Utilizzare misto o non combinato.
- RecordingFormat viene usato per passare il formato della registrazione. Usare wav.
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
recording_content_type = RecordingContent.Audio,
recording_channel_type = RecordingChannel.Unmixed,
recording_format_type = RecordingFormat.Wav,
recording_state_callback_url = "<CallbackUri>")
2.1. Solo per Unmixed - Specificare un utente nel canale 0
Per produrre file di registrazione audio non misti, puoi usare la AudioChannelParticipantOrdering
funzionalità per specificare l'utente che vuoi registrare sul canale 0. Il resto dei partecipanti verrà assegnato a un canale mentre parlano. Se si usa ma non si usa RecordingChannel.Unmixed
AudioChannelParticipantOrdering
, Call Recording assegnerà channel 0 al primo partecipante che parla.
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
recording_content_type = RecordingContent.Audio,
recording_channel_type = RecordingChannel.Unmixed,
recording_format_type = RecordingFormat.Wav,
recording_state_callback_url = "<CallbackUri>",
audio_channel_participant_ordering=[CommunicationUserIdentifier(id="<ACS_USER_MRI>")])
2.2. Solo per Unmixed - Specificare l'affinità del canale
_channel_affinity = ChannelAffinity(target_participant=CommunicationUserIdentifier("<ACS_USER_MRI>"), channel=0)
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
recording_content_type = RecordingContent.Audio,
recording_channel_type = RecordingChannel.Unmixed,
recording_format_type = RecordingFormat.Wav,
recording_state_callback_url = "<CallbackUri>",
channel_affinity=[_channel_affinity])
La StartAsync
risposta dell'API contiene l'oggetto recordingId
della sessione di registrazione.
3. Interrompere la registrazione della sessione con l'API 'stop_recording'
Usare l'oggetto recording_id
ricevuto in risposta a start_recording
.
stop_recording = call_automation_client.stop_recording(recording_id = recording_id)
4. Sospendere la sessione di registrazione con l'API "pause_recording"
Usare l'oggetto recording_id
ricevuto in risposta a start_recording
.
pause_recording = call_automation_client.pause_recording(recording_id = recording_id)
5. Riprendere la sessione di registrazione con l'API "resume_recording"
Usare l'oggetto recording_id
ricevuto in risposta a start_recording
.
resume_recording = call_automation_client.resume_recording(recording_id = recording_id)
6. Scaricare il file di registrazione usando l'API "download_recording"
Usare un web hook Griglia di eventi di Azure o un'altra azione attivata per notificare ai servizi quando il supporto registrato è pronto per il download.
Una notifica Microsoft.Communication.RecordingFileStatusUpdated
di Griglia di eventi viene pubblicata quando una registrazione è pronta per il recupero, in genere alcuni minuti dopo il completamento del processo di registrazione (ad esempio, la riunione è terminata, la registrazione è stata arrestata). Le notifiche degli eventi di registrazione includono contentLocation
e metadataLocation
, che vengono usate per recuperare i supporti registrati e un file di metadati di registrazione.
Di seguito è riportato un esempio dello schema di eventi.
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Usare l'API download_recording
per scaricare i supporti registrati.
response = recording_data = call_automation_client.download_recording(content_location)
with open("<file_name>", "wb") as binary_file:
binary_file.write(recording_data.read())
La downloadLocation
classe per la registrazione può essere recuperata dall'attributo contentLocation
di recordingChunk
. download_recording
il metodo scarica il contenuto in byte.
7. Eliminare il contenuto di registrazione usando l'API "delete_recording"
Usare l'API delete_recording
per eliminare il contenuto di registrazione (ad esempio, supporti registrati, metadati)
response = call_automation_client.delete_recording(delete_location);
Codice di esempio
È possibile scaricare l'app di esempio da GitHub
Prerequisiti
- È necessario un account Azure con una sottoscrizione attiva.
- Distribuire una risorsa del servizio di comunicazione. Registrare la stringa di connessione della risorsa.
- Sottoscrivere eventi tramite Griglia di eventi di Azure.
- Node.js Versioni LTS e Manutenzione LTS attive (consigliate 8.11.1 e 10.14.1)
Prima di iniziare
Le API di registrazione delle chiamate usano esclusivamente per avviare la serverCallId
registrazione. Esistono due metodi che è possibile usare per recuperare l'oggetto serverCallId
a seconda dello scenario:
Scenari di automazione delle chiamate
- Quando si usa l'automazione delle chiamate, sono disponibili due opzioni per ottenere :
serverCallId
- Dopo la creazione di una chiamata, un
serverCallId
oggetto viene restituito come proprietà dell'eventoCallConnected
dopo che è stata stabilita una chiamata. Informazioni su come ottenere un evento CallConnected da Call Automation SDK. - Dopo aver risposto alla chiamata o a una chiamata, viene
serverCallId
restituito come proprietà delleAnswerCallResult
risposte api oCreateCallResult
rispettivamente.
- Dopo la creazione di una chiamata, un
Scenari dell'SDK per chiamate
- Quando si usa l'SDK
serverCallId
client chiamante, è possibile recuperare usando ilgetServerCallId
metodo nella chiamata. Usare questo esempio per informazioni su come ottenere serverCallId da Calling Client SDK.
Iniziamo con alcuni semplici passaggi.
1. Creare un client di automazione delle chiamate
Le API di registrazione delle chiamate fanno parte delle librerie di automazione delle chiamate Servizi di comunicazione di Azure. È quindi necessario creare un client di automazione delle chiamate.
Per creare un client di automazione delle chiamate, si userà la stringa di connessione di Servizi di comunicazione e la si passerà all'oggetto CallAutomationClient
.
const callAutomationClient = new CallAutomationClient.CallAutomationClient("<ACSConnectionString>");
2. Avviare la registrazione della sessione con StartRecordingOptions usando l'API 'StartAsync'
Usare l'oggetto ricevuto durante l'avvio serverCallId
della chiamata.
- RecordingContent viene usato per passare il tipo di contenuto di registrazione. Usare l'audio
- RecordingChannel viene usato per passare il tipo di canale di registrazione. Utilizzare misto o non combinato.
- RecordingFormat viene usato per passare il formato della registrazione. Usare wav.
var locator: CallLocator = { id: "<ServerCallId>", kind: "serverCallLocator" };
var options: StartRecordingOptions =
{
callLocator: locator,
recordingContent: "audio",
recordingChannel:"unmixed",
recordingFormat: "wav",
recordingStateCallbackEndpointUrl: "<CallbackUri>"
};
var response = await callAutomationClient.getCallRecording().start(options);
2.1. Solo per Unmixed - Specificare un utente nel canale 0
Per produrre file di registrazione audio non misti, puoi usare la AudioChannelParticipantOrdering
funzionalità per specificare l'utente che vuoi registrare sul canale 0. Il resto dei partecipanti verrà assegnato a un canale mentre parlano. Se si usa ma non si usa RecordingChannel.Unmixed
AudioChannelParticipantOrdering
, Call Recording assegnerà channel 0 al primo partecipante che parla.
var locator: CallLocator = { id: "<ServerCallId>", kind: "serverCallLocator" };
var options: StartRecordingOptions =
{
callLocator: locator,
recordingContent: "audio",
recordingChannel:"unmixed",
recordingFormat: "wav",
recordingStateCallbackEndpointUrl: "<CallbackUri>",
audioChannelParticipantOrdering:[{communicationUserId: "<ACS_USER_MRI>"}]
};
var response = await callAutomationClient.getCallRecording().start(options);
2.2. Solo per Unmixed - Specificare l'affinità del canale
var options: StartRecordingOptions =
{
callLocator: locator,
recordingContent: "audio",
recordingChannel:"unmixed",
recordingFormat: "wav",
recordingStateCallbackEndpointUrl: "<CallbackUri>",
ChannelAffinity:
[
{
channel:0,
targetParticipant:{communicationUserId: "<ACS_USER_MRI>"}
}
]
};
var response = await callAutomationClient.getCallRecording().start(options);
La StartAsync
risposta dell'API contiene l'oggetto recordingId
della sessione di registrazione.
3. Interrompere la registrazione della sessione con l'API 'stop'
Usare l'oggetto recordingId
ricevuto in risposta a start
.
var stopRecording = await callAutomationClient.getCallRecording().stop(recordingId);
4. Sospendere la sessione di registrazione con l'API "pause"
Usare l'oggetto recordingId
ricevuto in risposta a start
.
var pauseRecording = await callAutomationClient.getCallRecording().pause(recordingId);
5. Riprendere la sessione di registrazione con l'API 'ResumeAsync'
Usare l'oggetto recordingId
ricevuto in risposta a start
.
var resumeRecording = await callAutomationClient.getCallRecording().resume(recordingId);
6. Scaricare il file di registrazione usando l'API 'DownloadToAsync'
Usare un web hook Griglia di eventi di Azure o un'altra azione attivata per notificare ai servizi quando il supporto registrato è pronto per il download.
Una notifica Microsoft.Communication.RecordingFileStatusUpdated
di Griglia di eventi viene pubblicata quando una registrazione è pronta per il recupero, in genere alcuni minuti dopo il completamento del processo di registrazione (ad esempio, la riunione è terminata, la registrazione è stata arrestata). Le notifiche degli eventi di registrazione includono contentLocation
e metadataLocation
, che vengono usate per recuperare i supporti registrati e un file di metadati di registrazione.
Di seguito è riportato un esempio dello schema di eventi.
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for the recording chunk
"contentLocation": string, //Azure Communication Services URL where the content is located
"metadataLocation": string, // Azure Communication Services URL where the metadata for this chunk is located
"deleteLocation": string, // Azure Communication Services URL to use to delete all content, including recording and metadata.
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
Usare l'API downloadToPath
per scaricare i supporti registrati.
var response = await callAutomationClient.getCallRecording().downloadToPath(contentLocation, fileName);
La downloadLocation
classe per la registrazione può essere recuperata dall'attributo contentLocation
di recordingChunk
. DownloadToAsync
il metodo scarica il contenuto nel nome file specificato.
7. Eliminare il contenuto di registrazione usando l'API 'DeleteAsync'
Usare l'API delete
per eliminare il contenuto di registrazione (ad esempio, supporti registrati, metadati)
var response = await callAutomationClient.getCallRecording().delete(deleteLocation);
Pulire le risorse
Per pulire e rimuovere una sottoscrizione di Servizi di comunicazione, è possibile eliminare la risorsa o il gruppo di risorse. Eliminando il gruppo di risorse vengono eliminate anche tutte le altre risorse associate. Vedere altre informazioni sulla pulizia delle risorse.
Passaggi successivi
Per altre informazioni, vedere gli articoli seguenti:
- Scaricare le app di esempio di registrazione delle chiamate Java, Python e JavaScript
- Altre informazioni sulla registrazione delle chiamate
- Altre informazioni sull'automazione delle chiamate