Skip to main content
Som standard har varje telefonnummer och publicerbar nyckel en statisk agent tilldelad. När du behöver anpassning per uppringare eller per besökare — VIP-dirigering, kontext för inloggade användare, A/B-tester av prompter — växla till webhook-läge och låt din server avgöra.

Så fungerar det

  1. Du prenumererar på händelsen telephony.incoming (telefon) eller web.incoming (widget). Båda är blockerande webhookar: ThunderPhone väntar upp till 10 sekunder på ditt svar innan samtalet fortsätter.
  2. 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).
  3. Din server svarar med en agentkonfiguration (prompt, röst, produkt, verktyg). ThunderPhone använder den konfigurationen för samtalet.
  4. 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

För telefonnummer prenumererar du din slutpunkt på telephony.incoming:
Svaret innehåller en 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.