Attended Transfer Guide

Attended Transfer via API Guide

Overview

An attended transfer allows a user to place an active call on hold, establish a new call to consult with another party, and then transfer the original caller to that new party. This guide walks through the complete process using the NS API.

Prerequisites

  • Correctly scoped API key and other credentials as needed
  • Understanding of call session management (see API reference endpoints under Calls (live/active) calls heading, referenced below)

Step-by-Step Process

Step 1: Initial Call Setup

Scenario: Inbound call from +1-555-555-5555 to +1-111-111-1111, routed to user 1000. User 1000 answers on their webphone.

Step 2: Retrieve Active Call Information

Use the Read Active Calls in Domain endpoint to get details about the current call.

Endpoint: GET /domains/{domain}/calls
Documentation: https://docs.ns-api.com/reference/get_domains-domain-calls

Key Response Fields to Note:

{
  "call-session-id": "1010101010101010101",
  "call-orig-call-id": "[email protected]",
  "call-term-call-id": "123451234512345-1a2d3f4g5h6j7k8l",
  "call-term-user": 1000,
  "call-term-domain": "TEST"
}

Important: Save the call-orig-call-id - you'll need it for the final transfer step.

Step 3: Place Original Call on Hold

Use the Hold Active Call endpoint to place the original call on hold.

Endpoint: PATCH /domains/{domain}/users/{user}/calls/{call_id}/hold
Documentation: https://docs.ns-api.com/reference/patch_domains-domain-users-user-calls-call-id-hold

Parameters:

  • call_id: Use the call-term-call-id from Step 2
  • domain: The 1000 user's domain
  • user: The user placing the call on hold, 1000

Step 4: Initiate "Consultation" Call

Create a new call from the transferring user to the target recipient. This is the call between the original recipient and the intended transfer target, allowing for a "consultation" to happen basically.

Endpoint: POST /domains/{domain}/users/{user}/calls
Documentation: https://docs.ns-api.com/reference/post_domains-domain-users-user-calls

Example: User 1000 calls user 1010 for consultation.

Step 5: Retrieve New Call Information

Use the Read Active Calls in Domain endpoint again to get details about the "consultation" call.

Key Response Fields:

{
  "call-session-id": "202020202020202020",
  "call-orig-user": 1000,
  "call-term-user": 1010,
  "call-orig-info": "active",
  "call-term-info": "active"
}

Important: Save the call-session-id again, you'll need it for the next transfer.

Step 6: Complete the Attended Transfer

Use the Transfer Call endpoint to finalize the attended transfer.

Endpoint: PATCH /domains/{domain}/users/{user}/calls/{call_id}/transfer
Documentation: https://docs.ns-api.com/reference/patch_domains-domain-users-user-calls-call-id-transfer

cURL Example:

curl --request PATCH \
  --url https://your-server.netsapiens.com/ns-api/v2/domains/test2/users/203/calls/[email protected]/transfer \
  --data '{
    "hostname": "your-server.netsapiens.com",
    "call-destination-session-id": "202020202020202020"
  }'

Parameters:

  • call_id (in URL): Use the call-orig-call-id from Step 2
  • hostname: The core server hostname
  • call-destination-session-id: The call-session-id from Step 5

Important Notes

API Documentation Correction

⚠️ Important: As of 44.2, the API documentation incorrectly states that call-term-user is required for the transfer endpoint. This has been corrected in future versions of the documentation, however please observe the following clarification for the existing documentation:

Do NOT includecall-term-user in your transfer request - including it will prevent the attended transfer from completing successfully.

Call ID Reference Guide

  • For holding the call: Use call-term-call-id
  • For the final transfer: Use call-orig-call-id
  • For destination session: Use call-session-id from the consultation call

Error Handling / Best Practices

  • Verify all calls are in "active" state before proceeding
  • Ensure proper call session IDs are used for each step
  • Check that the consultation call is successfully established before attempting transfer

Summary

The attended transfer process involves:

  1. Retrieving original call details
  2. Placing original call on hold
  3. Creating consultation call
  4. Retrieving consultation call details
  5. Executing the transfer with proper session IDs

Did this page help you?