Skip to main content
În mod implicit, fiecărui număr de telefon și fiecărei chei publicabile îi este atribuit un agent static. Când aveți nevoie de personalizare pentru fiecare apelant sau pentru fiecare vizitator — rutare VIP, context pentru utilizatorii conectați, teste A/B pentru prompturi — treceți la modul webhook și lăsați serverul să decidă.

Cum funcționează

  1. Vă abonați la evenimentul telephony.incoming (telefon) sau web.incoming (widget). Ambele sunt webhookuri blocante: ThunderPhone așteaptă până la 10 secunde răspunsul dumneavoastră înainte de a continua apelul.
  2. ThunderPhone vă trimite {call_id, from_number, to_number} (sesiunile widget conțin câmpuri specifice widgetului în locul numerelor — consultați schema cererii).
  3. Serverul dumneavoastră răspunde cu o configurație de agent (prompt, voce, produs, instrumente). ThunderPhone utilizează această configurație pentru apel.
  4. 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

Pentru numere de telefon, abonați endpointul dumneavoastră la telephony.incoming:
Răspunsul include un 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ă pe new 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.