Så fungerar det
- Du prenumererar på händelsen
telephony.incoming(telefon) ellerweb.incoming(widget). Båda är blockerande webhookar: ThunderPhone väntar upp till 10 sekunder på ditt svar innan samtalet fortsätter. - ThunderPhone skickar
{call_id, from_number, to_number}till dig (widget- sessioner innehåller widgetspecifika fält i stället för nummer — se begärandeschemat). - Din server svarar med en agentkonfiguration (prompt, röst, produkt, verktyg). ThunderPhone använder den konfigurationen för samtalet.
- Om du returnerar
{}, får en timeout eller ett fel, används den statiskt tilldelade agenten som reserv. Säker standard.
Fungerar på samma sätt för telefonsamtal (
telephony.incoming) och widget-
sessioner (web.incoming), oavsett om de levereras till en webhookslutpunkt
eller till den äldre webhooken med en enda URL.1. Konfigurera webhookdestinationen
- Telefonsamtal
- Webbwidget
För telefonnummer prenumererar du din slutpunkt på Svaret innehåller en
telephony.incoming:secret för engångsbruk — spara den; du använder den
för signaturverifiering.2. Implementera hanteraren
Tre tumregler:- Verifiera signaturen för varje begäran (se Verifiera webhook-signaturer). Hoppa inte över detta i utveckling — gör rätt en gång och återanvänd.
- Svara snabbt. Tio sekunder är den hårda gränsen, och varje sekund är tystnad för uppringaren. Gör databasuppslag om du behöver, men anropa inte nedströms-LLM:er synkront — om du vill ha dynamisk promptgenerering ska du förberäkna och cachelagra.
- Fall tillbaka på ett rent sätt. Alla oväntade tillstånd ska returnera
{}så att den statiskt tilldelade agenten hanterar samtalet.
3. Svarsschema
Svarstexten matchar svarsschemat för inkommande samtal exakt. De vanligaste fälten:Talordning per samtal och
max_hold_seconds är inte tillgängliga i
webhook-svaret. Ange dem på den
agent du refererar till.Mönster
Kontext för inloggad användare
I widgetar i webhook-läge vet besökarens sida redan vem de är. Anropa din webhook med en frågesträngsparameter som widget-SDK:n vidarebefordrar (?customer_id=123) och slå upp kunden på serversidan.
A/B-lansering av promptar
Innan du bygger detta själv bör du notera att ThunderPhone har en inbyggd funktion för Experiment (/dashboard/experiments och fliken A/B i agentbyggaren) som
definierar varianter, delar upp trafik och jämför resultat per variant —
ingen webhook krävs.
Om du ändå behöver kontroll på webhooksidan: hasha call_id → bucket;
servera prompt A för 0..49 och prompt B för 50..99. Registrera vilken
bucket du valde i din egen databas och korrelera den senare med det
slutförda samtalets betyg.
Tidsbaserad routning
Kontorstid → agent för “live-support”; utanför kontorstid → agent för “ta ett meddelande”. En ren växling pånew Date().getUTCHours() i din hanterare.
Nästa steg
Referens för webhook för inkommande samtal
Exakta schema för begäran och svar, inklusive varje konfigurationsnyckel.
Verifiera webhook-signaturer
Få HMAC rätt en gång och återanvänd den överallt.
Bygg en verktygsintegration
Kombinera dynamisk routning med verktyg per agent.
Leveranssemantik
Återförsök, ordning, tidsgränser.