Connect your SIP trunk, PBX or contact centre to Ringg AI: trunk settings, network and codecs, agent routing headers, context passing and REFER transfers.
Your own voice platform (PBX, SBC or contact centre) talks to Ringg over standard , with no telephony provider in between: you keep your carrier and numbers, and Ringg supplies the agent that handles the conversation (bring your own telephony). A trunk works in two directions:
Inbound: your switch sends an INVITE to Ringg. Ringg answers, picks the agent and runs the conversation.
Outbound: Ringg sends an INVITE to your trunk, and your platform routes the call to the customer.
Enterprise workspaces configure SIP trunks themselves: Numbers → Add number, select SIP, then open Configure provider (the gear) to reach the Configure SIP Trunks panel. With no trunk yet, the panel opens on the Add form. SIP isn’t offered on the Saudi Arabia or UAE regional dashboards; there, and for other workspaces, contact Ringg.
Every trunk field, saving, and the trunk appearing in the list
1
Add a trunk
In Configure SIP Trunks, select Add and fill in the trunk:
Field
Shown for
Notes
Name
All
Required.
Direction
All
Inbound (default), Outbound or Both.
Inbound sources
Inbound, Both
Public IPv4 addresses or CIDR blocks, /18 or narrower, that your INVITEs come from. Add at least one. A range that overlaps another trunk’s is refused.
Outbound target
Outbound, Both
host:port where Ringg sends INVITEs. The port is required.
Tech prefix
Outbound, Both
Optional. Prepended to the dialled number; 1–16 characters (A–Z, 0–9, #, *).
Strip digits
Outbound, Both
Optional. Removes this many leading characters (0–20) from the dialled number; the + counts as one.
Transport
All
UDP (default), TCP or TLS.
Authentication
All
Off by default. See below.
A trunk with direction Both: inbound sources, outbound target, tech prefix, strip digits
With Authentication on, choose the Auth mode: Register (periodic REGISTER to your platform; needs direction Outbound or Both) or Digest (answers 401 challenges on outbound INVITEs). Then enter Username, Password and optionally Realm (defaults to the outbound host). Register also takes Expires (seconds), 60 to 86400 (default 3600), and Register delay (seconds), 0 to 3600 (default 0).
The Authentication fields for Register mode
2
Save
”SIP trunk created successfully.” appears and the trunk is listed. Use the pencil to edit it or the trash icon to delete it.
sip:sip.ringg.ai:5060 UDP or TCPsips:sip.ringg.ai:5061 TLS
Use sip.ringg.ai as the destination in your trunk configuration. Ringg shares the underlying ingress and media IP addresses with you during onboarding, for your firewall and ACL rules.Media encryption follows the signalling transport, and is not configured separately. Connect over TLS on 5061 and the media is negotiated as SDES-SRTP (RTP/SAVP) using the AES_CM_128_HMAC_SHA1_80 cipher suite. Connect over UDP or TCP on 5060 and the media is plain RTP. If you require encrypted media, use TLS. There is no option to run SRTP over a plaintext signalling transport.
For TLS, always connect to sips:sip.ringg.ai:5061 rather than to the IP address. The certificate is issued for the hostname sip.ringg.ai, so a client that connects by IP and validates the certificate will fail on a hostname mismatch.
Media is bridged on the same address as signalling.
Setting
Value
RTP IP
Shared during onboarding
RTP ports
10000 to 60000 UDP
Encryption
SDES-SRTP on TLS trunks, plain RTP on UDP and TCP trunks
The most common cause of a connected call with no audio is a firewall that permits SIP on 5060 but blocks the RTP range. Allow UDP 10000-60000 in both directions to the Ringg media addresses before testing.
Ringg supports RFC 4028 session timers with a minimum Session-Expires of 1800 seconds. A shorter value is rejected with 422 Session Interval Too Small. Either raise the value on your side or omit the header.
Ringg terminates the SIP leg, bridges the audio into the AI bot engine, and runs the conversation using the agent configuration resolved from the call. If the agent decides to hand the call to a human, Ringg sends a SIP REFER back to your platform.
Ringg authenticates inbound calls by source IP. Send Ringg the signalling IP or CIDR your platform originates from, and it is added to the inbound ACL.Ringg accepts public IPv4 addresses and CIDR blocks up to /18; anything broader, IPv6 and private ranges are rejected. If your carrier publishes a wider egress pool, send the specific ranges you originate from.
Ringg resolves the agent in this order: X-Agent-ID first, then X-CLIENT-ID, then the dialled number.
Method
Use it when
X-Agent-ID
Your platform already knows which agent should handle the call. Ringg routes straight to it and skips every lookup.
X-CLIENT-ID
You registered the caller ahead of time as an inbound callee. Ringg uses the agent and variables stored on that record.
Dialled number
Neither header is present. Ringg takes the number from the To header or Request-URI and routes by that number’s configuration in your workspace (Attach a number).
Every key becomes available in the agent’s system prompt and intro message as @{{key}}:
System prompt: You are speaking to @{{customer_name}} about account @{{account_id}}.Intro message: Hello @{{customer_name}}, this is Ringg calling about your loan of @{{loan_amount}}.
Keep values short and avoid characters that need escaping in a SIP header. & and = are the separators in X-Custom-Vars, so a value containing either does not parse.
Genesys Cloud BYOC trunks do not generally send X-Custom-Vars. They carry call context in the standard RFC 7433 User-to-User header instead, and Ringg supports that natively.
Keep the UUI payload under roughly 150 bytes: send identifiers such as a ticket or conversation ID rather than free text, and look up the detail on your side after the transfer completes.
UUI content is hex encoded, so every byte of payload becomes two characters on the wire; a 200 byte payload is a 400 character header. On transfer that header travels inside the Refer-To URI of the REFER, and a large UUI can push the REFER past the 1500 byte MTU into IP fragmentation. Some SBCs and firewalls silently drop fragments, and the transfer fails with no useful error.
For outbound calls, Ringg originates the INVITE toward your platform from a fixed set of source addresses. Ringg provides these during onboarding, and you allow them in your inbound firewall and SIP ACL.
IP based is the simplest and recommended where your platform supports it.
Mode
How it works
IP based
You allowlist the Ringg source addresses on your side; no credentials are exchanged.
Digest
Your platform challenges the INVITE with 401 or 407 and Ringg answers with the username and password you supply.
REGISTER
Ringg registers to your platform on an interval with the credentials you supply, and your platform routes calls to that registration.
With digest or register, send the exact realm your platform challenges with when it differs from its hostname. A realm mismatch makes registration or authentication fail silently and retry indefinitely, with no calls connecting.
When the AI agent needs to hand the call to a human or another destination, Ringg sends a SIP REFER on the existing dialog. Your platform performs the actual transfer.
Many platforms send their own BYE to release the Ringg leg as soon as they accept the REFER. Ringg does not treat this as an error.
A UUI received on the inbound call travels on the Refer-To URI (keep it small). If your transfer destinations carry large UUI payloads, prefer TCP or TLS for the trunk: UDP requests above roughly 1300 bytes are prone to fragmentation, which some networks drop.
An inbound callee is a record you register with Ringg ahead of time: when this person calls in, use this agent and start the conversation already knowing these facts about them. Use it when your platform cannot attach per-customer context to every INVITE: upload the context once, keyed by the caller’s identifier, and at call time send only X-CLIENT-ID.Each record stores:
The user_id that X-CLIENT-ID is matched against, usually the caller’s number
The agent_id that should handle the call
Any custom variables to inject into the prompt and intro message
Records are upserted: uploading a user_id that already exists overwrites its configuration, so you can re-upload the full list on a schedule. Transliteration runs only when the request carries agent_id.The endpoints below live under https://prod-api.ringg.ai/ca/api/v0 and take your workspace API key in the X-API-KEY header on its own; a request that also carries an Authorization header is rejected. The key identifies the workspace, so no workspace ID is needed.
The mapping key is the Ringg field name, the value is your CSV column heading:
column_mapping entry
Reads CSV column
Becomes Ringg field
Used in the agent as
"user_id": "phone"
phone
user_id
matched against X-CLIENT-ID
"callee_name": "name"
name
callee_name
@{{callee_name}}
"account_id": "acc_no"
acc_no
account_id
@{{account_id}}
Your CSV headings can be named anything; only the left side of the mapping has to match the variable names your agent expects. transliterate_fields matches on those same left-side names: with the mapping above, transliterating the customer’s name means passing ["callee_name"], not ["name"]. A value that matches no variable name is silently ignored.
For outbound, what Ringg needs from you: trunk host, port, transport and authentication, with the exact realm for digest or register
Whether the agent needs to transfer calls, and the destination to transfer to
How you will pass context: X-Custom-Vars, or the User-to-User header if you are on Genesys Cloud
Ringg confirms the allowlist entry and returns your trunk configuration with the addresses for your firewall.
2
Apply your firewall rules
Point your trunk at sip.ringg.ai and allow the addresses Ringg provided on the signalling and RTP ports, in both directions.
3
Decide routing, context and transfer
Pick how the agent is chosen and how context is passed. If the agent will hand off to a human, confirm your platform accepts REFER and agree the destination.
4
Run a test call
Place a call in each enabled direction.
Two-way audio, the right agent answers, injected variables appear in the conversation, and the transfer lands. The call is in Logs.