Calling Recording overview
Important
Functionality described in this document is currently in public preview. This preview version is provided without a service-level agreement, and it's not recommended for production workloads. Certain features might not be supported or might have constrained capabilities. For more information, see Supplemental Terms of Use for Microsoft Azure Previews.
Note
Call Recording is not enabled for Teams interoperability.
Call Recording provides a set of APIs to start, stop, pause and resume recording. These APIs can be accessed from server-side business logic or via events triggered by user actions. Recorded media output is in MP4 Audio+Video format, which is the same format that Teams uses to record media. Notifications related to media and metadata are emitted via Event Grid. Recordings are stored for 48 hours on built-in temporary storage for retrieval and movement to a long-term storage solution of choice. Call Recording supports all ACS data regions.

Media output types
Call recording currently supports mixed audio+video MP4 and mixed audio-only MP3/WAV output formats. The mixed audio+video output media matches meeting recordings produced via Microsoft Teams recording.
| Channel Type | Content Format | Video | Audio |
|---|---|---|---|
| audioVideo | mp4 | 1920x1080 8 FPS video of all participants in default tile arrangement | 16kHz mp4a mixed audio of all participants |
| audioOnly | mp3/wav | N/A | 16kHz mp3/wav mixed audio of all participants |
Run-time Control APIs
Run-time control APIs can be used to manage recording via internal business logic triggers, such as an application creating a group call and recording the conversation, or from a user-triggered action that tells the server application to start recording. Call Recording APIs are Out-of-Call APIs, using the serverCallId to initiate recording. When creating a call, a serverCallId is returned via the Microsoft.Communication.CallLegStateChanged event after a call has been established. The serverCallId can be found in the data.serverCallId field. See our Call Recording Quickstart Sample to learn about retrieving the serverCallId from the Calling Client SDK. A recordingOperationId is returned when recording is started, which is then used for follow-on operations like pause and resume.
| Operation | Operates On | Comments |
|---|---|---|
| Start Recording | serverCallId |
Returns recordingOperationId |
| Get Recording State | recordingOperationId |
Returns recordingState |
| Pause Recording | recordingOperationId |
Pausing and resuming call recording enables you to skip recording a portion of a call or meeting, and resume recording to a single file. |
| Resume Recording | recordingOperationId |
Resumes a Paused a recording operation. Content is included in the same file as content from prior to pausing. |
| Stop Recording | recordingOperationId |
Stops recording, and initiates final media processing for file download. |
Event Grid notifications
Azure Communication Services provides short term media storage for recordings. Export any recorded content you wish to preserve within 48 hours. After 48 hours, recordings will no longer be available.
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 (e.g. meeting ended, recording stopped). Recording event notifications include contentLocation and metadataLocation, which are used to retrieve both recorded media and a recording metadata file.
Notification Schema Reference
{
"id": string, // Unique guid for event
"topic": string, // Azure Communication Services resource id
"subject": string, // /recording/call/{call-id}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for retrieving from storage
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
"metadataLocation": <string>, // url of the metadata for this chunk
"contentLocation": <string> // url of the mp4, mp3, or wav for this chunk
}
]
},
"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
}
Regulatory and privacy concerns
Many countries and states have laws and regulations that apply to the recording of PSTN, voice, and video calls, which often require that users consent to the recording of their communications. It is your responsibility to use the call recording capabilities in compliance with the law. You must obtain consent from the parties of recorded communications in a manner that complies with the laws applicable to each participant.
Regulations around the maintenance of personal data require the ability to export user data. In order to support these requirements, recording metadata files include the participantId for each call participant in the participants array. You can cross-reference the MRIs in the participants array with your internal user identities to identify participants in a call. An example of a recording metadata file is provided below for reference.
Availability
Currently, Azure Communication Services Call Recording APIs are available in C# and Java.
Next steps
Check out the Call Recording Quickstart to learn more.
Learn more about Call Automation APIs.
Tilbakemeldinger
Send inn og vis tilbakemelding for