Browse the docs

Deploy

Bring your own SIP trunk

Keep your carrier and your numbers. Any provider that sends SIP to a URI with digest authentication works with CallShift.

Register a number on a new trunk

POST/v1/phones/sip connects the trunk and registers the number in one request.

JSON
{
  "phoneNumber": "+33187654321",
  "name": "acme-sip",
  "terminationUri": "sip.example.com",
  "transport": 1,
  "sipUsername": "acme",
  "sipPassword": "your-sip-password",
  "requireInboundAuth": true,
  "agentId": "550e8400-e29b-41d4-a716-446655440000"
}
FieldMeaning
terminationUriWhere CallShift sends your outbound calls
transport1 UDP, 2 TCP, 3 TLS
sipUsername, sipPasswordThe credentials your carrier expects
requireInboundAuthGenerate credentials your carrier must send on inbound calls (off by default)
sipTrunkIdAdd the number to an existing trunk instead; the trunk fields are then ignored

Route inbound calls

Each trunk gets its own authenticated inbound connection. Its origination URI and credentials, which you configure at your carrier, are under Connection details on the trunk, at app.callshift.ai/phone-numbers. Then assign the agent to the number.

Calls per second

The calls-per-second limit (callsPerSecond) belongs to the trunk and is shared by every number on it, and by every campaign that dials from them. GET/v1/trunks reads it; you change it in the dashboard. It is usually what sets the pace of a campaign, more than the number of lines: the outbound campaign simulator works out how long yours will take.

Your carrier

A carrier works with CallShift when it sends a number's calls to a SIP URI, not when it delivers them only to a device registered on the line. The sections below give, carrier by carrier, what to copy from one side to the other.

Twilio Elastic SIP Trunking

Numbers on a Twilio account need no trunk: importing them is simpler, see Phone numbers. A trunk is for the numbers Twilio routes over Elastic SIP Trunking. In the Twilio Console, Elastic SIP Trunking › Trunks, create a trunk, then (Twilio guide):

  1. Termination. Choose the trunk's Termination SIP URI, name.pstn.twilio.com, and under Authentication create a credential list with a username and a password. To keep the calls in Europe, use the Dublin or the Frankfurt edge: name.pstn.dublin.twilio.com or name.pstn.frankfurt.twilio.com.
  2. Numbers. Associate the Twilio number with the trunk.
  3. CallShift. Register the number on a new trunk (above), with the values of the table below.
  4. Origination. Back in Twilio, add an Origination SIP URI: sip: followed by the origination URI in the Connection details of the CallShift trunk.
FieldFrom Twilio
phoneNumberThe Twilio number, in E.164 (+33187654321)
terminationUriThe Termination SIP URI, such as acme.pstn.twilio.com
transport1 (UDP), Twilio's default; 3 (TLS) if you turn on Secure Trunking
sipUsername, sipPasswordThe username and password of the credential list
requireInboundAuthfalse: Twilio sends no credentials with inbound calls
  • Caller ID. Twilio refuses an outbound call whose caller ID is neither a number of the account nor a verified caller ID: the trunk calls from its Twilio number.
  • E.164. Twilio rejects a number without its + (400 Bad Request) and passes inbound numbers with it.
  • Calls per second. By default, a Twilio trunk places 1 call per second; you can raise it to 5 in its Termination settings, and further through Twilio's sales team (Twilio guide). Set the same limit on the CallShift trunk: Twilio refuses the calls above it.

Remove a number

DELETE/v1/phones/sip/{phoneId} deletes the number and detaches it from its trunk.