# Cloud Voice 84.23.0.24-beta1

This page summarizes what changed in the first beta build of firmware **84.23.0.24** (release version **V24.1-Beta**), released **April 23, 2026**. To install it, open your Cloud Voice admin portal and check for a firmware update. Updates to the Cloud Voice App are tracked in the app's own release notes.

:::caution
This is a pre-release beta build. Run it only where you are comfortable testing unfinished firmware, and avoid production systems until the general release.
:::

## New features

### Onsite Proxy

Onsite Proxy lets you connect remote IP phones to your phone system without setting up port forwarding. You install the Onsite Proxy software on the same subnet as the remote phones, and it opens a secure channel back to the PBX (Private Branch Exchange, your phone system). From that point on, the phones can be auto-provisioned and reached over the internet as though they shared the local network with the PBX.

This release also adds the following capabilities around Onsite Proxy:

- **Remote provisioning.** Remote IP phones can now be auto-provisioned through Onsite Proxy.
- **Error alerting.** A new **Onsite Proxy Error** event notification (**System > Event Notification > Event Type > System**) fires when the link between the PBX and Onsite Proxy drops, or when Onsite Proxy's resource usage crosses the configured thresholds.
- **API support.** New API (Application Programming Interface, for driving the PBX from your own tools) interfaces let you list Onsite Proxy instances, search for a specific instance, read the details of one or more instances, view or reset an instance's secret key, and add, edit, or delete an instance.

## Improvements and bug fixes

### Extension

- The maximum extension-number length is now **11 digits**, up from 8.
- You can copy the IP address of an extension's online device with a single click.

  ![Extension list with a one-click control for copying an online device's IP address](/images/pbx/rn-one-click-copy-ext.png)

- You can upload an avatar when you create or edit extensions, one at a time or in bulk, under **Extension and Trunk > Extension > User > User Information**.

  :::note
  Avatars must be `.jpg` or `.png` and no larger than 1 MB.
  :::

  ![Extension user form with an avatar upload field](/images/pbx/rn-upload-avatar.png)

- Call forwarding (**Extension and Trunk > Extension > Presence > Call Forwarding**) has two behavior changes:
  - A new **Busy** destination is available. When a forwarding condition is met and this destination is set, the PBX rejects the call and replies with the SIP (Session Initiation Protocol, the signaling that sets up and tears down calls) response `486 Busy Here`.

    ![Call forwarding configuration showing the new Busy destination option](/images/pbx/rn-ext-fwd-busy.png)

  - For the **When Busy** condition with a **Hang Up** destination, the PBX now replies with SIP `480 Temporarily Unavailable` instead of the previous `486 Busy Here`.
- You can set a ringback tone per extension under **Extension and Trunk > Extension > Features > Prompt**. The tone plays to the caller while the extension rings, before the call is answered.

  ![Extension prompt settings with a ringback tone selection](/images/pbx/rn-ext-ringback-tone.png)

- An extension can now use more than one transport protocol (UDP, TCP, or TLS: the different ways a phone's SIP messages travel to and from the PBX) at a time (**Extension and Trunk > Extension > Advanced > VoIP Settings > Transport**).

  ![Extension transport setting with multiple protocols selected](/images/pbx/ext-transport.png)

  :::caution
  When you upgrade to this build, the system adjusts some settings automatically:

  - **Ports.** The SIP TCP port is enabled (**PBX Settings > SIP Settings > General > Basic**). If any existing extension uses **TLS**, the TLS port is enabled as well (**PBX Settings > SIP Settings > TLS**).
  - **Extension protocols.** Existing extensions gain **TCP**; new extensions default to both **TCP** and **UDP**.
  :::

  :::note
  When several protocols are enabled, the PBX chooses one by priority:

  - **Cloud Voice App and auto-provisioned IP phones:** TLS, then TCP, then UDP.
  - **Manually registered IP phones:** the protocol the phone specifies, or the default priority (TLS, then TCP, then UDP) if none is specified.
  :::

- Fixed: with **Accept calls from Ring Group** disabled, an extension could not receive a ring group call that had been forwarded into a queue the extension belonged to.
- Fixed: after an extension's mobile number was cleared to `null` through the API, member-selection lists for queues, ring groups, extension groups, outbound routes, and similar features showed no extensions.

### Cloud Voice App Server

Extension users can now sign in to the Cloud Voice App with their extension number. Turn this on with the **Client Login Mode** setting under **Extension and Trunk > Extension > Cloud Voice App Server > Basic**.

![Cloud Voice, client login mode setting allowing sign-in by extension number](/images/pbx/rn-linkus-ext.png)

### Client Permissions

A new **Upload Avatar** permission (**Extension and Trunk > Client Permission > Preference Settings > Configuration Item**) controls whether the selected extension users can change their extension avatar from the Cloud Voice App.

![Client permission list showing the new Upload Avatar control](/images/pbx/rn-client-permission.png)

:::note
On mobile, users need Cloud Voice App **5.25.15** or later (iOS) or **5.25.14** or later (Android).
:::

### Trunk

- SIP trunks gain a **Support SIP REFER** setting (**Extension and Trunk > Trunk > Advanced > VoIP Settings**). When enabled, you choose which transfer destinations are allowed, **Internal Number**, **External Number**, or both, and the PBX honors REFER requests on that trunk by transferring the call accordingly.

  :::note
  - For external numbers, the PBX prepends the configured prefix to the target number in the REFER request.
  - Only blind transfer is supported.
  :::

  :::caution
  Allowing **External Number** as a REFER destination lets the far end of the trunk redirect a live call to any outside number, which can expose you to toll fraud. Turn on external transfers only for trunks you trust, and keep the allowed destination types as narrow as the setup requires.
  :::

  ![SIP trunk advanced settings with the Support SIP REFER option](/images/pbx/rn-sip-refer.png)

- Fixed: on outbound calls over a SIP trunk with SRTP (Secure Real-time Transport Protocol, which encrypts the call audio) enabled, audio dropped to one-way after 15 minutes and the caller could no longer hear the callee.

### Auto Provisioning

- A new **Enable Yealink Phone Configuration File Encryption** option (**Auto Provisioning > Phones > Options**) controls whether the PBX encrypts configuration files for Yealink phones during provisioning.

  ![Auto provisioning options with the Yealink config file encryption toggle](/images/pbx/rn-yl-phone.png)

- You can copy an IP phone's IP address from the phone list with one click.

  ![Provisioned phone list with a one-click IP address copy control](/images/pbx/rn-one-click-copy-phone.png)

- Auto-provisioned Mitel phones now support a **Distinctive Ringtone** setting (open the phone's settings gear under **Auto Provisioning > Phones**), where you map alert-info values to ringtones.

  ![Distinctive ringtone configuration for a provisioned Mitel phone](/images/pbx/rn-mitel-ringtone.png)

- The PBX now handles the **48 kHz** sampling rate of the Opus audio codec from IP phones, processing those RTP (Real-time Transport Protocol, the media stream that carries call audio) streams correctly for clearer audio.

  :::note
  This applies both to auto-provisioned phones and to phones on manually registered extensions.
  :::

- Fixed: provisioning an Avaya phone with the language set to **J169/J179 French** failed to save.

### Inbound Route

Fixed: a very long inbound route name caused calls through that route to fail.

### Call Queue

- Queue **manager** permissions gain two settings for queue call logs (**Call Features > Queue > Queue Panel Permissions > Manager**):

  ![Queue manager permissions with new call log settings](/images/pbx/rn-in-queue-calllog.png)

  | Setting | Description |
  |---------|-------------|
  | Queue Incoming Call Logs | Lets queue managers view the logs of all answered calls in the queue. Only logs created in version 84.21.0.117 or later are available; older logs are not. |
  | Delete Queue Incoming Call Logs | Lets queue managers delete the logs of answered calls in the queue. Deleted records disappear for all agents and managers but remain in the CDR (Call Detail Record, the master log the system keeps for every call). |

- Queue **agent** permissions now offer finer control over which answered-call logs an agent can see (**Call Features > Queue > Queue Panel Permissions > Agent**):

  ![Queue agent permissions with view-range options for answered call logs](/images/pbx/rn-agent-call-log.png)

  | Option | Description |
  |--------|-------------|
  | Personal Only | Authorized agents see only the queue calls they answered themselves in the Cloud Voice App. |
  | All Agents | Authorized agents see the queue calls answered by any agent in the queue. Only logs created in version 84.21.0.117 or later are available. |

- Fixed: the time shown on the Wallboard was one hour ahead of the PBX system time.

### Voicemail

- Users can forward their voicemails to one or more extensions from the Cloud Voice App.

  :::note
  This requires Cloud Voice App **1.22.4** or later on desktop, and **5.25.15** or later (iOS) or **5.25.14** or later (Android) on mobile.
  :::

- When a user listens to a forwarded voicemail through a feature code, the system now announces who forwarded it at the start of playback.

### Call Recording

- The download size limit for recording files is now **2 GB**, up from 600 MB.
- Fixed: a filename format that a third-party platform could not parse left multi-party conference recordings incompletely synced to that platform.

### Call Disposition

The maximum number of call dispositions is now **200**, up from 20.

### Hot Desking

Fixed: users occasionally failed to log in or out when hot desking on Yealink IP phones.

### Messaging

- SMS and WhatsApp channels gain an **Allow the Creation of Duplicate Active Sessions** setting (**Messaging > Message Channel > SMS Channel/WhatsApp Channel > Messaging Settings**).

  ![Message channel setting to allow duplicate active sessions](/images/pbx/rn-msg-duplicated-session.png)

  When it is enabled and a user starts a session in the Cloud Voice App that already exists for the same sender and receiver, the app prompts the user. If the user continues, they take over the existing session along with its full chat history.

  :::note
  On mobile, this requires Cloud Voice App **5.25.15** or later (iOS) or **5.25.14** or later (Android).
  :::

  ![Prompt shown when a duplicate messaging session already exists](/images/pbx/rn-duplicate-session.png)

- External chat log management improved (**Reports and Recordings > External Chat Logs**):
  - You can filter sessions by **Current Session Handler**.

    ![External chat logs filtered by current session handler](/images/pbx/rn-msg-handler.png)

  - A quick filter button surfaces chat sessions belonging to deleted extensions and queues.

    ![External chat logs with a quick filter for deleted extensions and queues](/images/pbx/rn-msg-filter.png)

  - You can transfer one or more chat sessions to a chosen destination.

    ![Transferring external chat sessions to a destination](/images/pbx/rn-transfer.png)

### PBX Settings

- **Distinctive Caller ID Name** gains a **Display the Diversion SIP Header for Extension Forwarding** option (**PBX Settings > Preferences > Caller ID Name**).

  ![Distinctive Caller ID Name settings with the Diversion header display option](/images/pbx/rn-distinct-cid.png)

  When it is enabled and an incoming call is forwarded directly to a destination type listed in **Extension Forwarding with Diversion SIP Header** (**PBX Settings > SIP Settings > Advanced > Other Options**), the Caller ID shows the name and number of the extension the call was forwarded from.

  :::note
  This appears on both IP phones and the Cloud Voice App. For it to show correctly in the app, users need Cloud Voice App **1.22.4** or later on desktop, and **5.25.15** or later (iOS) or **5.25.14** or later (Android) on mobile.
  :::

- **Queue** is now a valid destination type for **Extension Forwarding with Diversion SIP Header** (**PBX Settings > SIP Settings > Advanced > Other Options**). When an incoming call to an extension is forwarded to a queue, the INVITE carries a `Diversion` header identifying the extension the call came from.

  ![Extension forwarding destination settings including the new Queue type](/images/pbx/rn-ext-fwd-dst.png)

- Fixed: with **Calls initiated via "Open API"** enabled, Masked Number did not hide the phone number in the caller-name field in the Cloud Voice App web experience for API-initiated calls.

### Email Template

- Notification email templates now support **Spanish** (**System > Email > Email Templates > Notification Email Language**).
- The email signature has been removed from the bottom of every template.

### Archive

Fixed: recording files failed to archive to Amazon S3.

### Active Directory Integration

User synchronization improved:

- The **Map** section adds an **Avatar** field, so user avatars sync from Active Directory to the matching PBX extensions.

  ![Active Directory mapping section with the new Avatar field](/images/pbx/rn-map-avatar.png)

- You can now edit the extension details of synced users. If you turn off mapping for a field, that field no longer syncs and you can set it directly on the PBX.

  ![Comparison of Active Directory and PBX extension fields for a synced user](/images/pbx/rn-ad-comparison.png)

### Collaboration Integration

The user-matching logic changed when **Auto associate Extensions with the Users that share the same email address** is enabled:

| Integration | How matching works |
|-------------|--------------------|
| Microsoft Entra ID (Azure Active Directory) | Matches on the Entra ID user's **User principal name** rather than the **Email Address** field configured in the **Map** section. |
| Google Workspace | Matches on the Workspace **Primary email** rather than the **Email Address** field configured in the **Map** section. |

:::note
For Active Directory and Red Hat SSO integrations, the PBX still matches on the **Email Address** field configured in the **Map** section. To keep matching consistent and secure, prevent users from changing their email addresses in the identity provider.
:::

### Custom CRM/Helpdesk Integration Template

OAuth 2.0 authorization now supports **Authorization Code Flow with Proof Key for Code Exchange (PKCE)**. When you configure OAuth 2.0 in an integration template, set it up with the **Authorization Mode** and **PKCE Verification Method** items under **Request Configuration > Authentication Method**. PKCE authorizes using a challenge-verifier pair instead of a client secret, which guards against authorization-code interception.

![OAuth 2.0 authentication settings with PKCE options](/images/pbx/rn-pkce-setting.png)

### Dynamics 365 CRM Integration

Fixed: even with **Play Call Recording** enabled, the recording field on Dynamics 365 phone-call activities stayed empty.

### API

Several API interfaces were extended:

- **Extension.**
  - Manage avatars: a new `extension/uploadtempavatarfile` interface uploads an avatar image and returns a file ID, and a new `avatar` parameter on `extension/get`, `extension/query`, `extension/create`, and `extension/update` reads or sets the extension's avatar by file ID.
  - A new `send_busy` value is available for the destination parameters in extension presence settings on `extension/get`, `extension/query`, `extension/create`, and `extension/update`. With `send_busy`, the PBX rejects incoming calls and returns SIP `486 Busy Here`.
- **Trunk.** New `refer_to_support`, `refer_to_mode_list`, and `refer_to_prefix` parameters on `trunk/get`, `trunk/query`, `trunk/create`, and `trunk/update` read or set the SIP REFER options, whether the trunk processes REFER requests, which destination types are allowed, and the prefix for external transfers.
- **Voicemail.** A new `vm/forward` interface forwards a voicemail to one or more extensions, and a new `vm_detailInfo` parameter on `vm/get` and `vm/query` returns the forwarding source (name and number) for forwarded voicemails.
- **Message Channel.** A new `enb_duplicate_active_session` parameter on `message_channel/get`, `message_channel/query`, `message_channel/create`, and `message_channel/update` reads or sets whether duplicate sessions are allowed on the channel.

### CDR

Fixed: a contact's call records appeared in a CDR search, but the scheduled report downloaded for the same contact came back empty.

### Call Report

Fixed: running the **Queue Performance** report failed with a "request timeout" error even though the actual request limit had not been reached.
