Váš jazyk
PHP, Python, Node.js, C#, Java, Go… čokoľvek, čo prijme a vráti JSON.
Java, Python, PHP, .NET, C# — napíšete HTTP API, v DotSIP nastavíte URL. Žiadny dialplan.
Engine neobsahuje jazyk smerovania. Volá váš endpoint a urobí answer, transfer alebo hangup. Nástroje počas hovoru sú opäť vaše HTTP služby.
PHP, Python, Node.js, C#, Java, Go… čokoľvek, čo prijme a vráti JSON.
git, code review, testy. Smerovanie je obyčajný kód.
Rozhodujete podľa CRM, databázy alebo kalendára klienta v reálnom čase.
DotSIP pošle dotsip.route JSON vášmu API.
Vráti dotsip.route-result s action a parametrami.
Zdvihne s agentom, prepojí na klapku, alebo zavesí.
<?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.']);# Python (Flask)
@app.post("/route")
def route():
call = request.get_json()
if call["caller"]["number"] == "+421905000000":
return {"format": "dotsip.route-result", "format_version": 1, "action": "transfer", "phone": "phone-1"}
return {"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."}// Node.js (Express)
app.post("/route", (req, res) => {
const vip = req.body.caller.number === "+421905000000";
res.json(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." });
});// C# (.NET minimal API)
app.MapPost("/route", (Call call) => call.Caller.Number == "+421905000000"
? Results.Json(new { format = "dotsip.route-result", format_version = 1, action = "transfer", phone = "phone-1" })
: Results.Json(new { 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." }));Presný kontrakt je v dokumentácii (route-decision).
Požiadavka obsahuje smer, call_id, SIP účet a volajúceho. Odpoveď: action = answer (povinné agent), transfer (povinné phone) alebo hangup. Voliteľne rights, prompt a user. Celý kontrakt je v dokumentácii.
Keď live model zavolá nástroj, DotSIP POSTne dotsip.tool-call na váš endpoint. Odpoviete ok true alebo false, result alebo error, voliteľne nové rights alebo prompt. Model vidí len nástroje priradené agentovi a povolené aktuálnymi právami.
DotSIP nedodáva business logiku vášho klienta. Dodáva engine a most.
Bez platobnej karty. Plná licencia. Raz na účet a raz na inštaláciu.