
# Tīmekļa āķi

Queuety var sūtīt HTTP POST paziņojumus uz ārējiem URL, kad notiek noteikti notikumi. Izmantojiet tīmekļa āķus, lai integrētu uzraudzības sistēmas, Slack vai pielāgotus informācijas paneļus.

## Atbalstītie notikumi

| Notikums | Kad tas notiek |
|---|---|
| `job.completed` | Vienkārša apdarinātāja uzdevums vai `Contracts\Job` klase tiek veiksmīgi pabeigta (netiek aktivizēts darbplūsmas darbībām vai stāvokļu mašīnu darbībām) |
| `job.failed` | Mēģinājums izraisa izņēmumu un tiek ieplānots atkārtots mēģinājums |
| `job.buried` | Uzdevums izsmēlis visus atkārtoto mēģinājumu skaitu |
| `workflow.failed` | Darbplūsmas darbība neatgriezeniski neizdodas |

## Tīmekļa āķu reģistrēšana

Izmantojot PHP:

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

Izmantojot CLI:

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

## Tīmekļa āķu uzskaitīšana

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

```bash
wp queuety webhook list
```

## Tīmekļa āķu noņemšana

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

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

## Datu formāts

Kad notiek notikums, Queuety nosūta HTTP POST pieprasījumu ar JSON pamatdaļu. Datu struktūra vienmēr ir šāda:

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

Darbplūsmas kļūdu gadījumā:

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

Tīmekļa āķu piegāde tiek veikta pēc labākās iespējas. Darbinieks pēc kārtas nosūta POST pieprasījumu uz katru reģistrēto URL, izmantojot vienas sekundes straumes taimautu, un ignorē piegādes kļūmes. Tāpēc lēns galapunkts var aizņemt darbiniekam līdz aptuveni sekundei par katru URL, taču nekad neizraisa uzdevuma kļūmi.

## Lietojuma gadījumi

- **Slack brīdinājumi.** Saņemiet paziņojumus, kad uzdevumi tiek paslēpti vai darbplūsmas neizdodas.
- **PagerDuty integrācija.** Izraisiet incidentus kritisku uzdevumu kļūmju gadījumā.
- **Pielāgoti informācijas paneļi.** Straumējiet notikumus uz savu uzraudzības infrastruktūru.
- **Audita pieraksti.** Pārsūtiet notikumus ārējam reģistrēšanas pakalpojumam.
