SIP Integration with NICE CXone

SIP trunking is only available on the Synthflow Enterprise Plan.

This guide covers connecting NICE CXone to Synthflow via SIP trunk. CXone Studio scripts route calls to Synthflow using a SIP Backchannel pattern, enabling AI-driven handling with escalation back to live CXone agents.

Prerequisites

RequirementDetail
NICE CXoneActive tenant with Admin access; SIP and Studio scripting enabled
SynthflowEnterprise Plan with a configured AI assistant (v2.0+)
Phone NumberAt least one DID provisioned in CXone (E.164 format)
NetworkFirewall allows SIP (UDP/TCP 32681 or TLS 32682) and RTP media between CXone and Synthflow

NICE CXone Configuration

CXone uses a SIP Backchannel (Parent/Child script) pattern to connect to external AI systems like Synthflow. The Parent script handles the main call leg; the Child script places a dedicated SIP leg to Synthflow.

All configuration is done in the CXone Admin Console and CXone Studio.

Step 1: Configure the External SIP Trunk

  1. In CXone Admin Console, navigate to ACDACD ConfigurationPhone Carriers.
  2. Click Add Carrier and configure:
FieldValue
NameSynthflow AI
Carrier TypeSIP
Primary SIP Proxysip.synthflow.ai
Port32681 (UDP/TCP) or 32682 (TLS)
TransportUDP/TCP or TLS
AuthenticationIP-based (whitelist Synthflow IPs) or Digest
UsernameFrom Synthflow — only required if using Digest auth
PasswordFrom Synthflow — only required if using Digest auth
  1. Add Synthflow’s SIP signaling IPs to the allowed list. Contact Synthflow support for the current IP list.
  2. Save the carrier configuration.

Step 2: Create a Pseudo Phone Number for Synthflow

A pseudo number is an internal E.164 number used to route calls to Synthflow via the SIP trunk — it is never dialed externally.

  1. In CXone Admin Console, go to ACDPhone NumbersAdd Phone Number.
  2. Create a new number in E.164 format (e.g. +1XXXXXXXXXX) mapped to the Synthflow AI carrier.
  3. Note this pseudo number — it will be used in the Studio PLACECALL action.

Step 3: Create the Parent/Child Studio Script

CXone uses a two-script pattern to manage the SIP connection to Synthflow.

Parent Script (handles inbound call):

  1. In CXone Studio, create a new script called Synthflow_Parent.
  2. Add the following actions in sequence:
    • ASSIGN: Set MasterId = {ContactId} (captures the current contact ID)
    • REQAGENT: Point to the Synthflow pseudo number to initiate the Child script
    • ONSIGNAL: Listen for escalation signal from Synthflow (triggers live agent routing)
    • REQAGENT: Route to the appropriate CXone skill/queue when ONSIGNAL fires

Child Script (places SIP call to Synthflow):

  1. Create a new script called Synthflow_Child.
  2. Add the following actions in sequence:
    • SIPPUTHEADER: Set SIP headers for Synthflow context:
HeaderValue
X-ContactId{ContactId}
phone_numberCaller’s E.164 number (e.g. +14155550123)
  • PLACECALL: Dial the Synthflow pseudo number via the Synthflow AI carrier
    • Set LinkContactId = {MasterId}
    • Set SourceLegPersistent = True

LinkContactId links the Child call leg to the Parent contact, enabling proper reporting and transfer handling.

Step 4: Configure Escalation Back to CXone

When Synthflow determines escalation is needed:

  1. Synthflow calls the CXone Admin APISignal a Contact endpoint with the Contact ID and queue parameter.
  2. The Parent script’s ONSIGNAL action receives the signal.
  3. The End Call block drops Synthflow from the conversation.
  4. The REQAGENT action routes the caller to the target CXone skill or queue.

The CXone Admin API “Signal a Contact” call must include the Contact ID captured in MasterId and the p1 parameter specifying the target queue (e.g. p1=billing).

Synthflow Configuration

Add the SIP Number

  1. Go to the Synthflow Phone Numbers page.
  2. Click Add NumberCustom / SIP.
  3. Enter the phone number in E.164 format (same pseudo number configured in CXone).
  4. Fill in the SIP connection details:
FieldValue
Termination URIYour CXone SBC gateway hostname or IP
SIP UsernameYour SIP authentication username
SIP PasswordYour SIP authentication password
Outbound Proxy (if required)CXone SBC proxy address (if required)

Be precise when copying SIP credentials. Incorrect values will cause registration failure.

Attach to the Assistant

  1. Go to Assistants and create or select an assistant (v2.0+).
  2. In the assistant settings, attach the SIP number you just created.
  3. Wait 1–2 minutes for SIP registration to complete.

The SIP trunk is created at the moment of attaching the SIP number to the assistant.


Call Flow Summary

ScenarioFlow
Inbound to AICaller → PSTN → CXone ACD → Parent Script → Child Script (PLACECALL) → SIP Trunk → Synthflow AI Agent
AI signals escalationSynthflow AI → CXone Admin API (Signal Contact) → Parent Script (ONSIGNAL) → REQAGENT → Live Agent
AI transfers to live agentParent script drops Synthflow leg → Caller connected to CXone skill queue → Live Agent
Outbound from AISynthflow AI → SIP INVITE → CXone SBC → PSTN → Callee

Verification

TestWhat to check
Inbound callCall the CXone DID. Verify the Parent/Child script executes and Synthflow AI answers. Check two-way audio.
Contact ID passthroughVerify Synthflow receives X-ContactId header with the correct CXone contact ID.
Escalation signalTrigger escalation during a Synthflow call. Confirm the Admin API signal fires and the Parent script routes to the correct queue.
Agent handoffConfirm the caller is connected to a live agent after escalation with no audio gaps.

Quick Troubleshooting

IssueFix
Registration failsVerify Termination URI is the correct CXone SBC address. Check credentials and firewall (UDP/TCP 32681 or TLS 32682).
Child script PLACECALL failsConfirm pseudo number is active and mapped to the Synthflow AI carrier. Check carrier credentials.
Escalation signal not receivedVerify the CXone Admin API endpoint and Contact ID are correct. Check API authentication.
ONSIGNAL does not fireEnsure MasterId is correctly set in the Parent script before the Child script executes.
One-way or no audioVerify RTP ports are open bidirectionally. Confirm G.711 codec negotiation.
Calls drop immediatelyCheck TLS configuration on the SIP trunk. Verify Synthflow IPs are in the CXone allowlist.

Reference

  • NICE CXone Studio Documentation: help.niceincontact.com (search “Studio Scripts”)
  • CXone SIP Phone Configuration: help.niceincontact.com (search “SIP”)
  • CXone Admin API Reference: developer.niceincontact.com
  • Synthflow SIP Overview: docs.synthflow.ai/about-sip
  • Synthflow X-EI SIP Header: docs.synthflow.ai/x-ei-sip-header