
# Spletne kljuke

Queuety lahko ob določenih dogodkih pošlje zunanjim URL-jem obvestila HTTP POST. S spletnimi kljukami se povežite s sistemi za nadzor, Slack ali nadzornimi ploščami po meri.

## Podprti dogodki

| Dogodek | Sproži se, ko |
|---|---|
| `job.completed` | Se opravilo običajnega obravnavalnika ali razred `Contracts\Job` uspešno zaključi (ne sproži se za korake poteka dela ali dejanja stroja stanj) |
| `job.failed` | Poskus sproži izjemo in je načrtovan ponovni poskus |
| `job.buried` | Opravilo porabi vse poskuse ponavljanja |
| `workflow.failed` | Korak poteka dela trajno odpove |

## Registracija spletnih kljuk

Prek PHP:

```php
$id = Queuety::webhook_notifier()->register( 'job.buried', 'https://hooks.slack.com/services/...' );
```

Prek CLI:

```bash
wp queuety webhook add job.buried https://hooks.slack.com/services/...
wp queuety webhook add workflow.failed https://monitoring.example.com/queuety
```

## Prikaz spletnih kljuk

```php
$webhooks = Queuety::webhook_notifier()->list();
```

```bash
wp queuety webhook list
```

## Odstranjevanje spletnih kljuk

```php
Queuety::webhook_notifier()->remove( $webhook_id );
```

```bash
wp queuety webhook remove 3
```

## Oblika tovora

Ob sprožitvi dogodka Queuety pošlje zahtevo POST HTTP s telesom JSON. Tovor ima vedno to obliko:

```json
{
    "event": "job.buried",
    "data": {
        "job_id": 42,
        "handler": "send_email",
        "queue": "emails",
        "error_message": "Connection timed out"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}
```

Pri napakah poteka dela:

```json
{
    "event": "workflow.failed",
    "data": {
        "workflow_id": 7,
        "job_id": 42,
        "handler": "CallLlmStep",
        "error_message": "API rate limit exceeded"
    },
    "timestamp": "2025-03-15T14:30:00Z"
}
```

Dostava spletnih kljuk je odvisna od najboljšega napora. Delavec po vrsti pošlje zahtevo POST vsakemu registriranemu URL z enosekundno časovno omejitvijo pretakanja in prezre napake pri dostavi, zato lahko počasna končna točka delavcu vzame do približno sekunde na URL, vendar nikoli ne povzroči neuspeha opravila.

## Primeri uporabe

- **Slack opozorila.** Prejmite obvestilo, ko so opravila skrita ali delovni tokovi ne uspejo.
- **PagerDuty integracija.** Sprožite incidente ob kritičnih napakah opravil.
- **Nadzorne plošče po meri.** Pretakajte dogodke v svojo infrastrukturo za spremljanje.
- **Revizijska sled.** Posredujte dogodke zunanji storitvi za beleženje.
