Files
Workflow/tasks/external_trigger.md
2026-07-02 08:18:00 +02:00

34 lines
2.1 KiB
Markdown

# `external_trigger` — Auf externen Callback warten
**Zweck:** Pausiert den Workflow, bis ein externes System (Signatur-Dienst, Webhook, Pipeline, manueller Klick) eine generierte Callback-URL mit einmaligem Token aufruft. Die mitgesendete Payload landet im Workflow-Kontext. Optional wird das externe System beim Pausieren aktiv per HTTP benachrichtigt (Gegenstück zum ausgehenden `webhook`-Task).
**Parameter**
| Name | Pflicht? | Default | Beschreibung |
|---|---|---|---|
| `notify_url` | nein | — | URL, die beim Pausieren einmalig aufgerufen wird (z. B. um dem externen System die Callback-URL mitzuteilen). |
| `notify_method` | nein | `POST` | HTTP-Methode für den Notify-Aufruf. |
| `notify_body` | nein | leer | Request-Body (Content-Type `application/json`), Platzhalter erlaubt. |
| `notify_header name="…"` | nein | — | Wiederholbar; zusätzliche HTTP-Header für den Notify-Aufruf. |
| `url_var` | nein | `trigger_url` | Name der Kontextvariable, in der die Callback-URL abgelegt wird. |
| `store_payload_var` | nein | — | Kontextvariable, unter der die eingehende Callback-Payload gespeichert wird. |
| `allowed_ips` | nein | — | CSV erlaubter Absender-IPs (exakter Match, kein CIDR). |
| `hmac_secret` | nein | — | HMAC-Secret; Callback muss dann Header `X-Signature: sha256=<hex(hmac(secret, body))>` mitsenden. |
| `timeout_days` | nein | `0` (kein Timeout) | Hard-Timeout in Tagen; danach endet der Task mit `error`. |
**Eingangswerte:** Platzhalter in allen Notify-Feldern; `{{trigger_url}}` ist im `notify_body` bereits verfügbar.
**Ausgangswerte:** `<url_var>` (Default `trigger_url`) = Callback-URL mit Token; nach Empfang optional `<store_payload_var>` = Payload des Callbacks.
```xml
<task type="external_trigger" id="warte_auf_signatur">
<config>
<notify_url>https://sign.example.org/api/sign</notify_url>
<notify_body>{"document":"{{pdf_url}}","callback":"{{trigger_url}}"}</notify_body>
<notify_header name="Authorization">Bearer {{api_token}}</notify_header>
<store_payload_var>signatur_antwort</store_payload_var>
<timeout_days>7</timeout_days>
</config>
</task>
```