Webhooks einrichten
Kesru schickt jeden Anruf und Website-Chat eines Agenten als signierten Webhook an Ihren eigenen Server.
Was es tut
Kesru schickt eine POST-Anfrage mit JSON an die Webhook-URL des Agenten. Das Feld type nennt das Ereignis:
- post_call_transcription nach jedem Anruf: die ID des Anrufs, der Agent, beide Nummern, der Beginn, die Dauer, das Ergebnis, die Stimmung, die Schlagworte, die Zusammenfassung, das Transkript und die Angaben, die Ihr Agent erfasst hat.
- chat_started, wenn ein Besucher einen Website-Chat beginnt.
- chat_ended, wenn der Chat endet, mit seinen Nachrichten.
- chat_analyzed, sobald Kesru den Chat zusammengefasst hat, mit den Nachrichten, der Zusammenfassung und den Schlagworten.
Kesru signiert jeden Webhook mit dem Signaturgeheimnis Ihres Kontos. So prüft Ihr Server, dass er von Kesru kommt.
Webhook einrichten
Öffnen Sie im Kundenbereich Agenten und dort Ihren Agenten. Fügen Sie unter Erweitert Ihre URL bei Webhook-URL ein und wählen Sie Speichern.

Wählen Sie unter Webhook-URL den Link Signaturgeheimnis. Kopieren Sie das Geheimnis unter Signaturgeheimnis und bewahren Sie es sicher auf Ihrem Server auf.

Prüfen Sie bei jeder Anfrage die Signatur, wie unten beschrieben.
Machen Sie einen Testanruf oder schreiben Sie einen Testchat. Unter Protokolle listet Webhook-Zustellungen jede Zustellung mit Status und Dauer.

Webhook prüfen
Lesen Sie den Header Kesru-Signature, etwa t=1792929600,v0=9b2e4f…. Nach t= steht der Sendezeitpunkt in Unix-Sekunden, nach v0= die Signatur.
Berechnen Sie den HMAC-SHA256 aus dem Zeitstempel, einem Punkt und dem rohen Anfragekörper, mit dem Signaturgeheimnis genau wie im Kundenbereich gezeigt als Schlüssel. Schreiben Sie das Ergebnis als Hex.
Vergleichen Sie es mit der Signatur. Stimmen beide überein, kommt der Webhook von Kesru.
Lehnen Sie Anfragen ab, deren Zeitstempel älter als 30 Minuten ist.
Verwenden Sie den rohen Anfragekörper, kein JSON, das Sie eingelesen und neu geschrieben haben. Dabei können sich Leerzeichen oder die Reihenfolge der Schlüssel ändern, und die Signatur stimmt nicht mehr.
Zustellungen ansehen
Unter Protokolle zeigt Webhook-Zustellungen jeden Webhook der letzten 30 Tage an die Webhook-Adressen Ihrer Agenten, mit Status und Dauer. Erfolgreich und Fehlgeschlagen filtern die Liste. Den Inhalt behält Kesru nicht, denn er trägt Transkript und Zusammenfassung des Gesprächs. Deshalb lässt sich eine Zustellung nicht erneut senden.
Beispiel
Laura Fischer ruft an, weil ihre Heizung tropft, und der Agent Empfang nimmt den Anruf an. Danach bekommt Ihr Server einen Körper mit type post_call_transcription, event_timestamp und dem Anruf unter data:
- agent_name: Empfang, direction: inbound, call_duration_secs: 192.
- call_successful: success, termination_reason: user_hangup.
- transcript_summary: Laura Fischer hat angerufen, weil ihre Heizung tropft. Sie möchte morgen Vormittag einen Techniker und bittet um Rückruf, um die Uhrzeit zu bestätigen.
- transcript: jeder Beitrag mit role, message und time_in_call_secs.
- custom_analysis_data: die Angaben, die Ihr Agent erfasst hat, etwa Name, E-Mail-Adresse und Anschrift.
Gut zu wissen
Innerhalb von 10 Sekunden antworten
Ihr Server muss binnen 10 Sekunden einen 2xx-Status zurückgeben. Sonst wiederholt Kesru den Versand höchstens dreimal, jedes Mal mit einer neuen Signatur.
Nur öffentliche Adressen
Kesru schickt nur an öffentliche Server. Eine URL, die auf localhost oder ein privates Netz zeigt, steht unter Webhook-Zustellungen als Nicht öffentlich.
Ein neues Signaturgeheimnis
Ein Geheimnis signiert die Webhooks all Ihrer Agenten. Nach Neues Geheimnis erstellen signiert Kesru mit dem neuen, das bisherige gilt sofort nicht mehr. Tauschen Sie es auf Ihrem Server aus.
Wer das Geheimnis sieht
Inhaber, Admins und Entwickler.
Ihre Daten
Rechtliche Fragen zu Ihren Daten beantworten die Datenschutzerklärung und der Auftragsverarbeitungsvertrag.
Ähnliche Integrationen
Fragen zu Webhooks?
Schreiben Sie uns an kontakt@kesru.de oder testen Sie Kesru kostenlos und richten Sie im Kundenbereich einen Webhook für Ihren Agenten ein.