
# Webhookok

A Queuety HTTP POST-értesítéseket küldhet külső URL-ekre meghatározott események bekövetkezésekor. A webhookokkal integrálhatóak megfigyelőrendszerek, Slack vagy egyéni irányítópultok.

## Támogatott események

| Esemény | Mikor történik |
|---|---|
| `job.completed` | Egy egyszerű kezelőfeladat vagy `Contracts\Job` osztály sikeresen befejeződik (munkafolyamat-lépéseknél és állapotgép-műveleteknél nem történik meg) |
| `job.failed` | Egy próbálkozás kivételt dob, és újrapróbálkozás ütemeződik |
| `job.buried` | Egy feladat kimeríti az összes újrapróbálkozási lehetőségét |
| `workflow.failed` | Egy munkafolyamat-lépés véglegesen meghiúsul |

## Webhookok regisztrálása

A PHP használatával:

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

A CLI segítségével:

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

## Webhookok listázása

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

```bash
wp queuety webhook list
```

## Webhookok eltávolítása

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

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

## Payload formátuma

Egy esemény bekövetkezésekor a Queuety HTTP POST-kérést küld JSON törzzsel. A payload mindig ilyen szerkezetű:

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

Munkafolyamat-hibáknál:

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

A webhookok kézbesítése legjobb tudás szerint történik. A worker sorban küld kérést minden regisztrált URL számára, streamenként egy másodperces időkorláttal, és figyelmen kívül hagyja a kézbesítési hibákat. Ezért egy lassú végpont URL esetén akár körülbelül egy másodperccel is növelheti a worker futását, de a feladatot soha nem hiúsítja meg.

## Felhasználási esetek

- **Slack riasztások.** Értesítést kaphatsz, ha feladatok kerülnek a sikertelenek közé, vagy ha munkafolyamatok hiúsulnak meg.
- **PagerDuty integráció.** Kritikus feladathibák esetén incidenseket indíthatsz.
- **Egyéni irányítópultok.** Továbbítsd az eseményeket a saját megfigyelési infrastruktúrádba.
- **Auditnapló.** Továbbítsd az eseményeket egy külső naplózási szolgáltatásnak.
