Skip to main content
Ozonetel connects to Ringg over HTTP and WebSocket: Ozonetel dials the customer and calls Ringg’s URLs, and Ringg replies with the instruction for each stage of the call (bring your own telephony). The three URLs you set in Ozonetel, all accepting GET and POST:

Before you start

An Ozonetel account

With API access and at least one . Have its API key, campaign name, user name and the extension your campaign streams from.

An agent

The Ringg agent that places or takes the calls.

Connect the account in Ringg

1

Open the Ozonetel account form

Go to Numbers → Add number, select Ozonetel, and open Configure provider (the gear). Select Add.
2

Fill in the fields and save

All fields are required.
”BYOT added successfully.” appears and the account is available in the telephony account selector.
3

Add your DIDs

With the Ozonetel account selected in Add number, add each DID. See Import a number and Add a number by hand.

Outbound URL

Set the campaign’s agent-flow URL to:
Ozonetel hits this same URL for each lifecycle event of the call and Ringg replies with the instruction for that stage.

The Name parameter

When Ringg places an outbound call, it passes a Name parameter carrying the Ringg call ID. Ozonetel must send the same Name back, unchanged, on every callback; that is how Ringg identifies the call. A callback without it is rejected with 400, and the call never connects.
A callback that carries Name

Callback parameters

Ringg serves the stream instruction once per call, for 10 minutes. A duplicate NewCall for the same Name gets an empty response instead of a second stream.

Inbound URL

Point the URL node of your inbound flow at:
Ringg’s team shares the exact inbound URL for your agent; configure it as given, without editing the query string. Ringg answers with a hangup instruction when sid is missing, the agent cannot be resolved, or the SIP extension is not configured.

Status callback URL

Set the campaign’s Call-Summary (CDR) push URL to:
This callback drives Ringg’s retry and failure handling: without it, unanswered and busy calls are not retried. Ringg reads the parameters from the POST body (JSON or x-www-form-urlencoded) when there is one, otherwise from the query string, and unwraps a data=<json-string> envelope.

Identifying the call

  • Outbound: template the Ringg call ID into the URL as call_id, or make sure Name is present in the push. If neither is there, the push is ignored.
  • Inbound: Ringg uses Ozonetel’s own call ID: monitorUCID, ucid, or sid.
  • Direction comes from Type (or call_type / direction). Only Inbound counts as inbound; Manual, Preview, Progressive, Predictive, IVR and an absent value are treated as outbound.

Call disposition

Send the call disposition in CustomerStatus, DialStatus, Status or AgentStatus. Ringg reads whichever is present, most granular first. The endpoint always returns 200 {"status": "ok"} so Ozonetel does not retry the push.

Troubleshooting

Next steps

Attach a number to an agent

Answer inbound calls on an Ozonetel DID.

Run a campaign

Place outbound calls through Ozonetel.