# HTTP-Anfrage

Der Block sendet eine Anfrage an einen fremden Server und wertet die Antwort aus: Er zeigt sie im Chat, schreibt sie in Variablen oder übergibt sie Ihrem Code.

![Einstellungspanel des Blocks „HTTP-Anfrage“](https://support.watbot.org/_media/de/01-chatbots/03-blocks/06-developer/_images/http.webp?v=1791781229)

## Einstellungen

- **„URL“** — die Adresse der Anfrage, bis zu 2048 Zeichen. Die Adresse muss mit `http://` oder `https://` beginnen.
- **„Methode“** — `GET`, `POST`, `PUT`, `DELETE` oder `PATCH`.
- **„Header“** — Paare „Name = Wert“, bis zu zehn. Der Button „Header hinzufügen“ fügt eine Zeile hinzu. Ist der Header `Accept` nicht gesetzt, sendet der Block `Accept: application/json`.
- **„Body“** — der Körper der Anfrage. Das Feld erscheint bei allen Methoden außer `GET`. Das Format wählen Sie in der Liste:
  - `JSON` — der Körper wird vollständig im Editor geschrieben;
  - `x-www-form-urlencoded` — Paare „Schlüssel = Wert“, Zeilen fügt der Button „Zeile hinzufügen“ hinzu;
  - `multipart/form-data` — dieselben Paare und Dateien. Der Button „Datei hinzufügen“ bietet zwei Wege: „Link zur Datei oder Variable“ — der Bot lädt die Datei über den Link herunter und hängt sie an die Anfrage an, „Lokale Datei“ — die Datei wird vom Computer hochgeladen. Eine Anfrage enthält höchstens 20 Dateien.
- **„Timeout“** — die Wartezeit auf die Antwort des Servers in Sekunden, von 1 bis 60. Standard ist 5.
- **„Kontaktdaten in der Anfrage senden“** — fügt der Anfrage drei Felder hinzu: `bot_id` (ID des Bots), `contact` (Daten des Kontakts) und `variables` (seine Variablen). Bei Anfragen mit Körper landen die Felder im Körper. Bei `GET` — in der Abfragezeichenfolge, und nur, wenn die Adresse bereits mindestens einen Parameter enthält.
- **„Antwort-Body im Chat ausgeben“** — der Bot sendet dem Kontakt die Antwort des Servers unverändert. Der Schalter ist standardmäßig eingeschaltet; schalten Sie ihn aus, wenn die Antwort nur technisch ist.
- **„Antwortcode in Variable schreiben“** — der Antwortcode (`200`, `404` und so weiter) wird in der Kontaktvariable gespeichert, deren Namen Sie im Feld „Variable“ angeben.
- **„JSON-Antwort in Variablen schreiben“** — verteilt eine Antwort im JSON-Format auf Kontaktvariablen. Geben Sie im Block „Zuordnung der Variablen“ links den Pfad zum Wert mit Punkten an, rechts den Namen der Variable. Zum Beispiel `data.product.name` → `ware`. Ein Element eines Arrays wird über seine Nummer angesprochen: `items.0.price`. Gibt es unter diesem Pfad keinen Wert, wird eine leere Zeichenfolge in die Variable geschrieben.

- **„Server für die Anfrage“** — von wo die Anfrage ausgeht: „Standard“, „Europa“ oder „SOCKS5-Proxy“. Für einen eigenen Proxy füllen Sie „Host“ und „Port“ aus und, wenn der Proxy eine Anmeldung verlangt, „Benutzer“ und „Passwort“.

- **„Antwort mit JavaScript verarbeiten“** — öffnet den Code-Editor. Der Code erhält die Antwort des Servers im Objekt `response` und kann alles, was auch der Code des Blocks „JavaScript-Interpreter“ kann. Mehr dazu im Abschnitt [„Antwort per Code verarbeiten“](https://support.watbot.org/de/chatbots/blocks/developer/http#antwort-per-code-verarbeiten).

Darunter folgen in den Einstellungen die üblichen Abschnitte „Menü“ und „Zusätzlich“ — dieselben wie bei Blöcken mit einer Nachricht.

![Antwortcode in eine Variable, JSON-Antwort in Variablen: order.id und order.status](https://support.watbot.org/_media/de/01-chatbots/03-blocks/06-developer/_images/http-response.webp?v=1791781229)

## Daten einfügen

In der Adresse, in den Werten der Header, im Körper der Anfrage und in den Pfaden von „Zuordnung der Variablen“ funktionieren [Platzhalter](https://support.watbot.org/de/chatbots/templates):

```
https://example.com/api/orders?phone={{ phone }}&city={{ $stadt }}
```

Im Körper des Formats `JSON` werden die Platzhalter vor dem Parsen ersetzt. Entsteht dabei ungültiges JSON — zum Beispiel, weil der Wert einer Variable ein Anführungszeichen enthält —, geht die Anfrage mit leerem Körper hinaus, und im „Ausführungsprotokoll“ erscheint der Fehler `Invalid JSON`.

![POST-Anfrage mit Authorization-Header und JSON-Body mit Platzhaltern](https://support.watbot.org/_media/de/01-chatbots/03-blocks/06-developer/_images/http-body.webp?v=1791781229)

## Ausgänge

- Menüpunkte — wenn Sie welche im „Menü“ hinzugefügt haben, wartet der Bot auf die Antwort der Person, wie in einem gewöhnlichen Block mit Buttons.
- „Jede andere Phrase“ — die Person hat etwas geschrieben, das im Menü nicht vorkommt.
- „Keine Antwort vom Server“ — der Server hat in der Zeit aus dem Feld „Timeout“ nicht geantwortet, die Verbindung kam nicht zustande oder die Anfrage ist fehlgeschlagen.
- „Fortsetzen“ — das Szenario geht sofort nach der Anfrage weiter, ohne auf die Antwort der Person zu warten.

![Block „HTTP-Anfrage“ im Schema: Ausgänge „Keine Antwort vom Server“, „Beliebige andere Phrase“ und „Weiter“](https://support.watbot.org/_media/de/01-chatbots/03-blocks/06-developer/_images/http-outputs.webp?v=1791781229)

> [!IMPORTANT]
> Eine Antwort mit Fehlercode — zum Beispiel `404` oder `500` — ist für den Block eine gewöhnliche Antwort: Der Ausgang „Keine Antwort vom Server“ wird nicht ausgelöst. Schreiben Sie den Antwortcode in eine Variable und prüfen Sie ihn im nächsten Block.

## Grenzen

- Anfragen an interne Adressen und an Adressen der Plattform selbst sind verboten: Eine solche Anfrage wird nicht gesendet, im „Ausführungsprotokoll“ bleibt der Fehler `URL is not valid`.
- Der Block folgt höchstens fünf Weiterleitungen hintereinander.
- An eine Domain gehen von der gesamten Plattform höchstens 10 Anfragen pro Sekunde. Überzählige Anfragen warten, bis sie an der Reihe sind.
- In „Zuordnung der Variablen“ — bis zu 300 Zeilen.

## Antwort per Code verarbeiten

Der Code aus dem Feld „Antwort mit JavaScript verarbeiten“ wird nach den übrigen Einstellungen des Blocks ausgeführt. Die Antwort des Servers liegt im Objekt `response`:

| Feld | Was darin steht |
|---|---|
| `response.status` | Antwortcode, eine Zahl |
| `response.body` | Körper der Antwort als Zeichenfolge |
| `response.data` | Der geparste Körper, wenn der Server im JSON-Format geantwortet hat |

Mehr dazu unter [Eingebaute Variablen](https://support.watbot.org/de/api/javascript/builtins#serverantwort).

```js
if (response.status === 200 && response.data.paid) {
    setContactVariable('bezahlt', 'ja');
} else {
    sendMessage('Die Zahlung ist noch nicht eingegangen.');
    disableContinue();
}
```

Funktionen und Grenzen sind dieselben wie beim Block „JavaScript-Interpreter“. Endet der Code mit einem Fehler, geht der Fehlertext in den Chat, und die Verbindung „Fortsetzen“ wird nicht ausgelöst.

![„Antwort mit JavaScript verarbeiten“ ist aktiv: Der Code prüft den Antwortcode und sendet eine Nachricht](https://support.watbot.org/_media/de/01-chatbots/03-blocks/06-developer/_images/http-js.webp?v=1791781229)
