
# Webhooks

Queuety kan skicka HTTP POST-aviseringar till externa URL:er när specifika händelser inträffar. Använd webhooks för att integrera med övervakningssystem, Slack eller egna kontrollpaneler.

## Händelser som stöds

| Händelse | Utlöses när |
|---|---|
| `job.completed` | Ett vanligt handläggarjobb eller en klass av typen `Contracts\Job` har slutförts utan fel (utlöses inte för arbetsflödessteg eller tillståndsmaskinåtgärder) |
| `job.failed` | Ett försök kastar ett undantag och ett nytt försök schemaläggs |
| `job.buried` | Ett jobb har förbrukat alla sina försöksomgångar |
| `workflow.failed` | Ett arbetsflödessteg misslyckas permanent |

## Registrera webhooks

Via PHP:

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

Via CLI:

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

## Lista webhooks

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

```bash
wp queuety webhook list
```

## Ta bort webhooks

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

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

## Nyttolastens format

När en händelse inträffar skickar Queuety en HTTP POST-begäran med en JSON-kropp. Nyttolasten har alltid följande struktur:

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

Vid fel i arbetsflöden:

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

Webhook-leveransen sker efter bästa förmåga. Arbetaren skickar en begäran till varje registrerad URL i tur och ordning med en tidsgräns på en sekund för dataströmmen och ignorerar leveransfel. En långsam slutpunkt kan därför uppta arbetaren i upp till ungefär en sekund per URL, men gör aldrig att jobbet misslyckas.

## Användningsområden

- **Slack-aviseringar.** Få aviseringar när jobb begravs eller arbetsflöden misslyckas.
- **PagerDuty-integrering.** Utlös incidenter vid kritiska jobbmisslyckanden.
- **Anpassade instrumentpaneler.** Skicka händelser till din egen övervakningsinfrastruktur.
- **Revisionslogg.** Vidarebefordra händelser till en extern loggtjänst.
