Cum funcționează
- Vă abonați la evenimentul
telephony.incoming(telefon) sauweb.incoming(widget). Ambele sunt webhookuri blocante: ThunderPhone așteaptă până la 10 secunde răspunsul dumneavoastră înainte de a continua apelul. - ThunderPhone vă trimite
{call_id, from_number, to_number}(sesiunile widget conțin câmpuri specifice widgetului în locul numerelor — consultați schema cererii). - Serverul dumneavoastră răspunde cu o configurație de agent (prompt, voce, produs, instrumente). ThunderPhone utilizează această configurație pentru apel.
- Dacă returnați
{}, expiră timpul de răspuns sau apare o eroare, agentul atribuit static este utilizat ca rezervă. O valoare implicită sigură.
Funcționează identic pentru apeluri telefonice (
telephony.incoming) și sesiuni
widget (web.incoming), indiferent dacă sunt livrate către un endpoint webhook
sau către webhookul vechi cu un singur URL.1. Configurați destinația webhookului
- Apeluri telefonice
- Widget web
Pentru numere de telefon, abonați endpointul dumneavoastră la Răspunsul include un
telephony.incoming:secret utilizabil o singură dată — salvați-l; îl veți utiliza
pentru verificarea semnăturii.2. Implementați handlerul
Trei reguli de bază:- Verificați semnătura pentru fiecare solicitare (consultați Verificarea semnăturilor webhook). Nu omiteți acest pas în dezvoltare — implementați-l corect o dată și reutilizați-l.
- Răspundeți rapid. Zece secunde reprezintă limita strictă, iar fiecare secundă înseamnă tăcere pentru apelant. Efectuați căutări în baza de date dacă este necesar, dar nu apelați sincron LLM-uri din aval — dacă doriți generare dinamică de prompturi, precalculați și stocați în cache.
- Folosiți un fallback curat. Orice stare neașteptată trebuie să returneze
{}pentru ca agentul alocat static să gestioneze apelul.
3. Schema răspunsului
Corpul răspunsului corespunde exact schemei de răspuns pentru apeluri primite. Câmpurile utilizate frecvent:Ordinea de vorbire per apel și
max_hold_seconds nu sunt disponibile în
răspunsul webhook. Configurați-le pe
Agent la care faceți referire.Modele
Contextul utilizatorului autentificat
În widgeturile în modul webhook, pagina vizitatorului știe deja cine este acesta. Apelați webhookul cu un parametru de șir de interogare pe care SDK-ul widgetului îl redirecționează (?customer_id=123) și căutați clientul pe server.
Lansare graduală A/B a prompturilor
Înainte de a implementa aceasta manual, rețineți că ThunderPhone are o funcție nativă Experimente (/dashboard/experiments și fila A/B din constructorul de agenți) care
definește variante, distribuie traficul și compară rezultatele pentru fiecare variantă —
fără webhook necesar.
Dacă totuși aveți nevoie de control din partea webhookului: hashați call_id → compartiment;
serviți promptul A pentru 0..49 și promptul B pentru 50..99. Înregistrați compartimentul
ales în propria bază de date și corelați-l ulterior cu evaluarea apelului finalizat.
Rutare bazată pe timp
Program de lucru → agent de „asistență în direct”; în afara programului → agent de „preluare a unui mesaj”. Comutare simplă penew Date().getUTCHours() în handlerul dumneavoastră.
Pașii următori
Referință webhook pentru apeluri primite
Scheme exacte pentru cereri și răspunsuri, inclusiv fiecare cheie de configurare.
Verificați semnăturile webhookurilor
Configurați HMAC corect o dată; reutilizați-l peste tot.
Creați o integrare de instrumente
Combinați rutarea dinamică cu instrumente per agent.
Semantica livrării
Reîncercări, ordonare, expirări.