Hendelseskatalog
Alle webhook-hendelsestyper ThunderPhone sender ut.
Hver webhook-tekst har et type-felt med en verdi som er én av
hendelsestypene på denne siden. Når du abonnerer på et
endepunkt, må events-matrisen inneholde
hendelsestypene du vil ha (eller være tom for å abonnere på alt —
med unntak av hendelsene per tur telephony.turn /
web.turn, som bare leveres til endepunkter som
navngir dem eksplisitt).
To leveringsstiler overfører disse hendelsene:
- Endepunktleveringer er alltid ikke-blokkerende varsler
med nye forsøk: svar med
en hvilken som helst 2xx-kode; konvolutten inneholder en
event_idfor deduplisering. - Blokkerende utvekslinger kjøres bare på den
eldre webhooken med én URL: forespørselen om
konfigurasjon for
telephony.incoming/web.incoming(numre i webhook-modus og widget-nøkler, 10 s tidsavbrudd) og verktøysutsending i webhook-modus. Svaret ditt former den aktive samtalen.
Eksempelnedlastene nedenfor viser endepunktkonvolutten i overføringsrekkefølgen
sin (nøkler sortert alfabetisk: data, event_id, type); eldre
leveringer inneholder samme data uten event_id.
Anropshendelser
telephony.incoming
Sendes når et innkommende anrop når ett av
telefonnumrene dine. Leveringer til endepunkter er
fire-and-forget-varsler som sendes for hvert innkommende anrop, enten
nummeret er konfigurert med en agent eller webhook. Numre uten
en tilordnet agent mottar i tillegg den blokkerende
konfigurasjonsforespørselen på den eldre webhooken — se
telephony.incoming / web.incoming for
fullt skjema for forespørsel / svar.
{
"data": {
"call_id": 987654321,
"from_number": "+14155550199",
"to_number": "+15551234567"
},
"event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
"type": "telephony.incoming"
}telephony.complete
Sendes når et innkommende eller utgående telefonianrop avsluttes. Ikke-blokkerende.
Inkluderer transkripsjonen, opptaks-URL når tilgjengelig, og faktureringssammendrag. Se
telephony.complete / web.complete for
payloadskjemaet.
telephony.tool
Sendes etter at et telefonianrop har kalt et funksjonsverktøy. Ikke-blokkerende revisjonsvarsel — verktøyet er allerede kjørt når denne hendelsen leveres; den dekker dine egne funksjonsverktøy (ikke innebygde verktøy, kunnskapsbase-, app-tilkoblings- eller MCP-verktøy).
{
"data": {
"arguments": { "date": "2026-04-21" },
"call_id": 987654321,
"from_number": "+14155550199",
"response": {
"response": { "available_slots": ["9:00 AM", "2:00 PM"] },
"status": 200
},
"to_number": "+15551234567",
"tool_name": "search_appointments"
},
"event_id": "1f0a7c3e-52d4-4a0e-8f4b-b1a6a1c0d9e2",
"type": "telephony.tool"
}response er resultatet som ble kjørt: {"status": <http status>, "response": <your endpoint's JSON>} ved suksess, eller
{"status": <status>, "error": "<message>"} ved feil.
telephony.turn
Sendes mens et telefonianrop pågår, én gang for hver
taleholdige tur idet den skjer — agentens talte fullføringer og
innringerens transkriberte turer. Lar deg følge samtalen direkte
via vanlige webhooks i stedet for å polle
GET /v1/calls/{call_id}/transcript.
Ikke-blokkerende.
{
"data": {
"call_id": 987654321,
"entry_type": "completion",
"from_number": "+14155550199",
"position": 7,
"role": "assistant",
"start_ms": 15200,
"text": "How many employees does your company have?",
"to_number": "+15551234567"
},
"event_id": "8d3f5a2c-7b1e-4c9a-b6d0-2e4f6a8c0d1e",
"type": "telephony.turn"
}| Felt | Type | Beskrivelse |
|---|---|---|
position | integer | Turens indeks i anropshistorikken — en stabil identitet for sortering |
role | string | assistant (agenttale) eller user (innringertale) |
text | string | Turens transkripsjonstekst slik den er kjent på utsendingstidspunktet |
entry_type | string | Den underliggende typen historikkoppføring: completion (agent), eller user_turn / span (innringer) |
start_ms, end_ms | integer | Lydforskyvninger i ms siden anropet startet; finnes bare når avspillingstidspunktet allerede var kjent på utsendingstidspunktet |
web.incoming
Webkanalekvivalenten til telephony.incoming, sendt når en
webwidget-økt eller et mikrofontestanrop i byggeren
starter. Leveringer til endepunkter er fire-and-forget for hver webøkt.
Publiserbare nøkler i mode="webhook" mottar i tillegg den
blokkerende konfigurasjonsforespørselen på den eldre webhooken — den
blokkerende forespørselen har en annen form (origin_domain,
publishable_key_prefix; ingen telefonnumre). Se
telephony.incoming / web.incoming.
{
"data": {
"call_id": 987654322,
"from_number": "web",
"origin_domain": "https://example.com",
"publishable_key_prefix": "pk_live_a1b2",
"to_number": "+15551234567"
},
"event_id": "9a2b4c6d-8e0f-4a1b-9c2d-3e4f5a6b7c8d",
"type": "web.incoming"
}from_number er alltid den bokstavelige verdien "web". For widgetøkter
i webhook-modus er to_number tomt (øktens agentnummer tilordnes
etter konfigurasjon); for mikrofontestanrop i byggeren er origin_domain og
publishable_key_prefix tomme.
web.complete
Webkanalekvivalenten til telephony.complete, som dekker anrop fra
webwidgeter (direction: "web") og mikrofontestanrop i byggeren
(direction: "test"). Ikke-blokkerende. Samme payloadform som
telephony.complete, pluss origin_domain,
med from_number satt til "web".
web.tool
Webkanalekvivalenten til telephony.tool. data inneholder
origin_domain i stedet for from_number / to_number.
web.turn
Webkanalekvivalenten til telephony.turn, som
dekker anrop fra webwidgeter og mikrofontestanrop i byggeren. Samme payload-
form, med origin_domain i stedet for from_number / to_number.
I likhet med telephony.turn krever den et eksplisitt abonnement —
den leveres aldri gjennom en tom events-array.
Stemmehendelser
Opprettelse av tilpassede stemmer skjer asynkront. Disse ikke-blokkerende hendelsene lar deg reagere på et endelig resultat i stedet for å spørre endepunktet for klonedetaljer.
voice.ready
Sendes når en tilpasset stemme er ferdig behandlet og kan tilordnes til en agent.
{
"data": {
"voice": {
"created_at": "2026-07-30T14:12:08.317Z",
"display_name": "Support voice",
"failure_reason": "",
"gender": "female",
"id": "cv_2f6f90b0e9a34ee8b39be7d1",
"language": "en",
"name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
"status": "ready",
"updated_at": "2026-07-30T14:13:31.605Z"
}
},
"event_id": "2d5f0a61-e9b5-4a3c-b684-29d7d9e4b214",
"type": "voice.ready"
}voice.failed
Sendes når behandlingen av en tilpasset stemme ender i en permanent feil.
{
"data": {
"reason": "audio sample could not be processed",
"voice": {
"created_at": "2026-07-30T14:12:08.317Z",
"display_name": "Support voice",
"failure_reason": "audio sample could not be processed",
"gender": "female",
"id": "cv_2f6f90b0e9a34ee8b39be7d1",
"language": "en",
"name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
"status": "failed",
"updated_at": "2026-07-30T14:13:31.605Z"
}
},
"event_id": "3493e985-1a75-4f77-a10a-e74af440cd31",
"type": "voice.failed"
}| Felt | Type | Beskrivelse |
|---|---|---|
voice.id | string | Offentlig ID for tilpasset stemme |
voice.name | string | Stemmeverdi for agenten i formatet custom:<public_id> |
voice.display_name | string | Stemmenavn som vises for organisasjonen |
voice.language | string | Klonens enkeltstående språkkode |
voice.gender | string | male, female eller en tom streng |
voice.status | string | ready for voice.ready; failed for voice.failed |
voice.failure_reason | string | Tom ved suksess; detalj om behandlingsfeil ved feil |
voice.created_at, voice.updated_at | timestamp | ISO 8601-tidsstempler |
reason | string | Feildetalj; finnes bare i voice.failed |
Kvalitetshendelser
call.graded
Sendes hver gang en AI-vurdering fullføres for et anrop. Blokkerer ikke.
{
"data": {
"call_id": 987654321,
"grade": {
"call_outcome": "success",
"created_at": "2026-04-20T18:25:11.002Z",
"detected_issues": [],
"graded_at": "2026-04-20T18:25:11.002Z",
"grader_model": "heuristic-v1",
"id": 5512,
"score": 92,
"status": "completed",
"summary": "Caller asked about their policy and got a full answer…"
}
},
"event_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
"type": "call.graded"
}| Felt | Type | Beskrivelse |
|---|---|---|
grade.id | integer | Vurderings-ID |
grade.score | integer | null | 0–100 |
grade.call_outcome | string | success, failure, unknown eller no_conversation |
grade.summary | string | Sammendrag på ett avsnitt |
grade.detected_issues | array | Problemstrenger funnet av vurdereren |
grade.status | string | Alltid completed — bare fullførte kjøringer sender hendelser |
grade.grader_model | string | Hvilken vurderingsmodell som produserte resultatet (f.eks. heuristic-v1) |
grade.graded_at, grade.created_at | timestamp |
issue.reported
Sendes når en problemrapport opprettes —
enten meldt inn av en bruker fra dashbordet (source: "user") eller
automatisk av anropsvurdering (source: "system"). Blokkerer ikke.
{
"data": {
"call_id": 987654321,
"issue_report": {
"created_at": "2026-04-20T18:25:11.002Z",
"description": "Five-second silence before responding to the main question.",
"id": 4321,
"severity": "warning",
"source": "system",
"status": "open",
"title": "Agent paused too long"
}
},
"event_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
"type": "issue.reported"
}| Felt | Type | Beskrivelse |
|---|---|---|
issue_report.severity | string | critical, warning eller info |
issue_report.status | string | open eller resolved |
issue_report.source | string | user (meldt inn fra dashbordet) eller system (opprettet av vurdering) |
Hendelser for testanrop
test-call.completed
Sendes når en
testanropskjøring
når en endelig status — completed eller failed, inkludert kjøringer
som mislyktes ved oppstart og aldri opprettet et anrop. Blokkerer ikke. Nyttig
for å koble CI-kjøringer i batch til chat- og varslingssystemene dine.
{
"data": {
"test_call_run": {
"call_id": 987654321,
"completed_at": "2026-04-20T18:25:04.822Z",
"error_message": "",
"id": 7110,
"status": "completed",
"target_id": 12,
"target_type": "agent"
}
},
"event_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"type": "test-call.completed"
}| Felt | Type | Beskrivelse |
|---|---|---|
test_call_run.target_type | string | agent eller phone_number |
test_call_run.target_id | integer | Agent-ID-en eller telefonnummer-ID-en som kjøringen var rettet mot, i samsvar med target_type |
test_call_run.status | string | completed eller failed |
test_call_run.call_id | integer | null | null når kjøringen mislyktes før et anrop ble foretatt |
test_call_run.error_message | string | Tom ved vellykket kjøring |
Varselhendelser
alert.triggered
Sendes når en varselregel med kanalen Lever til utviklerwebhooks aktivert krysser terskelen sin. Ikke-blokkerende. En regel utløses én gang og respekterer deretter nedkjølingsperioden, slik at et vedvarende brudd produserer én hendelse per nedkjølingsvindu.
{
"data": {
"comparator": "lt",
"event_id": "b8e6a1d4-2c3f-4a5b-9c8d-7e6f5a4b3c2d",
"fired_at": "2026-04-20T18:00:00+00:00",
"metric": "success_rate",
"metric_value": 71.4,
"rule_id": "d2c3b4a5-6f7e-4d8c-9b0a-1c2d3e4f5a6b",
"rule_name": "Success rate below 80%",
"threshold": 80.0,
"window_hours": 24
},
"event_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
"type": "alert.triggered"
}| Felt | Type | Beskrivelse |
|---|---|---|
event_id (i data) | UUID | Varslets utløsnings-ID — forskjellig fra konvoluttens leverings-event_id |
rule_id, rule_name | UUID, streng | Regelen som ble utløst |
metric | streng | success_rate, failure_rate, avg_score, call_volume eller suite_regression |
comparator | streng | lt, lte, gt eller gte |
metric_value | tall | Metrikkens verdi i vinduet da regelen ble utløst |
threshold | tall | Den konfigurerte terskelen |
window_hours | heltall | Etterfølgende evalueringsvindu |
fired_at | tidsstempel |
Se veiledningen for varsler for å opprette regler, metrikk, nedkjølingsperioder og e-post- og Slack-kanaler.
Relatert
Den blokkerende nyttelasten for innkommende anrop som du må svare på.
Transkripsjon og metrikk etter samtalen.
Abonner en URL på et delsett av disse hendelsene.
Hvordan hendelsene telephony.tool / web.tool genereres.