Skip to content

Commit d7fcbe6

Browse files
Merge pull request #231236 from dbasantes/main
Create bring-your-own-storage.md
2 parents 7aa1ed2 + f100d72 commit d7fcbe6

File tree

12 files changed

+203
-52
lines changed

12 files changed

+203
-52
lines changed

.openpublishing.redirection.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22455,6 +22455,11 @@
2245522455
"source_path": "articles/batch/high-availability-disaster-recovery.md",
2245622456
"redirect_URL": "/azure/reliability/reliability-batch",
2245722457
"redirect_document_id": false
22458+
},
22459+
{
22460+
"source_path_from_root": "/articles/communication-services/concepts/bring-your-own-storage.md",
22461+
"redirect_url": "/azure/communication-services/concepts/call-automation/call-recording/bring-your-own-storage",
22462+
"redirect_document_id": false
2245822463
}
2245922464

2246022465
]

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

Lines changed: 0 additions & 52 deletions
This file was deleted.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: Azure Communication Services BYOS overview
3+
titleSuffix: An Azure Communication Services concept document
4+
description: Learn about the Azure Communication Services BYOS.
5+
author: dbasantes
6+
manager: seaen
7+
services: azure-communication-services
8+
ms.author: dbasantes
9+
ms.date: 03/16/2023
10+
ms.topic: conceptual
11+
ms.service: azure-communication-services
12+
---
13+
14+
# Bring your own storage (BYOS) overview
15+
16+
[!INCLUDE [Private Preview Disclaimer](../../../../communication-services/includes/private-preview-include-section.md)]
17+
18+
19+
Bring Your Own Storage (BYOS) for Call Recording allows you to specify an Azure blob storage account for storing call recording files. BYOS 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. BYOS provides a simple and straightforward solution that eliminates the need for developers to invest time and resources in downloading and exporting files.
20+
21+
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.
22+
23+
![Diagram showing a call recording being automatically exported to storage container](../media/byos-concept.png)
24+
25+
## Azure Managed Identities
26+
27+
BYOS uses [Azure Managed Identities](../../../../active-directory/managed-identities-azure-resources/overview.md) to access user-owned resources securely. Azure Managed Identities provides an identity for the application to use when it needs to access Azure resources, eliminating the need for developers to manage credentials.
28+
29+
30+
## Known issues
31+
32+
- Azure Communication Services will also store your files in a built-in storage for 48 hours even if the exporting with BYOS is successful.
33+
- Randomly, recording files are duplicated during the exporting process when using BYOS. Make sure you delete the duplicated file to avoid extra storage costs in your storage account.
34+
35+
36+
## Next steps
37+
For more information, see the following articles:
38+
- Learn more about BYOS, check out the [BYOS Quickstart](../../../quickstarts/call-automation/call-recording/bring-your-own-storage.md).
39+
- Learn more about Call recording, check out the [Call Recording Quickstart](../../../quickstarts/voice-video-calling/get-started-call-recording.md).
40+
- Learn more about [Call Automation](../../../quickstarts/call-automation/callflows-for-customer-interactions.md).
41+
96.2 KB
Loading
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
---
2+
ms.author: dbasantes
3+
title: Azure Communication Services Call Recording Bring Your Own Storage
4+
titleSuffix: An Azure Communication Services document
5+
description: Private Preview quickstart for Bring your own storage
6+
author: dbasantes
7+
services: azure-communication-services
8+
ms.date: 03/17/2023
9+
ms.topic: quickstart
10+
ms.service: azure-communication-services
11+
ms.subservice: calling
12+
zone_pivot_groups: acs-csharp-java
13+
ms.custom: mode-api
14+
---
15+
# Call recording: Bring your own storage quickstart
16+
17+
[!INCLUDE [Private Preview](../../../includes/private-preview-include-section.md)]
18+
19+
This quickstart gets you started with BYOS (Bring your own storage) for Call Recording. To start using BYOS, make sure you're familiar with the [Call Recording APIs](../../voice-video-calling/get-started-call-recording.md).
20+
21+
## Pre-requisite: Setting up Managed Identity and RBAC role assignments
22+
23+
### 1. Enable system assigned managed identity for Azure Communication Services
24+
25+
![Diagram showing a communication service resource with managed identity disabled](../media/byos-managed-identity-1.png)
26+
27+
1. Open your Azure Communication Services resource. Navigate to *Identity* on the left.
28+
2. System Assigned Managed Identity is disabled by default. Enable it and click of *Save*
29+
3. Once completed, you're able to see the Object principal ID of the newly created identity.
30+
31+
![Diagram showing a communication service resource with managed identity enabled](../media/byos-managed-identity-2.png)
32+
33+
4. Now that identity has been successfully created, click on *Azure role assignments* to start adding role assignments.
34+
35+
### 2. Add role assignment
36+
37+
1. Click on *"Add role assignment"*
38+
39+
![Diagram showing a communication service resource managed identity adding role assignment](../media/role-assignment-1.png)
40+
41+
2. On the *"Add role assignment"* panel, select the following values
42+
1. Scope: **Storage**
43+
2. Subscription: **Choose your subscription**
44+
3. Resource: **Choose your storage account**
45+
4. Role: **Azure Communication Services needs *"Storage Blob Data Contributor"* to be able to write to your storage account.**
46+
47+
![Diagram showing a communication service resource managed identity adding role assignment details](../media/role-assignment-2.png)
48+
49+
3. Click on *"Save"*.
50+
4. Once completed, you see the newly added role assignment in the *"Azure role assignment"* window.
51+
52+
![Diagram showing a communication service resource managed identity role assignment success](../media/role-assignment-3.png)
53+
54+
## Start recording session with external storage specified
55+
56+
Use the server call ID received during initiation of the call.
57+
58+
::: zone pivot="programming-language-csharp"
59+
[!INCLUDE [Test Call Recording BYOS with C#](../includes/recording-byos-private-csharp.md)]
60+
::: zone-end
61+
62+
::: zone pivot="programming-language-java"
63+
[!INCLUDE [Test Call Recording BYOS with Java](../includes/recording-byos-private-java.md)]
64+
::: zone-end
65+
66+
### Notification on successful export
67+
68+
Use an [Azure Event Grid](../../../../event-grid/overview.md) web hook, or other triggered action, to notify your services when the recorded media is ready and have been exported to the external storage location.
69+
70+
Refer to this example of the event schema.
71+
72+
```JSON
73+
{
74+
"id": "string", // Unique guid for event
75+
"topic": "string", // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
76+
"subject": "string", // /recording/call/{call-id}/serverCallId/{serverCallId}
77+
"data": {
78+
"storageType": "string", // acsstorage, blobstorage etc.
79+
"recordingId": "string", // unique id for recording
80+
"recordingStorageInfo": {
81+
"recordingChunks": [
82+
{
83+
"documentId": "string", // Document id for for the recording chunk
84+
"contentLocation": "string", //Azure Communication Services URL where the content is located
85+
"metadataLocation": "string", // Azure Communication Services URL where the metadata for this chunk is located
86+
"deleteLocation": "string", // Azure Communication Services URL to use to delete all content, including recording and metadata.
87+
"index": "int", // Index providing ordering for this chunk in the entire recording
88+
"endReason": "string", // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
89+
}
90+
]
91+
},
92+
"recordingStartTime": "string", // ISO 8601 date time for the start of the recording
93+
"recordingDurationMs": "int", // Duration of recording in milliseconds
94+
"sessionEndReason": "string" // Reason for call ending: "CallEnded", "InitiatorLeft”, etc.
95+
},
96+
"eventType": "string", // "Microsoft.Communication.RecordingFileStatusUpdated"
97+
"dataVersion": "string", // "1.0"
98+
"metadataVersion": "string", // "1"
99+
"eventTime": "string" // ISO 8601 date time for when the event was created
100+
}
101+
```
102+
103+
## Next steps
104+
105+
For more information, see the following articles:
106+
107+
- Download our [Java](https://github.com/Azure-Samples/communication-services-java-quickstarts/tree/main/ServerRecording) and [.NET](https://github.com/Azure-Samples/communication-services-dotnet-quickstarts/tree/main/ServerRecording) call recording sample apps
108+
- Learn more about [Call Recording](../../../concepts/voice-video-calling/call-recording.md)
109+
- Learn more about [Call Automation](../../../concepts/call-automation/call-automation.md)
110+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: include file
3+
description: C# call recording bring your own storage
4+
services: azure-communication-services
5+
author: dbasantes
6+
ms.service: azure-communication-services
7+
ms.subservice: azure-communication-services
8+
ms.date: 03/17/2023
9+
ms.topic: include
10+
ms.custom: include file
11+
ms.author: dbasantes
12+
---
13+
14+
### Using Azure blob storage for external storage
15+
16+
```csharp
17+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
18+
{
19+
//...
20+
ExternalStorage = new BlobStorage(new Uri("<Insert Container / Blob Uri>"))
21+
};
22+
23+
Response<RecordingStateResult> startRecordingWithResponse = await callAutomationClient.GetCallRecording()
24+
.StartRecordingAsync(options: recordingOptions);
25+
```
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
title: include file
3+
description: java call recording bring your own storage
4+
services: azure-communication-services
5+
author: dbasantes
6+
ms.service: azure-communication-services
7+
ms.subservice: azure-communication-services
8+
ms.date: 03/17/2023
9+
ms.topic: include
10+
ms.custom: include file
11+
ms.author: dbasantes
12+
---
13+
14+
## Using Azure blob storage for external storage
15+
16+
```java
17+
StartRecordingOptions recordingOptions = new StartRecordingOptions(new ServerCallLocator("<serverCallId>"))
18+
.setExternalStorage(new BlobStorage("<Insert Container / Blob Uri>"));
19+
20+
Response<StartCallRecordingResult> response = callAutomationClient.getCallRecording()
21+
.startRecordingWithResponse(recordingOptions, null);
22+
```
297 KB
Loading
239 KB
Loading
54 KB
Loading

0 commit comments

Comments
 (0)