# Firmware 84.22.0.17-beta1 Release Notes

This is the first beta build of Cloud Voice firmware **84.22.0.17**. It adds virtual fax and new SMS (Short Message Service, text messaging) channels, refines the Call Flow Designer, and delivers a round of improvements and fixes across recording, SIP, archiving, security, integrations, and the API.

Changes to the Cloud Voice App (Desktop, Web, mobile, and the browser extension) ship on their own schedule and are listed in the Cloud Voice App release notes, not here.

- **Release date:** February 5, 2026
- **Release version:** V23.1-Beta (firmware 84.22.0.17)

:::caution[Beta build: test before you upgrade]
This is a beta release, not a production build. Try it on a non-production phone system first. To install it, open your PBX (private branch exchange, your phone system) admin portal, check for a firmware update, and apply it. The upgrade restarts the phone system and ends any calls in progress, so schedule it during a quiet maintenance window.
:::

## New features

### Virtual fax integration

Cloud Voice can now connect to the **BlueFax** online fax service. Once the integration is set up, your team sends and receives faxes securely over the internet from the Cloud Voice App (Desktop or Web), with no physical fax hardware required.

### Omnichannel messaging (SMS)

Two more SMS providers, **VoIP.ms** and **NETPLANET**, can now be used as messaging channels. After you configure a channel for either provider, agents receive and reply to customer text messages directly in the Cloud Voice App.

## Improvements and bug fixes

### Call Flow Designer

#### Call control components

- **Prompt** and **UserInput** now include a **TTS Response Timeout** option under their **Text to Speech** (TTS) prompt settings. Text to Speech turns typed text into a spoken prompt, so the timeout controls how long the system waits for that audio to be generated.

  ![TTS Response Timeout option in a Text to Speech prompt configuration](/images/pbx/rn-cfd-tts-timeout.png)

  When it is enabled, the component splits into two branches, **TTS Playback Success** and **TTS Response Timeout**, so you can route the call differently depending on whether speech generation completed or timed out.

  ![Success and timeout branches produced by the TTS Response Timeout option](/images/pbx/rn-branch-for-tts-timeout.png)

- In the **Menu** and **Dial by Number** components, the **Invalid Input** branch is now named **No Match**.

  ![Renamed No Match branch on the Menu and Dial by Number components](/images/pbx/rn-cfd-nomatch.png)

- The **Dial by Number** component gains a **Matched** branch that connects straight to **Call End**.

  ![Matched branch wired to Call End on the Dial by Number component](/images/pbx/rn-cfd-dialbynumber.png)

- The **Transfer** component adds **IVR** (Interactive Voice Response, an automated caller menu) as a destination type.

  ![IVR added to the Transfer destination type list](/images/pbx/rn-cfd-transfer.png)

- The **Transfer** component also adds a **Dial Feature Code** option for custom destinations. Turn it on to enter the feature code you want dialed in the **Destination Number** field.

  :::caution
  In-call operation codes are not supported here, including Record (`*1`), Flip (`*01`), Transfer (`*3`, `*03`), and Park (`*5`, `*05`).
  :::

  ![Dial Feature Code option on a custom Transfer destination](/images/pbx/rn-custom-transfer.png)

#### Flow components

- In the **Condition** component, the **Invalid Input** branch is now named **No Match**.

  ![Renamed No Match branch on the Condition component](/images/pbx/rn-condition-nomatch.png)

#### Developer components

The single **Developer** entry in the left toolbox has been broken out into four separate components: **Internal Data Ops**, **Email Sender**, **Database Access**, and **HTTP Request**.

![Developer toolbox split into four standalone components](/images/pbx/rn-cfd-developer.png)

**Internal Data Ops** keeps the **Get** and **Set** operations on PBX internal data that the old Developer component offered, plus the following changes:

- New **Get** operations are available: **Get System Info**, **Get System Capacity**, **Get Extension Info**, and **Get Company Contact Info**.

  ![New Get operations available in Internal Data Ops](/images/pbx/rn-cfd-get.png)

- The **Set Agent Status** operation adds a **Log in to Last Queues** status. When it is chosen, agents are signed back in to every queue they were previously logged in to.

  ![Log in to Last Queues status for Set Agent Status](/images/pbx/rn-cfd-set-agent-status.png)

- Key configuration values now appear on the component in the workspace, making each block easier to identify at a glance.

  ![Component in the workspace showing its key configured values](/images/pbx/rn-cfd-panel.png)

**Email Sender** adds the following:

- Variables can be inserted into the **Subject** and **Content** fields.

  ![Variable insertion in the Email Sender Subject and Content fields](/images/pbx/rn-cfd-email-var.png)

- The email subject is shown on the component in the workspace for quick identification.

  ![Email Sender component displaying its subject in the workspace](/images/pbx/rn-cfd-panel-email.png)

**Database Access** and **HTTP Request** add the following:

- A **Timeout Destination** setting.

  ![Timeout Destination setting on the Database Access and HTTP Request components](/images/pbx/rn-dataaccess-timeout.png)

  With it enabled, the component splits into **Default Destination** and **Timeout Destination** branches so you can route the flow separately for a successful call and for a timeout.

  ![Default and timeout branches produced by the Timeout Destination setting](/images/pbx/rn-cfd-dataaccess-ce.png)

- The database server address (Database Access) or request URI (HTTP Request; URI is the web address the request is sent to) is shown on the component in the workspace for quick identification.

#### Other Call Flow Designer changes

- The **End Key** setting (**Call Flow Designer > Options > End Key**) was reworked. You can assign any single digit from `0` to `9` as the end key, or select **None** to turn the feature off.

  ![End Key setting under Call Flow Designer options](/images/pbx/rn-cfd-option.png)

- New variables and a function were added:
  - `$GetExtensionStatus{index}.isUnavailable` for the **GetExtensionStatus** component, reporting whether an extension is currently registered.
  - Related variables for the **GetSystemInfo**, **GetSystemCapacity**, **GetExtensionInfo**, and **GetCompanyContactInfo** components.
  - A `GET_JSON_ARRAY_ITEM` function that returns the object at a given index within a JSON array.

### Recording

- You can set recording prompts for one-click recording at **Call Features > Recording > Recording Tones**. When a prompt is configured, the system plays it to callers as authorized extension users start or stop recording during a call.

  ![Recording prompt settings for one-click recording](/images/pbx/rn-recording-prompt.png)

- Fixed a defect where call recordings contained loud static that rendered the audio unintelligible.

### SIP settings

SIP (Session Initiation Protocol) is the signaling protocol that sets up and ends calls. A **Call Connection Assurance** option was added at **PBX Settings > SIP Settings > Advanced > Other Options** to keep call setup stable for selected extensions.

![Call Connection Assurance option under SIP advanced settings](/images/pbx/rn-call-connection-assurance.png)

The option addresses a no-audio problem that could affect the first Cloud Voice App call after a computer restart in certain browser or operating-system environments. When one of the specified extensions signs in to the Cloud Voice App (Desktop or Web), the PBX places a call to the client, which auto-answers and hangs up right away, establishing a stable media path for every call that follows.

:::note
The whole sequence is invisible to the extension user. It does not use call concurrency and produces no call records.
:::

### Archive

Two settings were added to archive tasks at **System > Archive > Archive Task > Storage Configuration**:

![New storage settings for an archive task](/images/pbx/rn-archive-storage.png)

- **Storage Method**: choose whether archived files go into automatically created folders or straight into the storage path you selected, based on the task type (one-time or recurring).
- **Organize Files by Date**: choose whether files are sorted into date-named subfolders (in `YYYYMMDD` format) within the storage path.

### Event notification

The **Your AI Transcription Usage is Reaching the Capacity Limit** notification gains a **Capacity Alert Threshold** setting (**System > Event Notification > Event Type > Reminder > Your AI Transcription Usage is Reaching the Capacity Limit > Event Detail > Event Setting**). Set your own thresholds to be alerted as AI transcription usage climbs toward the limit.

![Capacity Alert Threshold setting for the AI transcription usage notification](/images/pbx/rn-ai-event.png)

### Security

You can now list several allowed public IP addresses for Cloud Voice App connections at **Security > Security Settings > Security Options > Allowed Client Public IP Address**.

![Allowed Client Public IP Address list under security options](/images/pbx/public-ip-for-linkus.png)

If your company reaches the internet through more than one public IP address, specify the addresses your employees' Cloud Voice App (Web and Desktop) may connect from. The PBX then recognizes and accepts those connections, preventing the dropped calls or one-way audio that an unexpected IP change during connection can cause.

:::caution
This is an allowlist: as soon as you add one address, the PBX accepts Cloud Voice App connections only from the addresses on the list. Add every public IP address your users connect from, covering each office and remote site. Leaving one out blocks those users, which shows up as failed sign-ins, dropped calls, or one-way audio.
:::

### Zendesk integration

- The Zendesk integration's authentication was updated to meet Zendesk's new requirements.

  :::note
  If your PBX is already integrated with Zendesk, you can update it in place: click **Authorize** in the reminder prompt at **Integrations > Helpdesk** before the deadline. There is no need to disconnect and reconfigure the integration.
  :::

  ![Authorize prompt for updating the Zendesk integration](/images/pbx/rn-zendesk-update.png)

### API

- Two interfaces were optimized:
  - **Auto Recording**: `autorecord/get` and `autorecord/update` add `start_prompt` and `end_prompt` parameters, used to query or set the prompt played when authorized extension users start or stop recording during a call.
  - **Voicemail**: `vm/query`, `vm/get`, `vm/download`, `vm/update`, and `vm/delete` add a `uid` parameter, used to return the associated CDR ID (CDR is Call Detail Record, the log entry for a call) or to filter voicemails by that ID.
- Three system-event API events were added:

  | Event | Meaning |
  |-------|---------|
  | (30034) System Event Notification (Information) | An information-level PBX system event occurred. |
  | (30035) System Event Notification (Warning) | A warning-level PBX system event occurred. |
  | (30036) System Event Notification (Alert) | An alert-level PBX system event occurred. |

### CDR

- Fixed a defect where no CDR was generated for the agent extension when an agent answered an inbound queue call but the caller hung up during the agent-ID announcement.

:::note
This is a beta build. If something does not work as expected, report it through your usual support channel so it can be fixed before the final release.
:::
