Skip to content

Commit cc7d4c7

Browse files
committed
GA3 BYOS updates.
1 parent dcef022 commit cc7d4c7

File tree

9 files changed

+144
-17
lines changed

9 files changed

+144
-17
lines changed

articles/communication-services/concepts/call-automation/call-recording/bring-your-own-storage.md

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ ms.service: azure-communication-services
1313

1414
# Bring your own Azure storage overview
1515

16-
[!INCLUDE [Private Preview Disclaimer](../../../../communication-services/includes/private-preview-include-section.md)]
17-
18-
1916
Bring Your Own Azure Storage for Call Recording allows you to specify an Azure blob storage account for storing call recording files. Bring your own Azure storage enables businesses to store their data in a way that meets their compliance requirements and business needs. For example, end-users could customize their own rules and access to the data, enabling them to store or delete content whenever they need it. Bring your own Azure Storage provides a simple and straightforward solution that eliminates the need for developers to invest time and resources in downloading and exporting files.
2017

2118
The same Azure Communication Services Call Recording APIs are used to export recordings to your Azure Blob Storage Container. While starting recording for a call, specify the container path where the recording needs to be exported. Upon recording completion, Azure Communication Services automatically fetches and uploads your recording to your storage.
@@ -29,7 +26,7 @@ Bring your own Azure storage uses [Azure Managed Identities](/entra/identity/man
2926

3027
## Known issues
3128

32-
- Azure Communication Services will also store your files in a built-in storage for 48 hours even if the exporting is successful.
29+
- Azure Communication Services will also store your files in a built-in storage for 24 hours even if the exporting is successful.
3330
- Randomly, recording files are duplicated during the exporting process. Make sure you delete the duplicated file to avoid extra storage costs in your storage account.
3431

3532

articles/communication-services/concepts/voice-video-calling/call-recording.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ For example, you can record 1:1 or 1:N audio and video calls:
2525
![Diagram showing a call that it's being recorded.](../media/call-recording-client.png)
2626

2727
But also, you can use Call Recording to record complex PSTN or VoIP inbound and outbound calling workflows managed by [Call Automation](../call-automation/call-automation.md).
28-
Regardless of how you established the call, Call Recording allows you to produce mixed or unmixed media files that are stored for 48 hours on a built-in temporary storage. You can retrieve the files and take them to the long-term storage solution of your choice. Call Recording supports all Azure Communication Services data regions.
28+
Regardless of how you established the call, Call Recording allows you to produce mixed or unmixed media files that are stored for 24 hours on a built-in temporary storage. You can retrieve the files , move it your own Azure Blob Store [Bring Your Own Storage](../../quickstarts\call-automation\call-recording\bring-your-own-storage.md) or a storage solution of your choice. Call Recording supports all Azure Communication Services data regions.
2929

3030

3131
![Diagram showing call recording architecture.](../media/call-recording-with-call-automation.png)
@@ -70,7 +70,7 @@ A `recordingId` is returned when recording is started, which is then used for fo
7070
Call Recording use [Azure Event Grid](../../../event-grid/event-schema-communication-services.md) to provide you with notifications related to media and metadata.
7171

7272
> [!NOTE]
73-
> Azure Communication Services provides short term media storage for recordings. **Recordings will be available to download for 48 hours.** After 48 hours, recordings will no longer be available.
73+
> Azure Communication Services provides short term media storage for recordings. **Recordings will be available to download for 24 hours.** After 24 hours, recordings will no longer be available.
7474
7575

7676
An Event Grid notification `Microsoft.Communication.RecordingFileStatusUpdated` is published when a recording is ready for retrieval, typically a few minutes after the recording process has completed (for example, meeting ended, recording stopped). Recording event notifications include `contentLocation` and `metadataLocation`, which are used to retrieve both recorded media and a recording metadata file.
52.4 KB
Loading

articles/communication-services/quickstarts/call-automation/call-recording/bring-your-own-storage.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,18 @@ Refer to this example of the event schema.
101101
"eventTime": "string" // ISO 8601 date time for when the event was created
102102
}
103103
```
104+
### Folder Structure for Call Recording
105+
106+
Recordings are stored in the following format as shown in the diagram.
107+
/YYYYMMDD/
108+
callId/
109+
8+ recordingId(guid)/
110+
0-acsmetadata.documentId.json
111+
0- audiomp3.documentId.mp3
112+
1-acsmetadata.documentId.json
113+
1-audiomp3.documentId.mp3
114+
115+
![Diagram showing a Call Recording Folder structure](../media/call-recording-folder.png)
104116

105117
## Next steps
106118

articles/communication-services/quickstarts/voice-video-calling/get-started-call-recording.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
2-
ms.author: dbasantes
3-
title: Azure Communication Services Call Recording refreshed API quickstart
2+
ms.author: rahulva
3+
title: Azure Communication Services Call Recording API quickstart
44
titleSuffix: An Azure Communication Services document
5-
description: Public Preview quickstart for Call Recording APIs
5+
description: Quickstart for Call Recording APIs
66
author: dbasantes
77
services: azure-communication-services
88
ms.date: 06/12/2023

articles/communication-services/quickstarts/voice-video-calling/includes/call-recording-samples/call-recording-csharp.md

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,37 @@ StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCal
6262
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
6363
.StartAsync(recordingOptions);
6464
```
65+
### 2.1. Start Recording - Bring Your Own Azure Blob Store
66+
Start Recording with your own Azure Blob Storage defined to store the recording file once recording is complete.
6567

66-
### 2.1. Only for Unmixed - Specify a user on channel 0
68+
```csharp
69+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
70+
{
71+
RecordingContent = RecordingContent.Audio,
72+
RecordingChannel = RecordingChannel.Unmixed,
73+
RecordingFormat = RecordingFormat.Wav,
74+
RecordingStateCallbackUri = new Uri("<CallbackUri>"),
75+
RecordingStorage = RecordingStorage.CreateAzureBlobContainerRecordingStorage(new Uri("<YOUR_STORAGE_CONTAINER_URL>"))
76+
};
77+
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
78+
.StartAsync(recordingOptions);
79+
```
80+
## 2.2. Start recording session with Pause mode enabled using 'StartAsync' API
81+
82+
```csharp
83+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<ServerCallId>"))
84+
{
85+
RecordingContent = RecordingContent.Audio,
86+
RecordingChannel = RecordingChannel.Unmixed,
87+
RecordingFormat = RecordingFormat.Wav,
88+
PauseOnStart = true,
89+
RecordingStateCallbackUri = new Uri("<CallbackUri>");
90+
};
91+
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording()
92+
.StartAsync(recordingOptions);
93+
```
94+
95+
### 2.3. Only for Unmixed - Specify a user on channel 0
6796
To produce unmixed audio recording files, you can use the `AudioChannelParticipantOrdering` functionality to specify which user you want to record on channel 0. The rest of the participants are assigned to a channel as they speak. If you use `RecordingChannel.Unmixed` but don't use `AudioChannelParticipantOrdering`, Call Recording assigns channel 0 to the first participant speaking.
6897

6998
```csharp
@@ -79,7 +108,7 @@ StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCal
79108
Response<RecordingStateResult> response = await callAutomationClient.GetCallRecording().StartAsync(recordingOptions);
80109
```
81110

82-
### 2.2. Only for Unmixed - Specify channel affinity
111+
### 2.4. Only for Unmixed - Specify channel affinity
83112

84113
```csharp
85114
var channelAffinity = new ChannelAffinity(new CommunicationUserIdentifier("<ACS_USER_MRI>")) { Channel = 0};

articles/communication-services/quickstarts/voice-video-calling/includes/call-recording-samples/call-recording-java.md

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,37 @@ Response<RecordingStateResult> response = callAutomationClient.getCallRecording(
6666

6767
```
6868

69-
### 2.1. Only for Unmixed - Specify a user on channel 0
69+
### 2.1. Start Recording - Bring Your Own Azure Blob Store
70+
Start Recording session with your own Azure Blob Storage to store the recording file once recording is complete.
71+
72+
```java
73+
StartRecordingOptions recordingOptions = new StartRecordingOptions(callLocator)
74+
.setRecordingChannel(RecordingChannel.MIXED)
75+
.setRecordingContent(RecordingContent.AUDIO_VIDEO)
76+
.setRecordingFormat(RecordingFormat.MP4)
77+
.setRecordingStorage(new AzureBlobContainerRecordingStorage("<YOUR_STORAGE_CONTAINER_URL>"));
78+
79+
// //start recording
80+
RecordingStateResult result = callRecording.start(recordingOptions);
81+
```
82+
83+
### 2.2. Start recording session with Pause mode enabled using 'StartAsync' API
84+
85+
```java
86+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
87+
.setRecordingChannel(RecordingChannel.UNMIXED)
88+
.setRecordingFormat(RecordingFormat.WAV)
89+
.setRecordingContent(RecordingContent.AUDIO)
90+
.setRecordingStateCallbackUrl("<recordingStateCallbackUrl>")
91+
.setPauseOnStart(true)
92+
.setAudioChannelParticipantOrdering(List.of(new CommunicationUserIdentifier("<participantMri>")));
93+
94+
Response<RecordingStateResult> response = callAutomationClient.getCallRecording()
95+
.startWithResponse(recordingOptions, null);
96+
97+
```
98+
99+
### 2.3. Only for Unmixed - Specify a user on channel 0
70100
To produce unmixed audio recording files, you can use the `AudioChannelParticipantOrdering` functionality to specify which user you want to record on channel 0. The rest of the participants will be assigned to a channel as they speak. If you use `RecordingChannel.Unmixed` but don't use `AudioChannelParticipantOrdering`, Call Recording will assign channel 0 to the first participant speaking.
71101

72102
```java
@@ -82,7 +112,7 @@ Response<RecordingStateResult> response = callAutomationClient.getCallRecording(
82112

83113
```
84114

85-
### 2.2. Only for Unmixed - Specify channel affinity
115+
### 2.4. Only for Unmixed - Specify channel affinity
86116
```java
87117
ChannelAffinity channelAffinity = new ChannelAffinity()
88118
.setParticipant(new PhoneNumberIdentifier("RECORDING_ID"))

articles/communication-services/quickstarts/voice-video-calling/includes/call-recording-samples/call-recording-javascript.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,44 @@ var options: StartRecordingOptions =
6565
var response = await callAutomationClient.getCallRecording().start(options);
6666
```
6767

68-
### 2.1. Only for Unmixed - Specify a user on channel 0
68+
### 2.1. Start Recording - Bring Your Own Azure Blob Store
69+
Start Recording with your own Azure Blob Storage defined to store the recording file once recording is complete.
70+
71+
```javascript
72+
const recordingStorageKind: RecordingStorageKind = "azureBlobStorage"
73+
const recordingStorage: RecordingStorage = {
74+
recordingStorageKind: recordingStorageKind,
75+
recordingDestinationContainerUrl: "<YOUR_STORAGE_CONTAINER_URL>"
76+
}
77+
var options: StartRecordingOptions = {
78+
callLocator: callLocator,
79+
recordingContent: "audio",
80+
recordingChannel:"unmixed",
81+
recordingFormat: "wav",
82+
recordingStateCallbackEndpointUrl: "<CallbackUri>",
83+
recordingStorage: recordingStorage
84+
};
85+
var response = await callAutomationClient.getCallRecording().start(options);
86+
```
87+
## 2.2. Start recording session with Pause mode enabled using 'StartAsync' API
88+
89+
```javascript
90+
var locator: CallLocator = { id: "<ServerCallId>", kind: "serverCallLocator" };
91+
92+
var options: StartRecordingOptions =
93+
{
94+
callLocator: locator,
95+
recordingContent: "audio",
96+
recordingChannel:"unmixed",
97+
recordingFormat: "wav",
98+
pauseOnStart: true
99+
recordingStateCallbackEndpointUrl: "<CallbackUri>",
100+
audioChannelParticipantOrdering:[{communicationUserId: "<ACS_USER_MRI>"}]
101+
};
102+
var response = await callAutomationClient.getCallRecording().start(options);
103+
```
104+
105+
### 2.3. Only for Unmixed - Specify a user on channel 0
69106
To produce unmixed audio recording files, you can use the `AudioChannelParticipantOrdering` functionality to specify which user you want to record on channel 0. The rest of the participants will be assigned to a channel as they speak. If you use `RecordingChannel.Unmixed` but don't use `AudioChannelParticipantOrdering`, Call Recording will assign channel 0 to the first participant speaking.
70107

71108
```javascript
@@ -83,7 +120,7 @@ var options: StartRecordingOptions =
83120
var response = await callAutomationClient.getCallRecording().start(options);
84121
```
85122

86-
### 2.2. Only for Unmixed - Specify channel affinity
123+
### 2.4. Only for Unmixed - Specify channel affinity
87124

88125
```javascript
89126
var options: StartRecordingOptions =

articles/communication-services/quickstarts/voice-video-calling/includes/call-recording-samples/call-recording-python.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,29 @@ response = call_automation_client.start_recording(call_locator=ServerCallLocator
5959
recording_state_callback_url = "<CallbackUri>")
6060
```
6161

62-
### 2.1. Only for Unmixed - Specify a user on channel 0
62+
### 2.1. Start Recording - Bring Your Own Azure Blob Store
63+
Start Recording with your own Azure Blob Storage defined to store the recording file once recording is complete.
64+
65+
```python
66+
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
67+
recording_content_type = RecordingContent.Audio,
68+
recording_channel_type = RecordingChannel.Unmixed,
69+
recording_format_type = RecordingFormat.Wav,
70+
recording_state_callback_url = "<CallbackUri>",
71+
recording_storage = AzureBlobContainerRecordingStorage(container_url="<YOUR_STORAGE_CONTAINER_URL>"))
72+
```
73+
## 2.2. Start recording session with Pause mode enabled using 'StartAsync' API
74+
75+
```python
76+
response = call_automation_client.start_recording(call_locator=ServerCallLocator(server_call_id),
77+
recording_content_type = RecordingContent.Audio,
78+
recording_channel_type = RecordingChannel.Unmixed,
79+
recording_format_type = RecordingFormat.Wav,
80+
pause_on_start = true,
81+
recording_state_callback_url = "<CallbackUri>")
82+
```
83+
84+
### 2.3. Only for Unmixed - Specify a user on channel 0
6385
To produce unmixed audio recording files, you can use the `AudioChannelParticipantOrdering` functionality to specify which user you want to record on channel 0. The rest of the participants will be assigned to a channel as they speak. If you use `RecordingChannel.Unmixed` but don't use `AudioChannelParticipantOrdering`, Call Recording will assign channel 0 to the first participant speaking.
6486

6587
```python
@@ -71,7 +93,7 @@ response = call_automation_client.start_recording(call_locator=ServerCallLocato
7193
audio_channel_participant_ordering=[CommunicationUserIdentifier(id="<ACS_USER_MRI>")])
7294
```
7395

74-
### 2.2. Only for Unmixed - Specify channel affinity
96+
### 2.4. Only for Unmixed - Specify channel affinity
7597

7698
```python
7799
_channel_affinity = ChannelAffinity(target_participant=CommunicationUserIdentifier("<ACS_USER_MRI>"), channel=0)

0 commit comments

Comments
 (0)