Rychlé zprovoznění nahrávání hovorů
Tento rychlý start vám pomůže začít s nahráváním hovorů pro hlasové hovory a videohovory. Abyste mohli začít používat rozhraní API pro záznam volání, musíte mít zavedený hovor. Ujistěte se, že znáte klientskou sadu SDK pro volání a automatizaci volání , abyste mohli vytvořit prostředí pro volání koncového uživatele.
Příklad kódu
Ukázkovou aplikaci si můžete stáhnout z GitHubu.
Požadavky
- Potřebujete účet Azure s aktivním předplatným.
- Nasaďte prostředek komunikační služby. Poznamenejte si připojovací řetězec prostředku.
- Přihlaste se k odběru událostí prostřednictvím Azure Event Grid.
- Stažení sady .NET SDK
Než začnete
Rozhraní API pro nahrávání hovorů používají k zahájení nahrávání výhradně metodu serverCallId
. Existuje několik metod, které můžete použít k načtení serverCallId
v závislosti na vašem scénáři:
Scénáře automatizace volání
- Při použití automatizace volání máte dvě možnosti, jak získat
serverCallId
:- Po vytvoření
serverCallId
volání je vrácena jako vlastnostCallConnected
události po navázání volání. Zjistěte, jak získat událost CallConnected ze sady SDK pro automatizaci volání. - Jakmile přijmete volání nebo je volání vytvořeno
serverCallId
, vrátí se jako vlastnostAnswerCallResult
odpovědí rozhraní API neboCreateCallResult
v uvedeném pořadí.
- Po vytvoření
Scénáře volání sady SDK
- Při použití sady SDK pro volání klienta můžete načíst
serverCallId
metodugetServerCallId
ve volání . V tomto příkladu se dozvíte, jak získat serverCallId ze sady SDK pro volání klienta.
Pojďme začít několika jednoduchými kroky!
1. Vytvoření klienta automatizace volání
Rozhraní API pro záznam hovorů jsou součástí knihoven Azure Communication Services Call Automation. Proto je nutné vytvořit klienta automatizace volání.
K vytvoření klienta automatizace volání použijete připojovací řetězec služby Communication Services a předáte ho objektu CallAutomationClient
.
CallAutomationClient callAutomationClient = new CallAutomationClient("<ACSConnectionString>");
2. Spusťte záznam relace s možností StartRecordingOptions pomocí rozhraní API StartAsync.
Použijte přijatou serverCallId
během inicializace volání.
- RecordingContent se používá k předání typu obsahu záznamu. Použití zvuku
- RecordingChannel se používá k předání typu kanálu záznamu. Používejte smíšené nebo nemixované.
- RecordingFormat slouží k předání formátu nahrávky. Použijte 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. Pouze pro Nemixed – Zadejte uživatele v kanálu 0.
Pokud chcete vytvořit soubory s nemixovanými záznamy zvuku AudioChannelParticipantOrdering
, můžete pomocí funkce určit, kterého uživatele chcete nahrávat na kanálu 0. Zbývající účastníci se při mluve přiřazují ke kanálu. Pokud používáte RecordingChannel.Unmixed
, ale nepoužíváte AudioChannelParticipantOrdering
, přiřadí záznam hovoru kanál 0 prvnímu účastníkovi, který mluví.
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. Pouze pro nesměšené – Zadejte spřažení kanálů.
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);
Odpověď StartAsync
rozhraní API obsahuje recordingId
záznam relace.
3. Zastavení nahrávání relace pomocí rozhraní API StopAsync
Použijte přijatou recordingId
jako odpověď .StartAsync
var stopRecording = await callAutomationClient.GetCallRecording().StopAsync(recordingId);
4. Pozastavení relace nahrávání pomocí rozhraní API PauseAsync
Použijte přijatou recordingId
jako odpověď .StartAsync
var pauseRecording = await callAutomationClient.GetCallRecording ().PauseAsync(recordingId);
5. Obnovení záznamu pomocí rozhraní API ResumeAsync
Použijte přijatou recordingId
jako odpověď .StartAsync
var resumeRecording = await callAutomationClient.GetCallRecording().ResumeAsync(recordingId);
6. Stažení souboru záznamu pomocí rozhraní API DownloadToAsync
Použijte Azure Event Grid webhook nebo jiná aktivovaná akce by měla být použita k upozornění služeb, když je zaznamenané médium připravené ke stažení.
Oznámení Microsoft.Communication.RecordingFileStatusUpdated
Event Gridu se publikuje, když je nahrávka připravená k načtení, obvykle několik minut po dokončení procesu nahrávání (například ukončení schůzky, nahrávání se zastavilo). Oznámení o událostech záznamu zahrnují contentLocation
a metadataLocation
, které se používají k načtení nahraných médií i souboru metadat záznamu.
Příklad schématu událostí:
{
"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
}
Ke stažení zaznamenaných médií použijte DownloadToAsync
rozhraní API.
var recordingDownloadUri = new Uri(contentLocation);
var response = await callAutomationClient.GetCallRecording().DownloadToAsync(recordingDownloadUri, fileName);
Záznam downloadLocation
lze načíst z atributu contentLocation
recordingChunk
. DownloadToAsync
metoda stáhne obsah do zadaného názvu souboru.
7. Odstranění obsahu záznamu pomocí rozhraní API DeleteAsync
K odstranění obsahu záznamu (například nahraných médií nebo metadat) použijte DeleteAsync
rozhraní API.
var recordingDeleteUri = new Uri(deleteLocation);
var response = await callAutomationClient.GetCallRecording().DeleteAsync(recordingDeleteUri);
Příklad kódu
Ukázkovou aplikaci si můžete stáhnout z GitHubu.
Požadavky
- Potřebujete účet Azure s aktivním předplatným.
- Nasaďte prostředek komunikační služby. Poznamenejte si připojovací řetězec prostředku.
- Přihlaste se k odběru událostí prostřednictvím Azure Event Grid.
- Stažení sady Java SDK
Než začnete
Rozhraní API pro nahrávání hovorů používají k zahájení nahrávání výhradně metodu serverCallId
. Existuje několik metod, které můžete použít k načtení serverCallId
v závislosti na vašem scénáři:
Scénáře automatizace volání
- Při použití automatizace volání máte dvě možnosti, jak získat
serverCallId
:- Po vytvoření
serverCallId
volání je vrácena jako vlastnostCallConnected
události po navázání volání. Zjistěte, jak získat událost CallConnected ze sady SDK pro automatizaci volání. - Jakmile přijmete volání nebo je volání vytvořeno
serverCallId
, vrátí se jako vlastnostAnswerCallResult
odpovědí rozhraní API neboCreateCallResult
v uvedeném pořadí.
- Po vytvoření
Scénáře volání sady SDK
- Při použití sady SDK pro volání klienta můžete načíst
serverCallId
metodugetServerCallId
ve volání . V tomto příkladu se dozvíte, jak získat serverCallId ze sady SDK pro volání klienta.
Pojďme začít několika jednoduchými kroky!
1. Vytvoření klienta automatizace volání
Rozhraní API pro záznam hovorů jsou součástí knihoven Azure Communication Services Call Automation. Proto je nutné vytvořit klienta automatizace volání.
K vytvoření klienta automatizace volání použijete připojovací řetězec služby Communication Services a předáte ho objektu CallAutomationClient
.
CallAutomationClient callAutomationClient = new CallAutomationClientBuilder()
.connectionString("<acsConnectionString>")
.buildClient();
2. Spuštění záznamu relace s možností StartRecordingOptions pomocí rozhraní API startWithResponse
Použijte přijatou serverCallId
během inicializace volání.
- RecordingContent se používá k předání typu obsahu záznamu. Použití zvuku
- RecordingChannel se používá k předání typu kanálu záznamu. Používejte KOMBINACI NEBO NEXED.
- RecordingFormat slouží k předání formátu nahrávky. Použijte 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. Pouze pro Nemixed – Zadejte uživatele v kanálu 0.
Pokud chcete vytvořit soubory s nemixovanými záznamy zvuku AudioChannelParticipantOrdering
, můžete pomocí funkce určit, kterého uživatele chcete nahrávat na kanálu 0. Zbývající účastníci budou při mluvení přiřazeni ke kanálu. Pokud používáte RecordingChannel.Unmixed
, ale nepoužíváte AudioChannelParticipantOrdering
, funkce Nahrávání hovorů přiřadí kanál 0 prvnímu účastníkovi, který mluví.
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. Pouze pro Nemixované – Určení spřažení kanálu
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);
Odpověď startWithResponse
rozhraní API obsahuje recordingId
záznam relace.
3. Zastavení nahrávání relace pomocí rozhraní API stopWithResponse
Použijte přijatou recordingId
v odpovědi na startWithResponse
.
Response<Void> response = callAutomationClient.getCallRecording()
.stopWithResponse(response.getValue().getRecordingId(), null);
4. Pozastavení relace nahrávání pomocí rozhraní API pauseWithResponse
Použijte přijatou recordingId
v odpovědi na startWithResponse
.
Response<Void> response = callAutomationClient.getCallRecording()
.pauseWithResponse(response.getValue().getRecordingId(), null);
5. Obnovení relace nahrávání pomocí rozhraní API resumeWithResponse
Použijte přijatou recordingId
v odpovědi na startWithResponse
.
Response<Void> response = callAutomationClient.getCallRecording()
.resumeWithResponse(response.getValue().getRecordingId(), null);
6. Stáhněte soubor záznamu pomocí rozhraní API downloadToWithResponse.
Použijte Azure Event Grid web hook nebo jinou aktivovanou akci byste měli použít k upozornění služeb, když je nahrané médium připravené ke stažení.
Oznámení Microsoft.Communication.RecordingFileStatusUpdated
Event Gridu se publikuje, když je záznam připravený k načtení, obvykle několik minut po dokončení procesu nahrávání (například ukončení schůzky, zastavení nahrávání). Mezi oznámení o událostech záznamu patří contentLocation
a metadataLocation
, které slouží k načtení nahraných médií i souboru metadat záznamu.
Níže je uveden příklad schématu událostí.
{
"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
}
Ke stažení nahraných médií použijte downloadToWithResponse
metodu CallRecording
třídy. Níže jsou uvedené podporované parametry pro metodu downloadToWithResponse
:
contentLocation
: Azure Communication Services adresu URL, kde se obsah nachází.destinationPath
: Umístění souboru.parallelDownloadOptions
: Volitelný objekt ParallelDownloadOptions pro úpravu způsobu, jakým bude paralelní stahování fungovat.overwrite
: True pro přepsání souboru, pokud existuje.context
: Kontext představující kontext požadavku.
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);
Umístění obsahu a ID dokumentů pro soubory záznamu contentLocation
lze načíst z polí a documentId
pro každou recordingChunk
položku .
7. Odstraňte obsah záznamu pomocí rozhraní API deleteWithResponse.
Pro odstranění zaznamenaných médií použijte deleteWithResponse
metodu CallRecording
třídy. Níže jsou uvedené podporované parametry pro metodu deleteWithResponse
:
deleteLocation
: Azure Communication Services adresu URL, kde se nachází obsah, který se má odstranit.context
: Kontext představující kontext požadavku.
Response<Void> deleteResponse = callAutomationClient.getCallRecording().deleteWithResponse(deleteLocation, context);
Umístění pro odstranění záznamu je možné načíst z deleteLocation
pole události Event Gridu.
Příklad kódu
Ukázkovou aplikaci si můžete stáhnout z GitHubu.
Požadavky
- Potřebujete účet Azure s aktivním předplatným.
- Nasazení prostředku komunikační služby Poznamenejte si připojovací řetězec prostředku.
- Přihlaste se k odběru událostí prostřednictvím Azure Event Grid.
- Python 3.7+.
Než začnete
Rozhraní API pro volání záznamu serverCallId
používají výhradně k zahájení nahrávání. Existuje několik metod, které můžete použít k načtení serverCallId
v závislosti na vašem scénáři:
Scénáře automatizace volání
- Při použití automatizace volání máte dvě možnosti, jak získat
serverCallId
:- Po vytvoření
serverCallId
volání se po navázání volání vrátí jako vlastnostCallConnected
události. Zjistěte, jak získat událost CallConnected ze sady SDK pro automatizaci volání. - Jakmile přijmete hovor nebo se hovor vytvoří,
serverCallId
vrátí se jako vlastnostAnswerCallResult
odpovědí rozhraní API neboCreateCallResult
.
- Po vytvoření
Scénáře volání sady SDK
- Při použití sady SDK pro volání klienta můžete načíst
serverCallId
proměnnouserver_call_id
při volání. V tomto příkladu se dozvíte, jak získat serverCallId ze sady SDK volajícího klienta.
Pojďme začít několika jednoduchými kroky!
1. Vytvoření klienta automatizace volání
Rozhraní API pro nahrávání hovorů jsou součástí knihoven automatizace volání Azure Communication Services. Proto je nutné vytvořit klienta automatizace volání.
Pokud chcete vytvořit klienta automatizace volání, použijete připojovací řetězec komunikačních služeb a předáte ho objektu CallAutomationClient
.
call_automation_client = CallAutomationClient.from_connection_string("<ACSConnectionString>")
2. Spuštění záznamu relace start_recording ROZHRANÍ API
serverCallId
Během inicializace hovoru použijte přijatou metodu .
- RecordingContent se používá k předání typu obsahu záznamu. Použití zvuku
- RecordingChannel slouží k předání typu kanálu záznamu. Používejte smíšené nebo nemixované.
- RecordingFormat slouží k předání formátu nahrávky. Použijte 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. Pouze pro Nemixed – Určení uživatele na kanálu 0
Pokud chcete vytvořit soubory s nemixovaným zvukovým záznamem AudioChannelParticipantOrdering
, můžete pomocí této funkce určit, kterého uživatele chcete nahrávat na kanálu 0. Zbývající účastníci budou přiřazeni ke kanálu, když budou mluvit. Pokud použijete RecordingChannel.Unmixed
, ale nepoužíváte AudioChannelParticipantOrdering
, přiřadí záznam hovoru kanálu 0 prvnímu účastníkovi, který promluví.
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. Pouze pro Nemixované – Určení spřažení kanálu
_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])
Odpověď StartAsync
rozhraní API obsahuje recordingId
záznam relace.
3. Zastavení nahrávání relace pomocí rozhraní API stop_recording
Použijte přijatou recording_id
v odpovědi na start_recording
.
stop_recording = call_automation_client.stop_recording(recording_id = recording_id)
4. Pozastavení relace nahrávání pomocí rozhraní API pause_recording
Použijte přijatou recording_id
v odpovědi na start_recording
.
pause_recording = call_automation_client.pause_recording(recording_id = recording_id)
5. Obnovení relace nahrávání pomocí rozhraní API resume_recording
Použijte přijatou recording_id
v odpovědi na start_recording
.
resume_recording = call_automation_client.resume_recording(recording_id = recording_id)
6. Stažení souboru záznamu pomocí rozhraní API download_recording
Použijte Azure Event Grid web hook nebo jinou aktivovanou akci byste měli použít k upozornění služeb, když je nahrané médium připravené ke stažení.
Oznámení Microsoft.Communication.RecordingFileStatusUpdated
Event Gridu se publikuje, když je záznam připravený k načtení, obvykle několik minut po dokončení procesu nahrávání (například ukončení schůzky, zastavení nahrávání). Mezi oznámení o událostech záznamu patří contentLocation
a metadataLocation
, které slouží k načtení nahraných médií i souboru metadat záznamu.
Níže je uveden příklad schématu událostí.
{
"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
}
Ke stažení nahraných médií použijte download_recording
rozhraní API.
response = recording_data = call_automation_client.download_recording(content_location)
with open("<file_name>", "wb") as binary_file:
binary_file.write(recording_data.read())
Záznam downloadLocation
lze načíst z atributu contentLocation
recordingChunk
. download_recording
metoda stažení obsahu do bajtů.
7. Odstranění obsahu záznamu pomocí rozhraní API delete_recording
Použití delete_recording
rozhraní API k odstranění obsahu záznamu (například nahraných médií, metadat)
response = call_automation_client.delete_recording(delete_location);
Příklad kódu
Ukázkovou aplikaci si můžete stáhnout z GitHubu.
Požadavky
- Potřebujete účet Azure s aktivním předplatným.
- Nasazení prostředku komunikační služby Poznamenejte si připojovací řetězec prostředku.
- Přihlaste se k odběru událostí prostřednictvím Azure Event Grid.
- Node.js Verze Active LTS a Maintenance LTS (doporučeno 8.11.1 a 10.14.1)
Než začnete
Rozhraní API pro volání záznamu serverCallId
používají výhradně k zahájení nahrávání. Existuje několik metod, které můžete použít k načtení serverCallId
v závislosti na vašem scénáři:
Scénáře automatizace volání
- Při použití automatizace volání máte dvě možnosti, jak získat
serverCallId
:- Po vytvoření
serverCallId
volání se po navázání volání vrátí jako vlastnostCallConnected
události. Zjistěte, jak získat událost CallConnected ze sady SDK pro automatizaci volání. - Jakmile přijmete hovor nebo se hovor vytvoří,
serverCallId
vrátí se jako vlastnostAnswerCallResult
odpovědí rozhraní API neboCreateCallResult
.
- Po vytvoření
Scénáře volání sady SDK
- Při použití sady SDK pro volání klienta můžete načíst
serverCallId
metodugetServerCallId
ve volání . V tomto příkladu se dozvíte, jak získat serverCallId ze sady SDK pro volání klienta.
Pojďme začít několika jednoduchými kroky!
1. Vytvoření klienta automatizace volání
Rozhraní API pro záznam hovorů jsou součástí knihoven Azure Communication Services Call Automation. Proto je nutné vytvořit klienta automatizace volání.
K vytvoření klienta automatizace volání použijete připojovací řetězec služby Communication Services a předáte ho objektu CallAutomationClient
.
const callAutomationClient = new CallAutomationClient.CallAutomationClient("<ACSConnectionString>");
2. Spusťte záznam relace s možností StartRecordingOptions pomocí rozhraní API StartAsync.
Použijte přijatou serverCallId
během inicializace volání.
- RecordingContent se používá k předání typu obsahu záznamu. Použití zvuku
- RecordingChannel se používá k předání typu kanálu záznamu. Používejte smíšené nebo nemixované.
- RecordingFormat slouží k předání formátu nahrávky. Použijte 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. Pouze pro Nemixed – Zadejte uživatele v kanálu 0.
Pokud chcete vytvořit soubory s nemixovanými záznamy zvuku AudioChannelParticipantOrdering
, můžete pomocí funkce určit, kterého uživatele chcete nahrávat na kanálu 0. Zbývající účastníci budou při mluvení přiřazeni ke kanálu. Pokud používáte RecordingChannel.Unmixed
, ale nepoužíváte AudioChannelParticipantOrdering
, funkce Nahrávání hovorů přiřadí kanál 0 prvnímu účastníkovi, který mluví.
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. Pouze pro nesměšené – Zadejte spřažení kanálů.
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);
Odpověď StartAsync
rozhraní API obsahuje recordingId
záznam relace.
3. Zastavení nahrávání relace pomocí rozhraní API stop
Použijte přijatou recordingId
jako odpověď .start
var stopRecording = await callAutomationClient.getCallRecording().stop(recordingId);
4. Pozastavení relace záznamu pomocí rozhraní API pro pozastavení
Použijte přijatou recordingId
jako odpověď .start
var pauseRecording = await callAutomationClient.getCallRecording().pause(recordingId);
5. Obnovení záznamu pomocí rozhraní API ResumeAsync
Použijte přijatou recordingId
jako odpověď .start
var resumeRecording = await callAutomationClient.getCallRecording().resume(recordingId);
6. Stažení souboru záznamu pomocí rozhraní API DownloadToAsync
Použijte Azure Event Grid webhook nebo jiná aktivovaná akce by měla být použita k upozornění služeb, když je zaznamenané médium připravené ke stažení.
Oznámení Microsoft.Communication.RecordingFileStatusUpdated
Event Gridu se publikuje, když je nahrávka připravená k načtení, obvykle několik minut po dokončení procesu nahrávání (například ukončení schůzky, nahrávání se zastavilo). Oznámení o událostech záznamu zahrnují contentLocation
a metadataLocation
, které se používají k načtení nahraných médií i souboru metadat záznamu.
Níže je příklad schématu událostí.
{
"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
}
Ke stažení zaznamenaných médií použijte downloadToPath
rozhraní API.
var response = await callAutomationClient.getCallRecording().downloadToPath(contentLocation, fileName);
Záznam downloadLocation
lze načíst z atributu contentLocation
recordingChunk
. DownloadToAsync
metoda stáhnout obsah do zadaného názvu souboru.
7. Odstranění obsahu záznamu pomocí rozhraní API DeleteAsync
K odstranění obsahu záznamu (například nahraných médií nebo metadat) použijte delete
rozhraní API.
var response = await callAutomationClient.getCallRecording().delete(deleteLocation);
Vyčištění prostředků
Pokud chcete vyčistit a odebrat předplatné komunikačních služeb, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků se odstraní také všechny ostatní prostředky k ní přidružené. Přečtěte si další informace o čištění prostředků.
Další kroky
Další informace najdete v následujících článcích:
- Stáhněte si naše ukázkové aplikace pro nahrávání hovorů v Javě, Pythonu a JavaScriptu .
- Další informace o nahrávání hovorů
- Další informace o automatizaci volání