---
title: "Webhook galiniai taškai"
description: "Tvarkykite kelis webhook URL su kiekvienam galiniam taškui skirtais slaptaisiais raktais ir įvykių filtrais."
---

Galinių taškų pagrindu veikianti webhook sistema leidžia užregistruoti **kelias**
paskirties vietas kiekvienai organizacijai, kurių kiekviena turi savo slaptąjį raktą, savo
būseną ir savo prenumeratą į dalį įvykių tipų. Tai
rekomenduojamas modelis visoms naujoms integracijoms.

Palyginkite su [senąja vieno URL webhook sistema](/api-reference/organizations#legacy-single-url-webhook),
kuri palaikoma dėl atgalinio suderinamumo, tačiau vienai
organizacijai palaiko tik vieną URL.

## Galiniai taškai

| Metodas | Kelias | Reikalingas vaidmuo | Aprašymas |
|--------|------|---------------|-------------|
| `GET` | `/v1/developer/webhook-endpoints` | `admin+` | Išvardyti galinius taškus |
| `POST` | `/v1/developer/webhook-endpoints` | `admin+` | Sukurti galinį tašką |
| `PATCH` | `/v1/developer/webhook-endpoints/{endpoint_id}` | `admin+` | Atnaujinti etiketę / URL / įvykius / būseną |
| `DELETE` | `/v1/developer/webhook-endpoints/{endpoint_id}` | `admin+` | Ištrinti galinį tašką |
| `POST` | `/v1/developer/webhook-endpoints/{endpoint_id}/test` | `admin+` | Siųsti pasirašytą bandomąjį pristatymą |
| `GET` | `/v1/developer/webhook-deliveries` | `admin+` | Peržiūrėti naujausius galinių taškų ir senosios sistemos pristatymo rezultatus |

## Galinio taško objektas

```json
{
  "id": "c4d5e6f7-...",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "agent_id": 42,
  "agent_name": "Support Agent",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z"
}
```

| Laukas | Tipas | Aprašas |
|-------|------|-------------|
| `id` | UUID | Galinio taško ID |
| `label` | string | Rodomas pavadinimas, 1–120 simbolių |
| `url` | string | HTTPS URL; kuriant leidžiama naudoti `http://localhost` |
| `events` | eilučių masyvas | Prenumeruojamų įvykių tipai (žr. [galiojančias reikšmes](#valid-event-types)). Tuščias masyvas prenumeruoja visus įvykius, išskyrus tik aiškiai pasirenkamus kiekvieno dialogo žingsnio įvykius (`telephony.turn` / `web.turn`) |
| `status` | string | `active`, `disabled` (pristabdytas rankiniu būdu) arba `failing` (nustatoma automatiškai, kai pristatymas išnaudoja 24 val. pakartotinių bandymų grafiką negavęs nė vieno 2xx atsakymo) |
| `agent_id` | integer \| null | Agentas, kuriam taikomas šis galinis taškas; `null` reiškia visos organizacijos mastą |
| `agent_name` | string \| null | Agento, kuriam taikomas galinis taškas, pavadinimas arba `null`, jei galinis taškas skirtas visai organizacijai |
| `secret_hint` | string | Pirmi 4 ir paskutiniai 4 pasirašymo slaptojo rakto simboliai su daugtaškiu (`a1b2…9f0e`) — pakanka palyginti su vietoje išsaugotu slaptuoju raktu neatskleidžiant visos reikšmės |
| `created_at`, `updated_at` | timestamp | |

<Note>
  Visa galinio taško `secret` reikšmė kūrimo metu grąžinama **tik vieną kartą**
  ir daugiau niekada. Saugiai ją išsaugokite — jei ją prarasite, ištrinkite galinį tašką
  ir sukurkite jį iš naujo.
</Note>

### Galiojantys įvykių tipai

`events` tikrinamas pagal šį tikslų rinkinį — už sąraše nenurodytas reikšmes
grąžinamas `400`. Kiekvieno tipo naudingosios apkrovos struktūrą žr. [Įvykių kataloge](/lt/webhooks/events).

- `telephony.incoming`, `telephony.complete`, `telephony.tool`, `telephony.turn`
- `web.incoming`, `web.complete`, `web.tool`, `web.turn`
- `call.graded`, `call.data_extracted`
- `campaign.completed`
- `issue.reported`, `issue.escalated`
- `test-call.completed`
- `alert.triggered`

`issue.escalated` neturi agento konteksto ir pristatomas tik
visos organizacijos galiniams taškams.

`voice.ready` ir `voice.failed` negalima pasirinkti aiškiai. Norėdami juos gauti,
sukurkite visos organizacijos galinį tašką su `events: []`. Tuščias įvykių
sąrašas gauna kiekvieną palaikomą įvykį, išskyrus `telephony.turn` ir `web.turn`,
kuriuos būtina pasirinkti aiškiai.

### Galinių taškų būsenos

- `active` — pristatymai vyksta įprastai.
- `disabled` — rankiniu būdu pristabdytas naudojant `PATCH`. Užklausos nesiunčiamos. Mes
  niekada nekeičiame `disabled` galinio taško būsenos; sprendimą vėl ją nustatyti į
  `active` visada priimate jūs.
- `failing` — nustatoma automatiškai, kai pristatymas į galinį tašką išnaudoja
  visą pakartotinių bandymų grafiką (8 bandymai per 24 valandas) ir
  nė karto negauna 2xx atsakymo. Sugedęs galinis taškas negauna jokio tolesnio srauto.
  Sutaisę galinį tašką, naudodami `PATCH` pakeiskite jo būseną atgal į `active`;
  pristatymai, kurių pakartotinių bandymų grafikas dar nepasibaigė, tęsiami nuo tos vietos,
  kur buvo sustoję.

---

## Išvardyti galinius taškus

<CodeGroup>
```bash cURL
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```
</CodeGroup>

Grąžina [galinių taškų objektų](#endpoint-object) masyvą.
Perduokite `?agent_id=42`, kad būtų grąžinti tik tam agentui priskirti galiniai taškai.

### Agentui priskirti galiniai taškai

Visos organizacijos galiniai taškai gauna kiekvieną atitinkantį įvykį. Galinis taškas su
`agent_id` gauna tik atitinkančius įvykius, susijusius su skambučiais, kuriuos apdorojo tas agentas;
įvykiai be agento konteksto, pvz., `alert.triggered`, jo niekada nepasiekia. Šiuos
galinius taškus taip pat galite kurti ir tvarkyti agento kūrimo priemonės
skiltyje **Žiniatinklio kabliukai**.

---

## Sukurkite galinį tašką

<CodeGroup>
```bash cURL
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call events",
    "url":    "https://example.com/thunderphone/hook",
    "events": ["telephony.incoming", "telephony.complete"]
  }'
```

```python Python
result = requests.post(
    "https://api.thunderphone.com/v1/developer/webhook-endpoints",
    headers={"Authorization": "Bearer sk_live_YOUR_API_KEY"},
    json={
        "label":  "Production — Call events",
        "url":    "https://example.com/thunderphone/hook",
        "events": ["telephony.incoming", "telephony.complete"],
    },
).json()
secret = result["secret"]
endpoint_id = result["id"]
```
</CodeGroup>

### Užklausos laukai

| Laukas | Tipas | Privalomas | Aprašymas |
|-------|------|----------|-------------|
| `label` | eilutė | taip | 1–120 simbolių |
| `url` | eilutė | taip | HTTPS URL (`http` leidžiamas tik `localhost` / `127.0.0.1`) |
| `events` | masyvas | ne | Tuščias arba nenurodytas laukas užsisako visus įvykius, išskyrus `telephony.turn` / `web.turn`, kuriems būtina aiški prenumerata. Naudokite reikšmes, nurodytas skiltyje [Galiojantys įvykių tipai](#valid-event-types); pasikartojimai pašalinami |
| `agent_id` | sveikasis skaičius \| null | ne | Apribokite pristatymą šios organizacijos agentui; nenurodykite arba naudokite `null`, jei galinis taškas skirtas visai organizacijai |

Grąžina `201 Created` su [galinio taško objektu](#endpoint-object) ir papildomu
aukščiausio lygio lauku `secret`, kuriame pateikiamas neapdorotas pasirašymo raktas —
48 simbolių šešioliktainė eilutė:

```json
{
  "id": "c4d5e6f7-…",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z",
  "secret": "a1b2c37e08d94f5b16a2c8d90e7f3a4b5c6d7e8f90a19f0e"
}
```

<Warning>
  `secret` grąžinamas **tik kuriant**. Vėlesniuose `GET` atsakymuose
  pateikiamas tik `secret_hint`. Prieš uždarydami atsakymą nukopijuokite visą reikšmę į savo slaptųjų reikšmių
  tvarkytuvę.
</Warning>

---

## Atnaujinkite galinį tašką

<CodeGroup>
```bash cURL
curl -X PATCH https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call + Grade events",
    "events": ["telephony.incoming", "telephony.complete", "call.graded"]
  }'
```
</CodeGroup>

| Laukas | Tipas | Aprašymas |
|-------|------|-------------|
| `label` | eilutė | |
| `url` | eilutė | |
| `events` | masyvas | |
| `status` | eilutė | `active` arba `disabled`. Nustatykite `active`, kad vėl įjungtumėte galinį tašką, kurį serveris pažymėjo kaip `failing` |
| `agent_id` | sveikasis skaičius \| null | Nustatykite agento ID, kad apribotumėte galinį tašką, arba `null`, kad jis būtų skirtas visai organizacijai |

Grąžina `200 OK` su atnaujintu [galinio taško objektu](#endpoint-object).

---

## Siųsti bandomąjį pristatymą

Siųskite sintetinį `webhook.test` įvykį į vieną galinį tašką naudodami įprastą
pristatymo srautą, įskaitant kanoninį JSON serializavimą,
`X-ThunderPhone-Signature`, pristatymo registravimą ir pakartotinių bandymų apskaitą.
Testas nukreipiamas į pasirinktą galinį tašką, neatsižvelgiant į jo `events` filtrą.

<CodeGroup>
```bash cURL
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```
</CodeGroup>

Galinis taškas gauna tokį apvalkalą:

```json
{
  "data": {
    "message": "ThunderPhone webhook test",
    "sent_at": "2026-07-17T20:12:34.567890+00:00"
  },
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "type": "webhook.test"
}
```

API grąžina `200 OK` po pirmojo bandymo, net jei paskirties vieta
grąžina klaidą. Norėdami nustatyti pristatymo rezultatą, patikrinkite `success`, `status`, `response_code` ir `error`:

```json
{
  "success": true,
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "event_type": "webhook.test",
  "status": "delivered",
  "response_code": 204,
  "error": ""
}
```

`webhook.test` yra sintetinis ir jo negalima įtraukti į galinio taško `events`
prenumeratą. Jei pirmasis bandymas nepavyksta, pristatymui taikomas toks pats
pakartotinių bandymų grafikas kaip ir įprastiems įvykių pristatymams.

Norėdami sukonfigūruoti aktyviklį pagal tikrą įvykio struktūrą, perduokite pasirenkamą
`event_type`. Pristatymas vis tiek yra sintetinis ir jame yra `"sample": true`;
su skambučiais susijusiuose pavyzdžiuose naudojami `call_id: 0` ir `agent_id: 0`.

```bash
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type":"call.graded"}'
```

`event_type` priima bet kurią reikšmę iš [Galiojantys įvykių tipai](#valid-event-types).
Jo nenurodžius išsaugoma bendroji `webhook.test` elgsena.

---

## Ištrinti galinį tašką

<CodeGroup>
```bash cURL
curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```
</CodeGroup>

Grąžina `204 No Content`. Pristatymas į URL nedelsiant sustabdomas;
vykdomi pakartotiniai bandymai nutraukiami.

---

## Derinti pristatymus

Prieš nuspręsdami, kad žiniatinklio kabliukas nebuvo išsiųstas, patikrinkite
[`GET /v1/developer/webhook-deliveries`](/api-reference/webhook-deliveries).
Jame rodomi naujausi bandymai iš abiejų žiniatinklio kabliukų sistemų, įskaitant skambučio ID,
URL kilmę, HTTP būseną, bandymų skaičių, leidžiamųjų sąraše esančią gedimo kategoriją ir kito
pakartotinio bandymo laiką. Jis niekada negrąžina įvykio duomenų, transkripcijos, išsaugoto klaidos teksto,
atsakymo turinio ar URL kelio.

Tą pačią naujausią istoriją taip pat galite matyti **Agentai → pasirinkite agentą → Žiniatinklio kabliukai →
Naujausi pristatymai**. Eilutėse rodoma galinio taško etiketė ir URL kilmė, naudota naujausiam
bandymui. Tai yra veikimo būsena, o ne nekintamas audito žurnalas: ištrynus galinį tašką
taip pat ištrinamos jo pristatymo eilutės.

Jei n8n pateikia `404`, pirmiausia patvirtinkite, kad darbo eiga yra aktyvi, priima `POST` ir naudoja
gamybinį žiniatinklio kabliuko URL, o ne bandomąjį URL. `401` arba `403` rodo
autentifikavimo arba parašo tikrinimo problemą; laiko limitų viršijimai rodo paskirties vietos delsą
arba pasiekiamumą; TLS klaidos rodo sertifikatų grandinės, pagrindinio kompiuterio pavadinimo arba galiojimo pabaigos problemą.

---

## Susiję

<CardGroup cols={2}>
  <Card title="Įvykių katalogas" icon="list" href="/lt/webhooks/events">
    Visas `events` reikšmių, kurias galite prenumeruoti, sąrašas.
  </Card>
  <Card title="Žiniatinklio kabliukų apžvalga" icon="bolt" href="/lt/webhooks/overview">
    Parašo tikrinimas ir pristatymo semantika.
  </Card>
</CardGroup>
