Megérkezett a ThunderPhone 2.0.Önkiszolgáló használat már 2 cent/perctől.Olvassa el a bejelentést

Webhooks

Eseménykatalógus

A ThunderPhone által kibocsátott összes webhookesemény-típus.

Minden webhooktörzs rendelkezik egy type mezővel, amelynek értéke az ezen az oldalon felsorolt eseménytípusok egyike. Amikor feliratkozik egy végpontra, az events tömbnek tartalmaznia kell a kívánt eseménytípusokat (vagy üresnek kell lennie, ha mindenre fel szeretne iratkozni — kivéve a körönkénti telephony.turn / web.turn eseményeket, amelyeket csak azoknak a végpontoknak kézbesítünk, amelyek kifejezetten megnevezik őket).

Ezeket az eseményeket két kézbesítési mód továbbítja:

Az alábbi példaterhelések a végpontborítékot annak átviteli sorrendjében mutatják (a kulcsok betűrendben vannak: data, event_id, type); a régi kézbesítések ugyanazt a data adatot tartalmazzák event_id nélkül.

Hívási események

telephony.incoming

Akkor kerül elküldésre, amikor egy bejövő hívás eléri az Ön egyik telefonszámát. A végpontoknak történő kézbesítés minden bejövő hívás esetén válasz nélküli értesítés, függetlenül attól, hogy a szám ügynökhöz vagy webhookhoz van konfigurálva. A hozzárendelt ügynök nélküli számok emellett megkapják a blokkoló konfigurációs kérést az örökölt webhookon — a teljes kérés-/válaszsémát lásd itt: telephony.incoming / web.incoming.

{
  "data": {
    "call_id": 987654321,
    "from_number": "+14155550199",
    "to_number": "+15551234567"
  },
  "event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
  "type": "telephony.incoming"
}

telephony.complete

Akkor kerül elküldésre, amikor egy bejövő vagy kimenő telefonhívás véget ér. Nem blokkoló. Tartalmazza az átiratot, a felvétel URL-jét, ha elérhető, valamint a számlázási összegzést. Az adatcsomag sémáját lásd itt: telephony.complete / web.complete.

telephony.tool

Akkor kerül elküldésre, miután egy telefonhívás meghív egy függvényeszközt. Nem blokkoló naplózási értesítés — az eszköz az esemény kézbesítésekor már lefutott; ez az Ön saját függvényeszközeire vonatkozik (nem a beépített, tudásbázis-, alkalmazáskapcsolati vagy MCP-eszközökre).

{
  "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"
}

A response a végrehajtás eredménye: siker esetén {"status": <http status>, "response": <your endpoint's JSON>}, hiba esetén pedig {"status": <status>, "error": "<message>"}.

telephony.turn

Telefonhívás folyamatban léte közben kerül elküldésre, minden beszédet tartalmazó fordulónál, annak megtörténtekor — az ügynök kimondott válaszai és a hívó átírt fordulói esetén. Lehetővé teszi az élő beszélgetés egyszerű webhookokon keresztüli követését a következő végpont lekérdezése helyett: GET /v1/calls/{call_id}/transcript. Nem blokkoló.

{
  "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"
}
MezőTípusLeírás
positionintegerA forduló indexe a hívási előzményekben — stabil azonosító a sorrendezéshez
rolestringassistant (az ügynök beszéde) vagy user (a hívó beszéde)
textstringA forduló átiratszövege az esemény kibocsátásakor ismert állapotban
entry_typestringAz alapul szolgáló előzménybejegyzés típusa: completion (ügynök), vagy user_turn / span (hívó)
start_ms, end_msintegerA hívás kezdetétől számított hangeltolások ms-ban; csak akkor szerepelnek, ha a lejátszási időzítés az esemény kibocsátásakor már ismert volt

web.incoming

A telephony.incoming webcsatornás megfelelője, amely akkor kerül elküldésre, amikor egy webes widget munkamenet vagy egy builderes mikrofonteszt-hívás elindul. A végpontoknak történő kézbesítés minden webes munkamenet esetén válasz nélküli. A mode="webhook" módban lévő publikálható kulcsok emellett megkapják a blokkoló konfigurációs kérést az örökölt webhookon — ennek a blokkoló kérésnek eltérő a szerkezete (origin_domain, publishable_key_prefix; nincsenek telefonszámok). Lásd: 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"
}

A from_number mindig a szó szerinti "web" érték. Webhook módú widgetes munkameneteknél a to_number üres (a munkamenet ügynökszáma a konfiguráció után kerül hozzárendelésre); builderes mikrofonteszt-hívásoknál az origin_domain és a publishable_key_prefix üres.

web.complete

A telephony.complete webcsatornás megfelelője, amely a webes widgetes hívásokat (direction: "web") és a builderes mikrofonteszt-hívásokat (direction: "test") fedi le. Nem blokkoló. Az adatcsomag szerkezete megegyezik a telephony.complete szerkezetével, kiegészítve az origin_domain mezővel, a from_number pedig "web" értékre van állítva.

web.tool

A telephony.tool webcsatornás megfelelője. A data a from_number / to_number helyett az origin_domain mezőt tartalmazza.

web.turn

A telephony.turn webcsatornás megfelelője, amely a webes widgetes hívásokat és a builderes mikrofonteszt-hívásokat fedi le. Az adatcsomag szerkezete azonos, de a from_number / to_number helyett origin_domain szerepel. A telephony.turn típushoz hasonlóan ehhez is kifejezett feliratkozás szükséges — soha nem kerül kézbesítésre üres events tömbön keresztül.


Hangesemények

Az egyéni hang létrehozása aszinkron folyamat. Ezek a nem blokkoló események lehetővé teszik, hogy lekérdezés helyett egy végleges eredményre reagáljon a klón részleteinek végpontján.

voice.ready

Akkor kerül elküldésre, amikor az egyéni hang feldolgozása befejeződik, és hozzárendelhető egy ügynökhöz.

{
  "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

Akkor kerül elküldésre, amikor az egyéni hang feldolgozása végleges hibával leáll.

{
  "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"
}
MezőTípusLeírás
voice.idstringAz egyéni hang nyilvános azonosítója
voice.namestringAz ügynök hangértéke custom:<public_id> formátumban
voice.display_namestringA szervezet számára megjelenített hangnév
voice.languagestringA klón egyetlen nyelvi kódja
voice.genderstringmale, female vagy üres karakterlánc
voice.statusstringready a voice.ready esetén; failed a voice.failed esetén
voice.failure_reasonstringSiker esetén üres; hiba esetén a feldolgozási hiba részlete
voice.created_at, voice.updated_attimestampISO 8601 időbélyegek
reasonstringA hiba részlete; csak a voice.failed esetén van jelen

Minőségi események

call.graded

Akkor kerül elküldésre, amikor egy híváshoz tartozó AI-értékelési futás befejeződik. Nem blokkoló.

{
  "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"
}
MezőTípusLeírás
grade.idintegerÉrtékelésazonosító
grade.scoreinteger | null0–100
grade.call_outcomestringsuccess, failure, unknown vagy no_conversation
grade.summarystringEgybekezdéses összefoglaló
grade.detected_issuesarrayAz értékelő által talált problémák szövegei
grade.statusstringMindig completed — csak a befejezett futások küldenek eseményt
grade.grader_modelstringAz eredményt létrehozó értékelő (például heuristic-v1)
grade.graded_at, grade.created_attimestamp

issue.reported

Akkor kerül elküldésre, amikor egy hibajelentés létrejön — akár egy felhasználó küldi be az irányítópultról (source: "user"), akár a hívásértékelés hozza létre automatikusan (source: "system"). Nem blokkoló.

{
  "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"
}
MezőTípusLeírás
issue_report.severitystringcritical, warning vagy info
issue_report.statusstringopen vagy resolved
issue_report.sourcestringuser (az irányítópultról beküldve) vagy system (értékelés által létrehozva)

Teszthívási események

test-call.completed

Akkor kerül elküldésre, amikor egy teszthívási futás végállapotba kerül — completed vagy failed, beleértve azokat a futásokat is, amelyek indításkor meghiúsultak, és soha nem hoztak létre hívást. Nem blokkoló. Hasznos a kötegelt CI-futások csevegő- vagy értesítési rendszereihez való kapcsolásához.

{
  "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"
}
MezőTípusLeírás
test_call_run.target_typestringagent vagy phone_number
test_call_run.target_idintegerA futás által célzott ügynökazonosító vagy telefonszámazonosító, a target_type értékének megfelelően
test_call_run.statusstringcompleted vagy failed
test_call_run.call_idinteger | nullnull, ha a futás a hívás indítása előtt meghiúsult
test_call_run.error_messagestringSiker esetén üres

Riasztási események

alert.triggered

Akkor küldi el a rendszer, amikor egy, a Kézbesítés fejlesztői webhookokra csatornát engedélyező riasztási szabály átlépi a küszöbértékét. Nem blokkoló. Egy szabály egyszer aktiválódik, majd betartja a várakozási idejét, ezért a tartós küszöbátlépés várakozási időablakonként egy eseményt eredményez.

{
  "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"
}
MezőTípusLeírás
event_id (data alatt)UUIDA riasztás aktiválási azonosítója — eltér a boríték kézbesítési event_id értékétől
rule_id, rule_nameUUID, karakterláncAz aktiválódott szabály
metrickarakterláncsuccess_rate, failure_rate, avg_score, call_volume vagy suite_regression
comparatorkarakterlánclt, lte, gt vagy gte
metric_valueszámA metrika értéke az időablakban, amikor a szabály aktiválódott
thresholdszámA konfigurált küszöbérték
window_hoursegész számVisszatekintő értékelési időablak
fired_atidőbélyeg

A szabályok, metrikák, várakozási idők, valamint az e-mail- / Slack-csatornák létrehozásáról lásd a Riasztások útmutatót.


Kapcsolódó