ThunderPhone 2.0 is live.Self-serve, from 2¢/min.Read the announcement

Facts verified against published sources on .

NICE CXone AI voice agent integration

A NICE CXone Studio script can place a call to a ThunderPhone AI voice agent with SIP headers that carry the ContactID and anything else the script knows. When the agent is done, it hangs up, and a REST API action in the script fetches the agent's hand-off by ContactID.

Of the eight platforms ThunderPhone documents, CXone has the most open questions on the way back. NICE doesn't document whether a script continues after Placecall when the placed call ends, so confirm that with NICE before you build on it.

Setup guide: Connect from NICE CXone has the endpoint request, the Studio actions, the transfer entry and the REST API action.

What it does for CXone teams

The agent gives a Studio script a conversational step without a separate bot platform. The script decides which contacts reach it, passes skill, account or language context as headers, and gets back a summary and intent it can route the contact on. The agent itself runs on ThunderPhone, with its own prompt, voice, tools and test suites, so changing what it says doesn't mean redeploying the script.

How the call flows

In. Before Placecall, the script adds a Sipputheader action with header X-Call-ID set to ContactID. CXone sends no call-id header of its own, so this one is how ThunderPhone links the call to the contact; it's stored as the call's external_call_id. More Sipputheader actions add context, such as X-Skill set to support, which reaches the prompt as {{sip_x_skill}}.

Placecall dials a phone number over a CXone trunk group, not a SIP address. The agent's SIP endpoint therefore uses an IP allowlist of your CXone cluster's signalling ranges plus a dial-in number for Placecall to dial, and the trunk group sends that number to sip.thunderphone.com over TLS or TCP.

Back. CXone reads SIP headers only on the INVITE and its final response, so the agent can't hand data back in headers. It returns the call: it says goodbye and hangs up. Once the script has the caller again, a REST API action calls ThunderPhone's hand-off lookup with ContactID and reads the summary and intent.

Setup at a glance

  1. Ask your NICE account representative to turn on custom headers for the SIP trunk group.
  2. Get your cluster's signalling ranges from NICE and create an IP-allowlist SIP endpoint with the number Placecall will dial.
  3. In the Studio script, add Sipputheader for X-Call-ID and any other context, then Placecall over the trunk group.
  4. Add a return transfer entry to the agent, confirm with NICE how the script takes the caller back, and add the REST API action.
  5. Call the script, ask the agent for a person, and check that the REST API action returns the hand-off.

Limits and prerequisites

  • NICE has to switch on custom headers for the trunk group before CXone sends them.
  • The hand-back needs confirming. NICE doesn't document that a script continues after Placecall when the placed call ends. Other AI providers' CXone integrations signal the script through CXone's Signal API before hanging up. ThunderPhone doesn't call the Signal API.
  • No REFER. NICE doesn't document accepting a REFER from the agent.
  • REST action limits. The REST API action times out after 10 seconds by default (under 90 at most) and reads responses up to 32 KB.
  • Shared addresses. CXone's addresses are shared by all its customers. Pick a long dial-in number nobody would guess, make sure CXone sends it to ThunderPhone rather than out to the phone network, and don't publish it.

Frequently asked questions

Can NICE CXone send calls to a ThunderPhone AI voice agent?

Yes. A Studio script uses Sipputheader to add X-Call-ID and any other context, then Placecall dials a number that the trunk group sends to the agent's SIP endpoint. NICE has to enable custom headers on the trunk group first.

How does the CXone script get the AI agent's result?

The agent hangs up, and a REST API action in the script calls ThunderPhone's hand-off lookup with the ContactID. It returns the summary and intent the agent wrote at the transfer, which the script can route the contact on.

Does the script continue after the AI agent hangs up?

NICE doesn't document it. Some AI providers signal the script through CXone's Signal API before they hang up; ThunderPhone doesn't. Confirm with NICE how your script takes the caller back before you rely on this integration.

Can I use ThunderPhone alongside NICE's own AI products?

The integration is a Studio script step, so it sits wherever you put it in your script. Which contacts reach ThunderPhone and which reach any other bot is your script's decision.

Is ThunderPhone on CXexchange?

No. ThunderPhone isn't listed on NICE CXexchange today. The integration uses Studio actions you already have.

Related