If you know a language, you know the PBX.

Java, Python, PHP, .NET, C# — you write an HTTP API, then set its URL in DotSIP. No dialplan.

DotSIP executes. Your API decides.

The engine has no routing language. It calls your endpoint and performs answer, transfer, or hangup. Tools during a call are again your HTTP services.

Your language

PHP, Python, Node.js, C#, Java, Go… anything that accepts and returns JSON.

Your CI/CD

git, code review, tests. Routing is ordinary code.

Your data

You decide from the client's CRM, database, or calendar in real time.

Three steps

1

Call / event

DotSIP sends a dotsip.route JSON to your API.

2

Your API decides

It returns a dotsip.route-result with an action and parameters.

3

DotSIP executes

It answers with the agent, transfers to an extension, or hangs up.

Route decision in a few lines

<?php // PHP
$call = json_decode(file_get_contents('php://input'), true);
$vip  = $call['caller']['number'] === '+421905000000';
echo json_encode($vip
  ? ['format' => 'dotsip.route-result', 'format_version' => 1, 'action' => 'transfer', 'phone' => 'phone-1']
    : ['format' => 'dotsip.route-result', 'format_version' => 1, 'action' => 'answer', 'agent' => 'recepcia',
     'prompt' => 'Volajúci je nový zákazník. Ponúkni mu termín konzultácie.']);

The exact contract is in the documentation (route-decision).

Route API — overview

The request includes direction, call_id, the SIP account, and the caller. Reply with action answer (agent required), transfer (phone required), or hangup. Optionally rights, prompt, and user. The full contract is in the documentation.

  • answer — pick up with an agent
  • transfer — connect to a SIP phone
  • hangup — reject
  • rights — which tools this call may use

Tool call — overview

When the live model calls a tool, DotSIP POSTs dotsip.tool-call to your endpoint. Reply with ok true or false, result or error, and optionally new rights or a prompt. The model only sees tools attached to the agent and allowed by the current rights.

What you program yourself

DotSIP does not supply your client's business logic. It supplies the engine and the bridge.

  • Route endpoint
  • Tool endpoints (CRM, booking, …)
  • Rights that decide which tools the agent may call
  • Connection to the client's data
  • White-label / a wrapper around DotSIP for your product

Works with the language you use

  • PHP
  • Python
  • Node.js
  • TypeScript
  • C# / .NET
  • Java
  • Go
  • Ruby
  • Rust
  • Kotlin
  • … and any tools that can answer an HTTP request

Why not a dialplan

  • A dialplan is known to a narrow group. Any developer in your company can write your API.
  • A dialplan is tested on a live PBX. Your API you test with unit tests.
  • A dialplan cannot see the client's database. Your API can.
  • Changing a dialplan means touching the PBX. Changing the API is a normal deploy.

Try it with your own code

No credit card. Full license. Once per account and once per installation.