Webhook: Respond

action_webhook_respond · action · HTTP & Webhook · Disponibile · v2.0.0

Descrizione

Risponde alla richiesta HTTP del trigger_webhook con body, status code e headers personalizzati. Da posizionare ALLA FINE del ramo workflow quando il chiamante aspetta una response sincrona — senza questo nodo (e con responseMode="use-respond-node" nel trigger) il runtime restituisce JSON fallback `{runId, status}`, non quello che vuole il vendor partner B2B che ti sta chiamando. Differenza con i sibling: action_webhook_respond = response sincrona allo stesso request del trigger_webhook (1-1 pairing). Se vuoi rispondere SUBITO + continuare workflow async usa responseMode="fire-and-forget" sul trigger (no respond node necessario). Per redirect senza body usa modalità "Redirect" qui invece di costruire location header a mano. Modalità predefinite (zero-config per il caso comune): (a) JSON — body=auto-stringify del JSON config o expression upstream, content-type application/json + charset utf-8, (b) Testo plain, (c) HTML — content-type text/html + charset utf-8 (per SSR detail pages tipo Streammy/cataloghi), (d) Redirect 302/303/307 — solo Location header (preserva method o forza GET secondo status), (e) File binario — body base64 + Content-Disposition attachment con filename, (f) 204 No Content — risposta vuota per ack-only, (g) Custom — full control su body+status+headersJson. Features production: interpolation espressioni nel customBody ({{$node.upstream.json.X}} per dati dinamici da step precedenti), headersJson per CORS/Cache-Control/X-* custom, status preset comuni (200 OK / 201 Created / 202 Accepted / 204 No Content / 302/303 / 400/401/403/404 / 500), supporto streaming download grandi via base64 + bodyIsBase64=true (sentinel runtime decode lazy). Use case: (1) API REST custom che restituisce JSON dopo elaborazione DB (Liara/agent_extractor → DB → respond), (2) endpoint Stripe/PayPal webhook che deve restituire 200 OK ack entro 5s (use fire-and-forget invece se elaborazione lenta), (3) servire HTML SSR dinamico (detail page Streammy + asset signed proxy URL), (4) download fattura PDF generato dal workflow con filename per-customer. Safety budget: max body 50 MB (oltre conviene S3 redirect), interpolation espressioni timeoutate 1s, header iniezione bloccata (no CRLF in valori).

⚙️ Parametri di configurazione

Campi mostrati nell’editor quando si configura il nodo. Generati direttamente dal NodeDefconfigFields.

CampoTipoRequiredDefaultDescrizione
respondWith
Tipo di risposta
enum
jsontexthtmlredirectbinaryemptycustom
sijsonjson = serializza input come application/json (default per API REST). text = plain text. html = pagina HTML (text/html). redirect = 302 con header Location verso un altro URL. binary = file binario (input atteso in base64, output con il contentType configurato — es. application/pdf, image/png). empty = 204 No Content, nessun body (per webhook ACK silenziosi tipo Slack). custom = controllo totale su body + contentType + headers (per casi avanzati).
statusPreset
Codice di stato
enum
200 OK201 Created202 Accepted204 No Content301 Moved Permanently302 Found304 Not Modified400 Bad Request401 Unauthorized403 Forbidden404 Not Found409 Conflict410 Gone422 Unprocessable Entity429 Too Many Requests500 Internal Server Error502 Bad Gateway503 Service UnavailableCustom (specifica sotto)
no200 OKCodice HTTP da restituire. I preset coprono il 95% dei casi. Scegli "Custom" e usa il campo "Status personalizzato" sotto per codici non standard (es. 418 I'm a teapot, 451 Unavailable for Legal Reasons).
status
Status personalizzato
numberno
es. 418
Usato SOLO quando "Codice di stato" = Custom. Range 100-599.
body
Body della risposta
expressionno
{"ok":true,"data":{{$node.Transform.json}}} oppure <html><h1>{{input.title}}</h1></html>
Contenuto da restituire. Supporta {{espressioni}} con valori dai nodi precedenti. Se VUOTO: per JSON serializza l'input del nodo precedente; per Text/HTML usa l'input come stringa.
redirectLocation
URL di redirect
expressionno
https://example.com/grazie oppure /pagina/successo?id={{input.orderId}}
Destinazione del redirect. Può essere assoluto (https://...) o relativo (/path). Imposta automaticamente lo header "Location" e usa status 302 se non specificato.
binaryData
Dati binari (base64)
expressionno
{{$node.PDF_Generate.base64}}
Body binario codificato in base64. Tipicamente l'output di un nodo File Read o PDF Generate. Viene decodificato server-side prima di scriverlo sulla response.
binaryContentType
Content-Type binario
enum
application/pdfapplication/zipimage/pngimage/jpegimage/gifimage/webpimage/svg+xmlaudio/mpegaudio/wavvideo/mp4application/octet-stream
noapplication/octet-streamMIME del file binario. application/octet-stream = "scarica come file generico".
binaryFilename
Nome file (per download)
expressionno
report-{{input.id}}.pdf
Quando impostato, aggiunge header Content-Disposition: attachment; filename="..." così il browser apre il dialogo di salvataggio invece di renderizzare inline.
contentType
Content-Type personalizzato
enum
application/jsontext/html; charset=utf-8text/plain; charset=utf-8application/xmltext/xmltext/csvapplication/javascriptapplication/yamlapplication/octet-stream
noapplication/jsonMIME esplicito del body. Usato solo in modalità Custom (le altre modalità impostano automaticamente il tipo corretto).
customBody
Body custom
expressionno
qualsiasi stringa, supporta {{espressioni}}
Body completamente sotto il tuo controllo. Vuoto = stringa vuota.
corsOrigin
Access-Control-Allow-Origin
stringno
* oppure https://miosito.com
Header CORS. Necessario se la response viene letta da un browser su un dominio diverso. "*" = qualsiasi origine (più permissivo). Per produzione metti il tuo dominio.
headersJson
Headers HTTP extra
key-valuenoHeaders aggiuntivi oltre a Content-Type/Location/Content-Disposition (gestiti sopra). Es. Cache-Control=no-cache, X-Request-Id={{$run.id}}, ETag="abc123".

💡 Esempio configurazione

Snippet JSON del nodo come compare nel workflow. I valori sono derivati daidefaultValue e dai parametri required.

{
  "id": "node-action_webhook_respond-1",
  "defId": "action_webhook_respond",
  "label": "Webhook: Respond",
  "config": {
    "respondWith": "json",
    "statusPreset": "200 OK",
    "binaryContentType": "application/octet-stream",
    "contentType": "application/json"
  }
}

🔗 Nodi correlati nella stessa categoria

Pronto a usare Webhook: Respond?

Disponibile da subito in tutti i piani FlowForge. Provalo gratis senza carta di credito.

Inizia gratisSfoglia tutti i nodi