Configuring the Verba Microsoft Teams Bot and Unified Call Recorder Services
In order to complete the steps below, you must have System Administrator role in Verba.
It is recommended to co-locate the Verba Microsoft Teams Bot service and the Verba Unified Call Recorder service on the same Azure virtual machine.
Azure Active Directory is now Microsoft Entra ID.
The registration consists of the following steps:
Enabling the services
Log in to the Verba web interface and go to System \ Servers menu.
Select your recording (bot) server from the list, then click on the Service Activation tab.
Activate the Verba Microsoft Teams Bot Service and the Verba Unified Call Recorder Service by clicking on the icon.
Configuring the Verba Microsoft Teams Bot service
In your recording (bot) server configuration, go to the Change Configuration Settings tab.
Expand the Microsoft Teams Bot node.
Under General, provide a regex pattern at the Internal Tenant IDs, Numbers Pattern setting. This pattern should cover all the internal numbers and domains.
Under General / Recorder Connection, configure the authentication credentials for the connections with the recording service. Define the Authentication User and Authentication Passwords values. These credentials will be used later when configuring the connections in the recorder service.
Under Microsoft Teams, configure the following settings (see configuration reference for more details):
Setting Name | Description |
|---|---|
Bot Service DNS Name | The FQDN of the virtual machine |
Bot Service Public CName | The CNAME DNS entry created for the server |
Service Certificate | The thumbprint of the publicly signed certificate used previously for binding the ports |
Bot Application ID | The App ID of the bot (see related step at Registering the Microsoft Teams Bot in Azure) |
Bot Application Secret | The secret created for the bot (see related step at Registering the Microsoft Teams Bot in Azure) |
Microsoft Teams Tenant ID | The ID of the Microsoft Entra tenant where the bot was created (see related step at Registering the Microsoft Teams Bot in Azure) |
Query Hosting Tenant's Azure AD | Defines if the bot service will query Microsoft Entra ID for User Principal Names (UPN) |
Public IP Address | The public IP address of the virtual machine |
Configuring the Verba Unified Call Recorder service
In your recording (bot) server configuration, go to the Change Configuration Settings tab.
Expand the Unified Call Recorder \ Media Recorder \ Microsoft Teams node.
At the Teams Bot Servers setting, click on the icon to add a new connection.
In the right panel, provide the username and password configured in the Verba Microsoft Teams Bot Service above for the connections. At the Host setting, select the Verba Recording (Bot) server from the dropdown menu. Set the Port to 10501.
Click on the Save button. You will see the bot connection added to the configuration.
Save the changes by clicking on the icon.
A notification banner appears at the top of the screen. Click on the click here link, so you will be redirected to the Configuration Tasks tab. Click on the Execute button in order to execute the changes.
Starting the services
In your recording (bot) server configuration, go to the Service Control tab.
Start the Verba Microsoft Teams Bot Service and the Verba Unified Call Recorder Service by clicking on the icon.
Updating the Server Certificate for Microsoft Teams Bot
Manual binding of certificates
Prior to v9.5.3.5973 (2020 June) certificates had to be manually bound to HTTPS ports. While this does not affect normal operation, during the renewal process the old binding must be removed, otherwise, the old certificate will be used.
The service automatically binds and unbinds the certificate, in order to check if the certificate is manually bound follow these steps:
Log in to the Verba Bot virtual machine in Azure, and open an administrator command prompt.
Stop the Verba Microsoft Teams service and Verba System Monitor service
Run the following command in the command prompt, replace the ip_address part with the public IP address of the server
show sslcert ipport=ip_addressThe binding can be deleted by following these steps:
Log in to the Verba Bot virtual machine in Azure, and open an administrator command prompt.
Stop the Verba Microsoft Teams service and Verba System Monitor service
Remove the bound certificate to the TCP ports 9440 and 10100 with the following command. Replace the ip_address part with the public IP address of the server
netsh http delete sslcert ipport=ip_address:portConfiguration reference
Setting Name | Description | |
|---|---|---|
General / Recorder Connection | Recording Director Listening Port | The TCP/TLS port where the bot service is listening for the Recording Director connections from the Verba Unified Call Recorder Service |
Media Recorder Listening Port | The TCP/TLS port where the bot service is listening for the Media Recorder connections from the Verba Unified Call Recorder Service. | |
Authentication User | Username for authenticating with the Verba Unified Call Recorder Service. | |
Authentication Password | Password for authenticating with the Verba Unified Call Recorder Service. | |
Number of Tries to Find a New | Defines the number of tries after a recorder disconnects from the bot service, and the bot service tries to replace the recorder with another online Unified Call Recorder service/server. | |
Interval between Tries to Find a | Defines the interval between tries when a recorder disconnects from the bot service, and the bot service tries to replace the recorder with another online Unified Call Recorder service/server. | |
General / Audio | Compress RAW audio to G.711 | Defines if the bot service transcodes the original PCM audio stream to G.711 before sending the data to the recorder. |
Bidirectional/Stereo Recording | Defines if the bot service subscribes for unmixed audio stream in the Microsoft Teams call. | |
General / Video | Number of Recorded Video Participants | Defines how many video streams are recorded per call, including the video streams of the recorded user. |
Preferred Video Resolution | The video resolution is used when the bot subscribes to the video streams of the participants. Microsoft Teams streams the video up to the resolution requested during the subscription. The resolution can be lower based on network conditions/capacity. | |
Preferred Screen Share Resolution | The video resolution is used when the bot subscribes to the screen share streams of the participants. Microsoft Teams streams the video up to the resolution requested during the subscription. The resolution can be lower based on network conditions/capacity. | |
Separated Screen Share Record | Defines if a separate record is created for the screen share modality. The separate call includes the audio stream too. | |
General / Recording Notification | Apply User's Recording | Global notification setting, if turned off, the user settings won't be taken into account. |
Enable Custom Audio Announcement for P2P | Enables custom audio announcements for P2P calls. | |
Enable Custom Audio Announcement on call resume | Enables custom audio announcement on call resume. | |
Audit Log for Customisable Announcement | Audit log for the customizable audio announcement, If turned on the bot service inserts audit log entries through the Web Application's HTTP API to the database. | |
Recording Reminder Length (milliseconds) | Defines the duration of the recording reminder beep in milliseconds. The default value is 500 milliseconds, or half a second. | |
Recording Reminder Frequency (hertz) | Defines the pitch of the recording reminder beep in hertz. The default value is 1400 hertz. | |
Recording Reminder Interval (seconds) | Defines the repetition interval of the recording reminder in seconds. The default value is 15 seconds. | |
General | Internal Tenant IDs, Numbers Pattern | A regular expression that defines the internal Microsoft Teams tenant IDs or phone numbers to accurately identify the direction of the recorded calls. For example: ^(b6fd8d51-3271-4896-bb8b-4d7390b51784|f4552cc7-3685-4ffb-bf68-79bb0ab4b007|[1-4]\d{4})$This regular expression considers two tenants (b6fd8d51-3271-4896-bb8b-4d7390b51784, f4552cc7-3685-4ffb-bf68-79bb0ab4b007) and every 5 digit numbers that is starting with 1 to 4 as internal. For more information, see Conversation direction detection using internal domain and number patterns. In multi-tenant environments, if an internal pattern regular expression is defined in both the environment and the Microsoft Teams Bot service configuration, the pattern specified in the environment configuration is used to determine the internal values, not the pattern defined in the Microsoft Teams Bot service configuration. |
Record Non-configured Extensions | Defines if the bot service has to record non-configured extensions. | |
Start Recording Trigger (P2P) | Specifies when the bot starts recording a peer-to-peer call. Options: Recorded User Joined: Default. Recording starts and the bot starts steaming media packets to the recorder when the recorded user joins the call after the pre-join screen and the bot can identify the recorded user in the participant list. This happens after a participant roster update includes the user, which occurs up to the point of the user establishing an active media channel. This option does not record the ringtone in outbound calls. Call Established: Recording starts when the call state changes to established. This means that the recording can start as soon as the bot joins and establishes the media channels. First Active Participant: Recording starts when the bot identifies the first participant with active media streams. This means that the bot only records calls where it can identify media activity and avoids recording empty, unanswered calls. | |
Start Recording Trigger (Meeting) | Specifies when the bot starts recording a meeting. Options: Recorded User Joined: Default. Recording starts and the bot starts steaming media packets to the recorder when the recorded user joins the meeting after the pre-join screen and the bot can identify the recorded user in the participant list. This happens after a participant roster update includes the user, which occurs up to the point of the user establishing an active media channel. Call Established: Recording starts when the meeting state changes to established. This means that the recording can start as soon as the bot joins and establishes the media channels. First Active Participant: Recording starts when the bot identifies the first participant with active media streams. This method can record parts of the meeting where the recorded user is not present because the first active participant can be identified on the participant list a few seconds before the recorded user joins. This method also records meeting segments where the meeting invite is ringing for the user, but they never join the meeting. | |
Start Recording If Call Direction Undefined | Specifies if call recording should start if the direction of a call cannot be determined based on the internal domain patterns or if the bot service receives partial metadata from the Graph API. | |
Block Calls when Recording Server Unavailable | If there is no available recorder, the bot will not join the call. If the Microsoft Teams recording policy is in strict mode then it will prevent the establishment of the call. If the bot cannot fail-over to another recorder mid-call, the bot will leave the call. | |
Store Additional Metadata | Store additional metadata in the Microsoft Teams metadata template. | |
Enable UPN retrieval | If enabled, the bot queries the UPN information from the Microsoft Graph API, populates the corresponding metadata fields with the value, and uses it for recording rules. | |
Enable meeting subject retrieval | If enabled, the bot queries the meeting subject information from the Microsoft Graph API and populates the corresponding metadata fields with the value. | |
Microsoft Teams / Connection | Bot Service Public CNAME | CNAME entry on the public trusted domain which points to the public IP (ILPIP) of the virtual machine hosting the bot service. |
Service Certificate | The thumbprint or the file path of the public domain's certificate. If the certificate in the WCS, it has to have an exportable private key. Only CSP certificates are supported (CNG/KSP certificates are not supported!) | |
Service Certificate Key File | The key file if the certificate is files based. | |
Service Certificate Key File Password | Password for the key file | |
Public IP Address | The public IP address assigned to the virtual machine hosting the bot service. | |
Call Invite Port | HTTPS port where the bot is listening for call invites from Microsoft Teams. | |
Call Notification Port | HTTPS port where the bot is listening for call control messages from Microsoft Teams. | |
Media Control Port | HTTPS port used by the Microsoft Media SDK for media control messages. | |
Media Port Range Begin | Beginning of the UDP port range for the media streams. | |
Media Port Range End | End of the UDP port range for the media stream. | |
Microsoft Teams / Authentication | Bot Application ID | The Application ID is generated during the bot registration. Format: GUID |
Bot Application Secret | The Application secret is generated during the bot registration. | |
Bot Application Authentication Certificate | The authentication certificate is uploaded on the Certificates and Secrets page of the Microsoft Entra App registration. If configured the application secret is ignored. | |
Authentication Certificate Key File | The key file of the certificate is files based | |
Authentication Certificate Key File Password | Password for the key file | |
Microsoft Teams / Tenant Configuration | Hosting Tenant ID | The ID of the Microsoft Teams Tenant where the bot is hosted. Format: GUID |
Hosting Tenant Recorded | Defines if the bot will query the Microsoft Entra ID of the tenant for additional user information such as User Principal Name. | |
List of Recorded Tenant IDs | Line-separated list of recorded Microsoft Teams tenants. If the hosting tenant is different from the recorded tenant(s), the recorded tenants' IDs have to be added. | |
Microsoft Teams / Bot Grouping | Bot Grouping | Turns on Microsoft Teams Bot Grouping capability. If enabled, the bot service answers the call with the configured bot group capacity. Based on the capacity, Microsoft Teams will invite the recording bot for the recorded meeting once per configured number of capacity if the recorded users share the same compliance recording policy. |
Bot Group Participant Capacity | Defines the capacity of the bot grouping feature | |
Advanced | Microsoft API Endpoint | Base URL of the Microsoft Graph API. All API messages from the bot are sent to the URL. |
HTTP Endpoint Validation | Turns ON/OFF the HTTP endpoint validation at the service start up. | |
Use Display Name if no UPN is available | If set to true, the Display Name value of a user is used to populate the participant Caller ID if there is no UPN value available. If the UPN exists, it is used even if this option is set to true. If set to false, the service attempts to use the UPN value, which can leave the Caller ID empty if the UPN is missing. | |
Enable Interactive Roster | Enables Teams Bot support for the Microsoft Interactive Delta Roster feature. The Interactive Delta Roster is an advanced feature designed to optimize large meetings by filtering the participant updates to include only the active participants above a Microsoft-defined participant count. Default: Enabled. | |
Adaptive Recording Trigger Threshold | The threshold of meeting participant count after which the call is recorded when the Teams Bot receives a Call Established event and the Interactive Delta Roster feature is enabled. Default: 100 | |
Enable Meeting Subject Cache | Enables the caching of meeting subjects. Default: True |