Skip to content

Commit 840a620

Browse files
committed
Adding call recording BYOS private preview to call automation
1 parent 3718cc3 commit 840a620

File tree

10 files changed

+166
-7
lines changed

10 files changed

+166
-7
lines changed

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

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ description: Learn about the Azure Communication Services BYOS.
55
author: dbasantes
66
manager: seaen
77
services: azure-communication-services
8-
98
ms.author: dbasantes
109
ms.date: 03/16/2023
1110
ms.topic: conceptual
@@ -14,26 +13,29 @@ ms.service: azure-communication-services
1413

1514
# Bring your own storage (BYOS) overview
1615

17-
[!INCLUDE [Private Preview Disclaimer](../includes/private-preview-include-section.md)]
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.
1820

19-
Bring Your Own Storage (BYOS) for Call Recording allows you to specify an Azure blob storage account for storing Call Recording files. Now with BYOS, you can manage your Call Recording files in a flexible and customizable way, eliminating the need to store your files in a built-in Azure Communication Services temporary storage and manually download and upload them to a permanent one.
21+
Are the same Azure Communication Services Call Recording APIs that you can use to export recordings to your Azure Blob Storage Container. While starting recording for a call, simply specify the container path where the recording needs to be exported. Upon recording completion, Azure Communication Services will automatically fetch and upload your recording to your storage.
2022

21-
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.
23+
![Diagram showing a call recording being automatically exported to storage container](../media/byos-concept.png)
2224

2325
## Azure Managed Identities
2426

25-
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. This feature ensures that the data is accessed only by authorized personnel.
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.
2628

2729

2830
## Known Issues
2931

30-
- When using BYOS for Call Recording in Private Preview, your files will be stored in a built-in storage for 48 hours after the exporting process to your blob storage.
32+
- When using BYOS for Call Recording in Private Preview, after exporting your files, those will be stored also in a built-in storage for 48 hours.
3133
- Randomly you will see duplicated recording files being exported to your blob storage when using BYOS. Please make sure you delete the duplicated file to avoid extra storage costs in your storage account.
3234

3335

3436
## Next steps
3537
For more information, see the following articles:
36-
- Learn more about BYOS, check out the [BYOS Quickstart](../../quickstarts/voice-video-calling/get-started-call-recording.md).
38+
- Learn more about BYOS, check out the [BYOS Quickstart](../../../quickstarts/call-automation/call-recording/bring-your-own-storage.md).
3739
- Learn more about Call recording, check out the [Call Recording Quickstart](../quickstarts/voice-video-calling/get-started-call-recording.md).
3840
- Learn more about [Call Automation](https://learn.microsoft.com/azure/communication-services/quickstarts/voice-video-calling/callflows-for-customer-interactions?pivots=programming-language-csharp).
3941

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: call recording
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'll be able to see the Object principal ID of the newly created identity (shown below)
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 will see the newly added role assignment in the *"Azure role assignment"* window (shown below).
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 should be used to notify your services when the recorded media is ready and have been exported to the external storage location.
69+
70+
Below is an 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](https://learn.microsoft.com/azure/communication-services/concepts/voice-video-calling/call-automation)
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
308 KB
Loading
143 KB
Loading
110 KB
Loading
142 KB
Loading

0 commit comments

Comments
 (0)