Váš jazyk
PHP, Python, Node.js, C#, Java, Go… cokoli, co přijme a vrátí JSON.
Java, Python, PHP, .NET, C# — napíšete HTTP API, v DotSIP nastavíte URL. Žádný dialplan.
Engine neobsahuje jazyk směrování. Volá váš endpoint a provede answer, transfer nebo hangup. Nástroje během hovoru jsou opět vaše HTTP služby.
PHP, Python, Node.js, C#, Java, Go… cokoli, co přijme a vrátí JSON.
git, code review, testy. Směrování je obyčejný kód.
Rozhodujete podle CRM, databáze nebo kalendáře klienta v reálném čase.
DotSIP pošle dotsip.route JSON vašemu API.
Vrátí dotsip.route-result s action a parametry.
Zvedne s agentem, přepojí na klapku, nebo zavěsí.
<?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." }));Přesný kontrakt je v dokumentaci (route-decision).
Požadavek obsahuje směr, call_id, SIP účet a volajícího. Odpověď: action = answer (povinné agent), transfer (povinné phone) nebo hangup. Volitelně rights, prompt a user. Celý kontrakt je v dokumentaci.
Když live model zavolá nástroj, DotSIP POSTne dotsip.tool-call na váš endpoint. Odpovíte ok true nebo false, result nebo error, volitelně nová rights nebo prompt. Model vidí jen nástroje přiřazené agentovi a povolené aktuálními právy.
DotSIP nedodává business logiku vašeho klienta. Dodává engine a most.
Bez platební karty. Plná licence. Jednou na účet a jednou na instalaci.