Managing External Skill Transfers via the CXone Routing Engine
Executive Summary & Architectural Context
Enterprise contact centers rarely operate in isolation. Often, a call must be transferred from an internal NICE CXone agent to an external BPO (Business Process Outsourcer), a legacy on-premise PBX, or a specialized third-party vendor.
The naive approach is to allow agents to dial the external 1-800 number directly via their dialpad. This is an architectural disaster. It blinds the analytics engine (the call appears as an outbound dial, breaking the inbound SLA chain), prevents Studio scripts from passing conversational context (like account numbers) to the vendor, and forces the enterprise to pay for two concurrent telecom legs (hairpinning) for the duration of the call.
The engineering solution is the External Skill Transfer pattern. By routing the transfer through the CXone Studio engine using predefined Skills and the SPAWN or PLACECALL actions, you maintain total reporting visibility, enable SIP REFER (Takeback and Transfer) to eliminate hairpinning, and ensure a seamless customer experience.
Prerequisites, Roles & Licensing
- Platform: NICE CXone.
- Roles & Permissions:
Admin > Skills,Studio > Script > Edit. - Platform Dependencies:
- SIP Carrier configuration (if SIP REFER is required to drop the media leg).
The Implementation Deep-Dive
1. Architecting the “External” Skill
Do not let agents dial numbers. Give them a Skill.
- Navigate to ACD > Contact Settings > Skills.
- Create a new Outbound skill:
OB_Vendor_BPO_Transfer. - Do not assign any agents to this skill. It exists purely as a routing mechanism.
- Navigate to your Agent interface configuration and add this Skill to their address book or quick-transfer list. When the agent needs the vendor, they transfer the call to this Skill.
2. The Transfer Studio Script
When the agent transfers the call to OB_Vendor_BPO_Transfer, it triggers a specific Studio script designed to bridge the external leg.
- Create a new Studio Script. Link it to the
OB_Vendor_BPO_Transferskill. - Drag a SNIPPET node. Collect any variables the internal agent passed over (e.g., the customer’s Account Number).
- Drag a PLACECALL action onto the canvas.
- Dest:
+18005559999(The external vendor’s toll-free number). - CallerID: Pass the original customer’s ANI, not the contact center’s default outbound number. This ensures the external vendor knows who is actually calling.
- Dest:
- Passing Context (UUI): If the external vendor also uses a modern PBX, you can pass the Account Number as invisible metadata. In the
PLACECALLaction, use theUUI(User-to-User Information) field to attach a SIP header containing the Account Number.
3. Eliminating Hairpinning with SIP REFER
If a customer calls CXone (Leg 1), and CXone uses PLACECALL to dial the vendor (Leg 2), CXone must bridge the two legs together. The audio flows: Customer -> CXone -> Vendor. If the call lasts 2 hours, CXone bills you for 2 hours of platform usage, even though no CXone agents are involved.
To solve this, use Takeback and Transfer (TNT) via SIP REFER.
- Instead of
PLACECALL, use the TRANSFER action. - Configure your telecom carrier settings in CXone to support SIP REFER.
- When the
TRANSFERnode executes, CXone sends a SIP REFER message back to the originating carrier (e.g., AT&T). It tells AT&T: “Connect the customer directly to 1-800-555-9999 and drop me out of the loop.” - The Result: The audio flows directly
Customer -> Vendor. CXone drops the call, freeing up ports and eliminating per-minute billing for that interaction.
Validation, Edge Cases & Troubleshooting
Edge Case 1: The Blind Transfer Drop
If you use the TRANSFER (SIP REFER) action, it is a “fire and forget” mechanism. If the external vendor’s number is busy or disconnected, the carrier will drop the call, and the customer will be disconnected.
- Troubleshooting: If you require a “Warm Transfer” (where the system verifies the vendor answers before connecting the customer), you cannot use SIP REFER. You must use
PLACECALLorLINKand accept the hairpinning costs.
Edge Case 2: Reporting Anomalies
When an agent transfers a call to an External Skill, the Contact History report will show the original inbound contact ending, and a new outbound contact beginning.
- Solution: To trace the entire customer journey, your BI analysts must use the
ContactIDandMasterContactIDfields. When a script spawns or transfers a call, theContactIDchanges, but theMasterContactIDremains the same across the entire lifecycle, linking the internal agent’s leg to the external vendor’s leg.
Official References
- CXone Studio PLACECALL Action: NICE CXone Help: PLACECALL Action
- SIP REFER / Takeback and Transfer: NICE CXone Help: TRANSFER Action
- Understanding MasterContactID: NICE CXone Help: Contact ID vs Master Contact ID