AVAILABLE IN VERSION 9.6.13 OR LATER
Overview
The Zoom integration enables you to archive recorded Zoom Meetings and Zoom Phone calls into the system. The recording takes place within the Zoom platform, and the audio and video from completed meetings and calls are downloaded from Zoom and then ingested into the system using the Zoom Meeting and/or Zoom Phone import sources.
Supported features
The Zoom integration provides the following features:
- Archiving Zoom Meetings and Zoom Phones recordings for configured users
- Integration with public Zoom APIs: https://marketplace.zoom.us/docs/api-reference/introduction
- Support for voice, video, and screen & application share modalities
- Unaltered download and import of media files (MP3, M4A, MP4)
- Import of meeting and phone call metadata
- CDR reconciliation with Zoom call/meeting logs to identify not recorded or archived calls
- Configurable query intervals through import policy schedule
- Multi-tenant support, the ability to configure any number of Zoom tenants as separate import sources in any environment/tenant
- Support for forward proxy based configurations
Known limitations and considerations
The Zoom integration has the following known limitations currently:
- Meetings chat archiving is not supported
- Webinars are not supported
- Video files for Meeting recordings might not match the time interval defined by the join and leave events of the recorded users. The Zoom recording process currently starts when the first recorded user joins and ends when the meeting ends. The recording system creates CDRs for each recorded user based on their join/leave events but will link the full video files to these records. Audio files are created individually for each recorded participant (individual recording has to be enabled on the Zoom side) and are not affected by this limitation.
- The APIs published by Zoom are tenant/account level APIs (not user level), which means that the API response will include information about recordings for all configured users in the tenant. The system filters the response based on the configured users and does not attempt to download recordings for users not configured in the system. When multiple systems are deployed to allow data segregation, this approach introduces some overhead as unnecessary data is downloaded (and discarded).
- Due to Zoom API rate limits and lack of filtering for specific users, large tenants might unable to use the CDR reconciliation feature for Zoom Meetings, because the process requires to call resource-intensive APIs for every meeting in the tenant.
- Meetings hosted by external users (users outside of the customer tenant/account) can only be archived with limitations. The participant information is limited to the recorded users in the customer tenant, no external participants or non-recorded internal participants will be stored.
- Meeting recordings always include an MP4 video file (in addition to the M4A audio file) even if no camera was used or screens sharing was not enabled. The video contains a black screen with the name of the users in the center. When the recorded user is configured for voice-only recording/archiving, the system only imports the M4A audio file. If the recorded user is configured for video and/or screen share recording, the system imports the MP4 file as well and sets the modality to Screen & Application Share (regardless if video and screen share was used).
- Redundant deployments are supported but multiple servers will run independently and attempt to import the same recordings and multiplicate the Zoom API usage. The system will eventually import only one copy of the same call and meeting. For the same reasons, load balancing is not recommended, while supported.
- The Zoom Phone API does not support Archiving time for filtering which introduces an overhead in querying the data and the system has to query the same time interval multiple times.
- The reconciliation process for Zoom Phones only queries records where the recording_id is set.
- CDR reconciliation is not supported for breakout rooms.
Version support
Switch Name & Model | Zoom Meetings Zoom Phone |
---|---|
Supported Versions | Contact Zoom |
Supported Endpoint / DeviceTypes | All |
Deploying Zoom recording
The following section contains the necessary steps for setting up a Zoom recording infrastructure.
Server sizing
Allocating the appropriate resources to the different servers is crucial. For guidance, see Server sizing and requirements
For storage sizing, see the table below showing the information available for media files created by the Zoom platform:
File Format | Codec | Size | |
---|---|---|---|
Zoom Phone | MP3 | MP3 (48 KHz, Mono, VBR) | 40-75 Kbps |
Zoom Meeting Audio | M4A | AAC-LC (32 KHz, Mono, CBR) | 128 Kbps |
Zoom Meeting Audio + Video + Screen Share | MP4 | AAC-LC (32 KHz, Mono, CBR) H.264 AVC | Audio: 128 Kbps Video: entirely depends on the screen resolution, the content shared, and the variable bitrate control in Zoom. It is recommended to make test calls with the usual content and length and use it as a baseline for the calculations. |
Preparation
Make sure that all the required prerequisites are installed on each server prior to the installation.
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
The system supports both Zoom Meeting and Zoom Phone archiving via the import service framework:
- Zoom Phone: for configuring Zoom Phone archiving, refer to Zoom Meeting and Phone
- Zoom Meeting: for configuring Zoom Meeting archiving, refer to Zoom Meeting and Phone
Zoom API rate limits
The Zoom API enforces certain limitations on the number of requests sent by an application. These rate limits can limit the number of meetings or phone calls that are imported or reconciled by the system on a daily basis. When an API limit is reached, the Zoom platform will block any subsequent API request for the API category which exceeded the published rate limit. The system will need to wait until the rate limits are reset (at 00:00 UTC every day).
For more information, see https://marketplace.zoom.us/docs/api-reference/rate-limits.
The following table explains the current rate limits and provides guidance on how to estimate the API usage to avoid reaching the API limits. If you are planning to deploy the integration for a large tenant/account and you believe that the rate limits will be reached, please contact Zoom about further options.
API | Zoom API Limit (Business+) | Usage | Estimation | |
---|---|---|---|---|
Phone | /phone/recordings https://marketplace.zoom.us/docs/api-reference/zoom-api/phone/getphonerecordings | 20 req. / second | Import | Used in every policy scheduling, multiple times if call count is high. Safe estimate per policy run: max(Recorded calls since last run / 300; 1) * 4 |
/phone/call_logs https://marketplace.zoom.us/docs/api-reference/zoom-api/phone/accountcalllogs | 40 req. / second Daily limit of 60,000 requests/day shared by heavy & resource-intensive APIs. | CDR reconciliation | Used in every policy scheduling, multiple times if call count is high. Safe estimate: max(Total calls since last run / 300; 1) * 4 | |
Meeting | /archive_files https://marketplace.zoom.us/docs/api-reference/zoom-api/archiving/listarchivedfiles | 60 req. / second | Import | Used in every policy scheduling, multiple times if Meeting count is high. Safe estimate per policy run: max(Recorded meetings since last run / 300; 1) * 4 |
/metrics/meetings/{meetingId}/participants https://marketplace.zoom.us/docs/api-reference/zoom-api/dashboards/dashboardmeetingparticipants | 20 req. / second Daily limit of 60,000 requests/day shared by heavy & resource-intensive APIs. | Both import and CDR reconciliation | Import: Used once per archived meeting on Zoom side, might call multiple times in rare cases, safe estimate: archived meeting * 2 Reconciliation: Used once per all meetings in the whole tenant (not just for recorded meetings), might call multiple times in rare cases, safe estimate: total meeting * 2 | |
/metrics/meetings https://marketplace.zoom.us/docs/api-reference/zoom-api/dashboards/dashboardmeetings | 20 req. / second Daily limit of 60,000 requests/day shared by heavy & resource-intensive APIs. | CDR reconciliation | Used in every policy scheduling, multiple times if Meeting count is high. Safe estimate per policy run: max(Total meetings since last run / 300; 1) * 4 |
Types of import that are subject to daily API limit:
- Zoom Phones: no
- Zoom Phones with CDR reconciliation: yes
- Zoom Meetings: yes
- Zoom Meetings with CDR reconciliation: yes
Some examples of how much volume of traffic a daily rate limit of 60 000 can safely handle when scheduling the import for every 5 minutes:
- Zoom Phones: no limit
- Zoom Phones with CDR reconciliation: 4.5 million calls daily
- Zoom Meetings: 30 000 meetings daily
- Zoom Meetings with CDR reconciliation: 29 000 meetings daily
- Zoom Meetings and Zoom Phones: combined traffic of any amount of daily calls and 30 000 meetings
- Zoom Meetings and Zoom Phones both with CDR reconciliation: combined traffic of 2.2 million daily calls and 14 500 meeting
Zoom Meeting metadata
The system captures the following metadata specific to Zoom meetings.
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 | Recorded User ID | Standard | Yes |
From Info | Recorded user display name | Standard | Yes |
To | Conference | Standard | Yes |
To Info | Meeting topic | Standard | Yes |
Direction | Conference | Standard | Yes |
Direction (User) | Outgoing | 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 | No |
Audio Codec | Audio codec of the recorded streams | Standard | No |
Video codec | Video codec of the recorded streams | Standard | No |
Platform Call ID | Unique conversation identifier received from the recorded platform | Standard | Yes |
Silence Ratio | Ratio of silence in the conversation | Standard | No |
Talkover Ratio | Talkover ratio of the conversation | Standard | No |
Longest Silence | Length of the longest silence present in the conversation | Standard | No |
User ID / Agent ID | Recorded Zoom user ID | 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 | IP address associated with the calling party | Standard | No |
To IP | IP address associated with the called party | Standard | No |
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 | Zoom Meeting | Standard | Yes |
Conversation Type | Voice, Video, Screen & Application Share If the recorded user is configured for video and/or screen share recording, the system sets the modality to Screen & Application Share (regardless if video and screen share was used). | 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 | Yes |
Media Length | Length of the media file related to the conversation in hhh:mm:ss format | Standard | No |
Media Error | Shows the media processing errors during recording | Standard | No |
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 |
Zoom Phone metadata
The system captures the following metadata specific to Zoom Phone 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 of the calling party | Standard | Yes |
From Info | Display name of the calling party | Standard | Yes |
To | Phone number of the called party | Standard | Yes |
To Info | Display name of the called party | Standard | Yes |
Participants | Name of the participants of the call | 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 | No |
Audio Codec | Audio codec of the recorded streams | Standard | No |
Video codec | Video codec of the recorded streams | Standard | No |
Platform Call ID | Unique conversation identifier received from the recorded platform to correlate multiple call legs | Standard | Yes |
Silence Ratio | Ratio of silence in the conversation | Standard | No |
Talkover Ratio | Talkover ratio of the conversation | Standard | No |
Longest Silence | Length of the longest silence present in the conversation | Standard | No |
User ID / Agent ID | Recorded Zoom phone extension number | 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 | IP address of the recorded endpoint | Standard | No |
To IP | IP address of the recorded endpoint | Standard | No |
From Proxy IP | IP address of the proxy server associated with the calling party | Standard | No |
To Proxy IP | IP address of the proxy server associated with the calling party | Standard | No |
Source Platform | Zoom Phone | Standard | Yes |
Conversation Type | Voice | 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 | Yes |
Media Length | Length of the media file related to the conversation in hhh: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 |