Ihre Sprache
PHP, Python, Node.js, C#, Java, Go… alles, was JSON annimmt und zurückgibt.
Java, Python, PHP, .NET, C# — Sie schreiben ein HTTP-API, in DotSIP hinterlegen Sie die URL. Kein Dialplan.
Die Engine enthält keine Routing-Sprache. Sie ruft Ihren Endpoint auf und führt answer, transfer oder hangup aus. Tools während des Gesprächs sind wieder Ihre HTTP-Dienste.
PHP, Python, Node.js, C#, Java, Go… alles, was JSON annimmt und zurückgibt.
git, Code Review, Tests. Routing ist ganz normaler Code.
Sie entscheiden anhand von CRM, Datenbank oder Kalender des Kunden in Echtzeit.
DotSIP sendet dotsip.route-JSON an Ihr API.
Es gibt dotsip.route-result mit action und Parametern zurück.
Nimmt mit dem Agenten an, verbindet zu einer Nebenstelle oder legt auf.
<?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." }));Der genaue Vertrag steht in der Dokumentation (route-decision).
Die Anfrage enthält Richtung, call_id, SIP-Konto und Anrufer. Antwort: action = answer (agent Pflicht), transfer (phone Pflicht) oder hangup. Optional rights, prompt und user. Der vollständige Vertrag steht in der Dokumentation.
Wenn das Live-Modell ein Tool aufruft, POSTet DotSIP dotsip.tool-call an Ihren Endpoint. Antworten Sie mit ok true oder false, result oder error, optional neuen rights oder einem prompt. Das Modell sieht nur Tools, die am Agenten hängen und von den aktuellen Rechten erlaubt sind.
DotSIP liefert nicht die Business-Logik Ihres Kunden. Es liefert Engine und Bridge.
Ohne Kreditkarte. Volle Lizenz. Einmal pro Konto und einmal pro Installation.