> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thunderphone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hendelseskatalog

> Alle webhook-hendelsestyper som ThunderPhone sender ut.

Alle webhook-brødtekster har et `type`-felt med en verdi som er én av
hendelsestypene på denne siden. Når du abonnerer på et
[endepunkt](/nb/webhooks/endpoints), må `events`-matrisen inneholde
hendelsestypene du vil ha (eller være tom for å abonnere på alt).

To leveringsstiler overfører disse hendelsene:

* **Endepunktleveringer** er alltid **ikke-blokkerende** varsler
  med [nye forsøk](/nb/webhooks/overview): svar med
  en hvilken som helst 2xx; konvolutten inneholder en `event_id` for deduplisering.
* **Blokkerende** utvekslinger kjører bare på
  [den eldre webhooken med én URL](/nb/webhooks/overview):
  konfigurasjonsforespørselen
  [`telephony.incoming` / `web.incoming`](/nb/webhooks/call-incoming)
  (numre i webhook-modus og widgetnøkler, 10 s tidsavbrudd) og
  [verktøysending](/nb/tools/overview) i webhook-modus.
  Svaret ditt former den aktive samtalen.

Eksempelnyttelastene 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](/api-reference/phone-numbers) dine. Endpoint-leveringer er
fire-and-forget-varsler som sendes for **hvert** innkommende anrop, enten
nummeret er agentkonfigurert eller webhook-konfigurert. Numre uten
en tilordnet agent mottar i tillegg den **blokkerende**
konfigurasjonsforespørselen på den eldre webhooken — se
[`telephony.incoming` / `web.incoming`](/nb/webhooks/call-incoming) for
hele forespørsels-/svarskjemaet.

```json theme={null}
{
  "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 telefonanrop avsluttes. Ikke-blokkerende.
Inkluderer hele transkripsjonen, URL-adressen til opptaket og faktureringsoppsummeringen. Se
[`telephony.complete` / `web.complete`](/nb/webhooks/call-complete) for
payload-skjemaet.

### `telephony.tool`

Sendes etter at et telefonanrop kaller et
[funksjonsverktøy](/nb/tools/overview). Ikke-blokkerende revisjonsvarsel —
verktøyet er allerede kjørt når denne hendelsen leveres; den dekker
dine egne funksjonsverktøy (ikke innebygde verktøy, kunnskapsbaseverktøy,
appkoblingsverktøy eller MCP-verktøy).

```json theme={null}
{
  "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.

### `web.incoming`

Netkanalens ekvivalent til `telephony.incoming`, sendt når en økt i en
[webwidget](/nb/widget/overview) eller et mikrofonsamtaletest i byggeren
starter. Endpoint-leveringer er fire-and-forget for hver nettø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`](/nb/webhooks/call-incoming).

```json theme={null}
{
  "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 mikrofonsamtaletester i byggeren er `origin_domain` og
`publishable_key_prefix` tomme.

### `web.complete`

Netkanalens ekvivalent til `telephony.complete`, som dekker anrop fra
webwidgeter (`direction: "web"`) og mikrofonsamtaletester i byggeren
(`direction: "test"`). Ikke-blokkerende. Samme payload-form som
[`telephony.complete`](/nb/webhooks/call-complete), pluss `origin_domain`,
med `from_number` satt til `"web"`.

<Note>
  På den eldre webhooken med én URL rapporteres mikrofonsamtaletester i byggeren
  historisk som `telephony.complete` — bare anrop med `direction:
      "web"` bruker typen `web.complete` der. Endpointsystemet
  tilordner både nett- og testanrop til `web.*`. Historiske payloads kan
  inneholde de eldre `direction`-verdiene `widget` eller `mic`.
</Note>

### `web.tool`

Netkanalens ekvivalent til `telephony.tool`. `data` inneholder
`origin_domain` i stedet for `from_number` / `to_number`.

***

## Kvalitetshendelser

### `call.graded`

Sendes hver gang en [AI-vurdering](/api-reference/calls#ai-call-grading)
fullføres for en samtale. Blokkerer ikke.

```json theme={null}
{
  "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 vurderingen                                      |
| `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       |                                                                            |

<Note>
  En samtale kan vurderes mer enn én gang — en rask heuristisk vurdering
  etterfølges ofte av en fullstendig modellvurdering når opptaket er
  tilgjengelig, og manuelle nyvurderinger er mulig. Hver fullførte kjøring
  sender sin egen `call.graded`-hendelse; behandle den nyeste `graded_at` som
  autoritativ.
</Note>

### `issue.reported`

Sendes når en [problemrapport](/api-reference/issue-reports) opprettes —
enten rapportert av en bruker fra dashbordet (`source: "user"`) eller
automatisk av samtalevurdering (`source: "system"`). Blokkerer ikke.

```json theme={null}
{
  "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` (rapportert fra dashbordet) eller `system` (opprettet av vurderingen) |

<Note>
  Nyvurdering av en samtale bygger opp systemgenererte problemrapporter på nytt,
  noe som sender `issue.reported` på nytt for de gjenskapte rapportene. Fjern
  duplikater basert på `call_id` + `title` hvis du bare vil ha ett varsel per
  underliggende problem.
</Note>

***

## Hendelser for testsamtaler

### `test-call.completed`

Sendes når en
[testsamtalekjøring](/api-reference/test-calls#test-call-run-object)
når en endelig status — `completed` eller `failed`, inkludert kjøringer
som mislyktes ved oppstart og aldri opprettet en samtale. Blokkerer ikke. Nyttig
for å koble CI-kjøringer i batch til chat- og varslingssystemene dine.

```json theme={null}
{
  "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 en samtale ble ringt                                         |
| `test_call_run.error_message` | string          | Tom ved suksess                                                                                 |

***

## Varselhendelser

### `alert.triggered`

Sendes når en [varselregel](/nb/guides/alerts) med kanalen **Lever til
utviklerwebhooks** aktivert krysser terskelen sin.
Ikke-blokkerende. En regel utløses én gang og følger deretter nedkjølingsperioden sin, så et
vedvarende brudd produserer én hendelse per nedkjølingsvindu.

```json theme={null}
{
  "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         | ID-en for at varselet **ble utløst** — 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 over vinduet da regelen ble utløst                                      |
| `threshold`            | tall         | Den konfigurerte terskelen                                                               |
| `window_hours`         | heltall      | Etterfølgende evalueringsvindu                                                           |
| `fired_at`             | tidsstempel  |                                                                                          |

Se [veiledningen for varsler](/nb/guides/alerts) for å opprette regler, metrikk,
nedkjølingsperioder og e-post- / Slack-kanalene.

***

## Relatert

<CardGroup cols={2}>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/nb/webhooks/call-incoming">
    Den blokkerende nyttelasten for innkommende samtaler som du må svare på.
  </Card>

  <Card title="telephony.complete / web.complete" icon="phone-slash" href="/nb/webhooks/call-complete">
    Transkripsjon og metrikk etter samtalen.
  </Card>

  <Card title="Webhook-endepunkter" icon="bolt" href="/nb/webhooks/endpoints">
    Abonner en URL på et utvalg av disse hendelsene.
  </Card>

  <Card title="Funksjonsverktøy" icon="screwdriver-wrench" href="/nb/tools/overview">
    Hvordan `telephony.tool` / `web.tool`-hendelser genereres.
  </Card>
</CardGroup>
