RingCX

View as Markdown

RingCX supports Intelligent Virtual Agent (IVA) integrations over SIP, letting you route voice queue calls to a Synthflow AI agent. You create an IVA integration in RingCX, import the workflow number into Synthflow as a custom phone number, build a workflow that hands calls to Synthflow, and use the JavaScript node in Workflow Studio to pass caller context to the agent.

Prerequisites

  • A RingCX account with admin access.
  • A Synthflow account on the Enterprise plan with a deployed agent.
  • A RingCX workflow channel number to use as the SIP URI.

Import the number into Synthflow

Before configuring RingCX, import the workflow channel number into Synthflow as a custom phone number.

  1. In the Synthflow dashboard, go to Phone Numbers and click Import Phone Number.
  2. Configure the following fields:
FieldValue
Phone ProviderCustom
Phone NumberYour RingCX workflow channel number
Friendly NameA label such as RingCX
SIP Domainsip.ringcentral.com
  1. Click Import to save the number.

After importing, the Origination URI field shows sip:sip.synthflow.ai:32681. This is the address RingCX sends calls to and is auto-populated by Synthflow.

Synthflow Phone Numbers page showing the imported RingCX number with SIP Domain and Origination URI

  1. Open the agent you want to receive calls, go to the Configure tab, scroll to the Phone number section, select the RingCX number you imported, and click Save.

One phone number can be assigned to one inbound agent at a time. If you need to reassign the number, remove it from the current agent first. For more on number management, see Phone numbers.

Create the IVA integration in RingCX

  1. Sign in to RingCX and click the Admin tile.
  2. Click AI Tools in the left navigation bar, then click IVA Integrations.
  3. Click New Integration and fill in the fields:
FieldValue
NameA label such as Synthflow.Ai
DescriptionOptional
SIP URIsip:<workflow_number>@sip.synthflow.ai:32681
TransportUDP

Replace <workflow_number> with the channel number you imported into Synthflow (in E.164 format, e.g. +15206414405).

  1. Select the Active checkbox to make the integration available in your workflows.
  2. Click Save.

The SIP URI must include the phone number in the user part. If you omit it (e.g. sip:sip.synthflow.ai:32681 with no number), RingCX sends an IP-only Request-URI and Synthflow rejects the call because it cannot determine which agent should handle it.

RingCX IVA Integrations page showing the Synthflow integration with SIP URI and transport settings

Build the workflow

Add the IVA to a workflow

  1. Sign in to RingCX and click the Admin tile.
  2. Click Categorization in the left navigation bar, then click Workflows.
  3. Expand the workflow group that contains your target workflow, then click the workflow.
  4. Click Workflow Studio in the left navigation panel.
  5. Drag and drop a JavaScript node from the left panel and place it before the IVA node (see Pass caller context with the JavaScript node below).
  6. Drag and drop the IVA node from the left panel onto the canvas after the JavaScript node.
  7. Hover over the IVA node and click Edit.
  8. Select the Synthflow integration you created.
  9. Optionally provide a Context Filter to control what session data is shared with Synthflow (e.g. visibleData).
  10. Click OK.
  11. Connect the JavaScript node to the IVA node. When prompted for a Connection ID, enter success.

Workflow Studio showing a workflow with Start, Answer, JavaScript, Connect IVA, and Hangup nodes

Once the IVA session completes, the call returns to the workflow and follows one of the configured connections:

  • Success: The IVA session completed successfully and returned a result. The customer is still connected and the workflow continues.
  • Failed: The IVA session did not complete successfully. The customer is still connected and the workflow continues on the error handling path.
  • Disconnected: The customer disconnected before or during the IVA session. The workflow does not continue.

Pass caller context with the JavaScript node

A JavaScript node placed before the IVA node is required to pass the caller’s ANI (phone number) and other metadata to Synthflow. Without it, the X-Bot-Context SIP header arrives empty and your agent receives no caller information.

  1. Drag and drop the JavaScript node from the left panel and place it before the IVA node.
  2. Hover over the JavaScript node and click Edit.
  3. Add the following script to build sessionData with the caller’s ANI:
1var ani = ivr.getAni();
2var uii = ivr.getUii();
3
4sessionData = {
5 visibleData: {
6 ani: ani,
7 callID: uii
8 }
9};
10
11ivr.debug("sessionData to IVA: " + JSON.stringify(sessionData));

Workflow Studio with JavaScript Properties panel open showing sessionData code

Do not declare sessionData with var. Using var sessionData creates a local variable that shadows the workflow-level global, which prevents the data from reaching the IVA node.

Filter context sent to the IVA

You may want to send only part of the workflow sessionData to Synthflow. Configure a Context Filter in the IVA node properties:

  1. Hover over the IVA node and click Edit.
  2. Enter a filter name in the Context Filter field (e.g. visibleData). The workflow searches sessionData for a property matching that name and sends only that nested object to the IVA.

Connect IVA Properties panel showing the Synthflow integration and Context Filter field

The Context Filter is optional. If left empty, the full sessionData is sent to the IVA. If the filter name does not match any property in sessionData, the full sessionData is sent as a fallback.

Read IVA response data

After the IVA session completes and the call returns to the workflow, any metadata returned by Synthflow is available in the sessionData property. Use a JavaScript node after the IVA node to access this data.

Workflow Studio showing JavaScript Connection Properties and Connect IVA Properties panels

Add the RingCX Handoff action

The RingCX Handoff action ends the Synthflow IVA session and returns the call to the RingCX workflow. When the action fires, Synthflow sends a payload back to RingCX containing any variables you define, then the RingCX workflow continues from the IVA node’s Success connection.

  1. In the Synthflow dashboard, open the agent assigned to your RingCX number.
  2. Go to the Actions tab and click Add Action.
  3. Select RingCX Handoff.
  4. Set the Condition Description to tell the agent when to trigger the handoff (e.g. “When the customer says goodbye”).
  5. Define payload fields using the Payload section. Each field is a key-value pair that gets sent back to RingCX as part of the IVA response data. For example, add a final field set to true to signal that the handoff is complete.

RingCX Handoff action configuration showing condition description, payload fields, and payload preview

You can add multiple payload fields to pass collected information back to the RingCX workflow. For example, if your Synthflow agent collects the caller’s intent, account number, or appointment preference during the conversation, add those as payload fields so the RingCX workflow can route or act on them.

RingCX receives the payload as context only. The RingCX workflow owner must parse the payload in a downstream JavaScript node before routing on fields like intent.

Usage

Inbound call handling

Once configured, calls that reach the IVA node in your workflow are routed to your Synthflow AI agent. The agent answers, follows its configured prompt, and can perform any available actions (booking, data collection, handoff).

Returning calls to RingCX

Use the RingCX Handoff action to end the IVA session and return the call to the RingCX workflow. Define payload variables on the action to pass data collected by Synthflow (such as caller intent, account details, or next steps) back to RingCX, where the workflow can parse and route on them.

Call transfers

Direct call transfers from Synthflow are not supported on RingCX trunks. The RingCX SIP trunk does not allow Synthflow to initiate transfers to external numbers or SIP endpoints during a call.

To transfer a caller to a live agent or another destination, use the RingCX Handoff action to return the call to the RingCX workflow, then route it from there using RingCX’s built-in queue, skill, or transfer nodes. This approach gives you full control over routing logic within RingCX Workflow Studio.

Call recordings and transcripts

Call recordings and transcripts are available in the Synthflow dashboard under the agent’s call history, the same as any other Synthflow call.

FAQ

The SIP URI format is sip:<workflow_number>@sip.synthflow.ai:32681. Replace <workflow_number> with your RingCX workflow channel number in E.164 format (e.g. +15206414405). The number must also be imported as a custom phone number in the Synthflow dashboard.

Select UDP in the Transport field when creating the IVA integration.

Set the SIP Domain to sip.ringcentral.com when importing the RingCX workflow number as a custom phone number in Synthflow.

The JavaScript node builds the sessionData object that RingCX sends to Synthflow in the X-Bot-Context SIP header. Without it, your agent receives no caller context (ANI, call ID, or any custom metadata).

The call follows the Failed connection path in your workflow. The customer remains connected, so you can route them to a queue, another IVA, or a hangup node.

No. The RingCX SIP trunk does not support direct call transfers from Synthflow. Use the RingCX Handoff action to return the call to the RingCX workflow, then handle routing with RingCX’s queue, skill, or transfer nodes.

Add payload fields to the RingCX Handoff action. Each field is a key-value pair sent back to RingCX when the IVA session ends. Use a JavaScript node after the IVA node in your RingCX workflow to parse the returned sessionData and route based on fields like intent or account number.