Microsoft Teams voice, video and screen share recording
The following section contains all the necessary steps for setting up a Microsoft Teams recording infrastructure.
Server sizing
According to Microsoft requirements, the Microsoft Teams Bot service must run on an Azure Virtual Machine. Requirements for the Recording Server role, which will host the Verba Microsoft Teams Bot service and the Unified Call Recorder service are:
Azure Compute Unit (ACU) should be 200 or higher and 1:1 ratio for vCPU: Core
- We recommend using the Ddsv4 series virtual machines, Standard_D4ds_v4 or above
https://learn.microsoft.com/en-us/azure/virtual-machines/ddv4-ddsv4-series
- ILPIP (Instance Level Public IP Address) for the Recording Servers
Private IP addresses are not recommended by Microsoft, due to potential performance limitations caused by the Azure NAT, although will work
- For resilient and/or high volume configurations, multiple virtual machines (running the Recording Server role) have to be deployed. In order to distribute the load across multiple Verba Microsoft Teams Bot services, an Azure Application Gateway has to be deployed in front of the VMs.
https://docs.microsoft.com/en-us/azure/application-gateway/overview
Due to performance limitations in the Microsoft Local Media SDK, the Recording Server sizing for Microsoft Teams recording is different from other integrations. The following table summarizes the maximum number of simultaneous calls or meetings supported for Microsoft Teams recording on the specified Azure VM server configurations.
Recording scenario | Modality | Standard_D4ds_v4 vCPUs: 4 Memory: 16 GiB | Standard_D8ds_v4 vCPUs: 8 Memory: 32 GiB | Standard_D16ds_v4 vCPUs: 16 Memory: 64 GiB | Calculation notes |
---|---|---|---|---|---|
Peer-to-peer calls | Audio only | 100 recorded calls | 250 recorded calls | 250 recorded calls | In peer-to-peer scenarios, calls were established sequentially in one second each but continued to run simultaneously. |
Audio + video | 40 recorded calls, both participants with video | 70 recorded calls, both participants with video | 70 recorded calls, both participants with video | ||
Audio + screen | 70 recorded calls | N/A | N/A | ||
Meetings without bot grouping | Audio only* | 40 recorded meeting participants | 40 recorded meeting participants | 40 recorded meeting participants | The figures describe a worst-case scenario where all users participate in large meetings. In this scenario, a single large meeting was created with 100 recorded participants, and the recorded users tried to join in a 10-second period. The number of participants that successfully joined out of the 100 attempts represent the maximum numbers specified in this table. |
Audio + video** | 35 recorded meeting participants, 4 participants with video | 35 recorded meeting participants, 4 participants with video | 35 recorded meeting participants, 4 participants with video | ||
Audio + video + screen** | 30 recorded meeting participants, 4 participants with video | 30 recorded meeting participants, 4 participants with video | 30 recorded meeting participants, 4 participants with video | ||
Audio + video + separate screen recording** | 30 recorded meeting participants, 4 participants with video | 30 recorded meeting participants, 4 participants with video | 30 recorded meeting participants, 4 participants with video | ||
Audio + Large Gallery View (LGV) | 30 recorded meeting participants | 30 recorded meeting participants | 30 recorded meeting participants | ||
Meetings with bot grouping | Audio only* | 55 recorded meeting participants | 55 recorded meeting participants | 55 recorded meeting participants | |
Audio + video** | 55 recorded meeting participants, 4 participants with video | 55 recorded meeting participants, 4 participants with video | 55 recorded meeting participants, 4 participants with video | ||
Audio + video + screen** | 50 recorded meeting participants, 4 participants with video | 55 recorded meeting participants, 4 participants with video | 55 recorded meeting participants, 4 participants with video | ||
Audio + video + separate screen recording** | 50 recorded meeting participants, 4 participants with video | 55 recorded meeting participants, 4 participants with video | 55 recorded meeting participants, 4 participants with video | ||
Audio + Large Gallery View (LGV) | 55 recorded meeting participants | 55 recorded meeting participants | 55 recorded meeting participants |
* Enabling encryption does not impact recording performance.
** The number of recorded video channels in meetings is specified by the Number of Recorded Video Participants server configuration settings. The default value is 4 participants. Increase the value of this parameter with caution, as it impacts recording performance.
For requirements for other components and server roles, see Server sizing and requirements.
Example
The peak usage period of an organization consists of multiple large meetings and peer-to-peer (P2P) calls. 300 recorded participants are distributed in three large meetings and 50 recorded participants are in P2P calls. If bot grouping is enabled, this usage scenario can be covered by six Virtual Machines (VMs) with four CPU cores each.
This coverage is calculated by using the maximum number of meeting participants that can be recorded in large meetings on any VM if bot grouping is enabled (55 participants). Using this figure, six VMs can provide 330 large meeting resource units (6 * 55 = 330). Of this capacity, 300 are used for the large meetings and the remaining 30 large meeting units can record approximately 60 P2P participants.
Considerations for large meetings
Based on sizing calculations and reported usage experience, the bot service can encounter issues without reaching physical resource limits when recording large meetings. Due to this, it is recommended to consider if the types of meetings used fit the Microsoft Teams usage profile and requirements of the organization. For example, review if you need to record every participant in large internal meetings or if recording only the presenters is enough.
Microsoft Teams offers multiple meeting types, but an important difference exists in how these meeting types are recorded by the bot service.
- In Meetings and Webinars, every participant with a configured recording policy in VFC triggers recording.
- In Town Halls, only the hosts and presenters trigger recording. Other attendees are not recorded, and they are not listed in the call participant list received by the Teams Bot.
For more information about Microsoft meeting types, see Overview of meetings, webinars, and town halls.
Load-balancing and Failover
Large deployments may require multiple VMs and other Azure components.
For the failover and load-balancing options for voice, video, and screen/application window share recording, see:
Preparation
The Microsoft Teams integration requires additional prerequisites and configuration on Azure and O365, see Configuring Microsoft Teams Recording for more information.
Make sure that all the required prerequisites are installed on each server prior to the installation.
For guidance on configuring the necessary firewall port, visit Firewall configuration for Microsoft Teams recording deployments
Installation
The following articles contain all the steps for installing the various server roles:
- Installing a Verba Single Server solution
- Installing a Verba Media Repository
- Installing a Verba Recording Server
Configuration
For the configuration guide for voice / video / screen share recording, see Configuring Microsoft Teams Recording.
Microsoft Teams metadata for voice, video, and screen & application share recordings
The system captures the following metadata specific to Microsoft Teams voice/video/screen recordings.
Metadata Field | Description | Template | Available |
---|---|---|---|
Start Date | Start date of the conversation | Standard | Yes |
Start Time | Start time on the conversation | Standard | Yes |
End Date | End date of the conversation | Standard | Yes |
End Time | End time of the conversation | Standard | Yes |
Duration | Length of the conversation | Standard | Yes |
User | Name of the recorded user | Standard | Yes |
From | Phone number, Button name, User name | Standard | Yes |
From Info | User / contact name | Standard | Yes |
To | Phone number, Button name, User name | Standard | Yes |
To Info | User / contact name | Standard | Yes |
Direction | Direction of the call from the system perspective requires configuring internal number/domain patterns | Standard | Yes |
Direction (User) | Direction of the call from the recorded user perspective | Standard | Yes |
From (Verba) | Name of the Verba user associated with the calling party | Standard | Yes |
To (Verba) | Name of the Verba user associated with the called party | Standard | Yes |
Location | Hostname of the recording server | Standard | Yes |
End Cause | Normal, Hold, Transfer, Conference, Device Change, From Terminated, To Terminated | Standard | Yes |
Audio Codec | Audio codec of the recorded streams | Standard | Yes |
Video codec | Video codec of the recorded streams | Standard | Yes |
Platform Call ID | Unique conversation identifier received from the recorded platform | Standard | Yes |
Silence Ratio | Ratio of silence in the conversation | Standard | Yes |
Talkover Ratio | Talkover ratio of the conversation | Standard | Yes |
Longest Silence | Length of the longest silence present in the conversation | Standard | Yes |
User ID / Agent ID | Microsoft Entra (formerly Azure AD) Object ID for the recorded user | Standard | Yes |
From Device | Device ID of the calling party | Standard | No |
To Device | Device ID of the called party | Standard | No |
Dialed Number | Original dialed number | Standard | No |
From IP | Defaults to 127.0.0.1 as the IP address of the devices are not available | Standard | Yes |
To IP | Defaults to 127.0.0.1 as the IP address of the devices are not available | Standard | Yes |
From Proxy IP | IP address of the proxy server associated with the caller party | Standard | No |
To Proxy IP | IP address of the proxy server associated with the called party | Standard | No |
Source Platform | Microsoft Teams | Standard | Yes |
Conversation Type | Voice, Video, Screen Share | Standard | Yes |
Forward Reason | Forward reason for the conversation (e.g. forwarded, transferred, team call, delegated, etc.) | Standard | No |
Recording failed | Indicates if the recording has failed and the metadata was imported during CDR reconciliation | Standard | No |
Media Length | Length of the media file related to the conversation in hh:mm:ss format | Standard | Yes |
Media Error | Shows the media processing errors during recording | Standard | Yes |
Voice Quality | Overall voice quality check score for the conversation | Standard | Yes |
Record Type | Standard | Standard | Yes |
2N Source | In case of duplicate (2N) recording, records are marked as primary or secondary | Standard | No |
Meeting Subject | The subject of the recorded meeting | Microsoft Teams | Yes |
Meeting Organizer ID | Microsoft Entra (formerly Azure AD) Object ID of the recorded meeting organizer | Microsoft Teams | Yes |
Meeting Organizer Name | Name of the recorded meeting organizer | Microsoft Teams | Yes |
Compliance Policy | Name of the compliance policy configured in Microsoft Teams for the recorded user which triggered the recording of the call or meeting | Microsoft Teams | Yes |