KI fragen
Deutsch DE
Zu Watbot

Eingebaute Variablen

Einen Teil der Daten erhält der Code ohne Funktionsaufrufe — in fertigen JavaScript-Variablen. Welche es gibt, hängt vom Block ab, in dem der Code läuft.

Daten des Kontakts

In allen Blöcken außer „Eingehender Webhook“ stehen die Daten des Kontakts, für den der Code läuft, sofort zur Verfügung. Im „Eingehenden Webhook“ erscheinen sie, nachdem der Code den Kontakt mit einer Funktion zur Kontaktauswahl gefunden hat.

Variable Was darin steht
id ID des Kontakts auf der Plattform
bot_id ID des Bots
name Vollständiger Name des Kontakts
first_name Erstes Wort des Namens
last_name Zweites Wort des Namens
phone Telefon
email E-Mail
address Adresse
username Benutzername im Messenger: @flower_lover in Telegram und MAX, id123456 in VK
telegram_id ID der Person in Telegram
max_id ID der Person in MAX
created_at Wann der Kontakt beim Bot erschienen ist, im Format 2026-01-31 12:00:00 (UTC)

Die Werte sind Zeichenketten, auch id und bot_id. Im „Eingehenden Webhook“ kommen id und bot_id als Zahlen, bringen Sie sie daher vor einem Vergleich in dieselbe Form: Number(id) === 12345.

Fehlt dem Kontakt etwas — etwa die Telefonnummer —, gibt es die Variable gar nicht, und ein Zugriff darauf bricht den Code mit einem ReferenceError ab. Prüfen Sie solche Variablen mit typeof:

if (typeof phone !== 'undefined') {
    setContactVariable('telefon_kurier', phone);
} else {
    sendMessage('Bitte hinterlassen Sie eine Telefonnummer für den Kurier.');
}

Im „Eingehenden Webhook“ gibt es nach der Kontaktauswahl noch einige Variablen — ebenfalls nur, wenn der Kontakt einen Wert hat:

Variable Was darin steht
start_message Die erste Nachricht, die der Kontakt an den Bot gesendet hat
amocrm_lead_id, amocrm_contact_id IDs von Deal und Kontakt in amoCRM
bitrix_lead_id, bitrix_deal_id, bitrix_contact_id IDs von Lead, Deal und Kontakt in Bitrix24

Variablen des Kontakts und globale Variablen des Bots kommen nicht als fertige Variablen — lesen Sie sie mit den Funktionen getContactVariable und getGlobalVariable.

Serverantwort

Im Code des Blocks „HTTP-Anfrage“ liegt die Antwort des Servers im Objekt response:

Feld Was darin steht
response.status Antwortcode als Zahl: 200, 404 und so weiter
response.body Body der Antwort als Zeichenkette, so wie er angekommen ist
response.data Body der Antwort, als JSON gelesen. Ist die Antwort kein JSON, steht hier ein leeres Objekt {}

Der Code startet nur, wenn der Server geantwortet hat. Gibt es keine Antwort — der Server hat in der Zeit aus dem Feld „Timeout“ nicht geantwortet oder die Verbindung kam nicht zustande —, verlässt der Block den Ausgang „Keine Antwort vom Server“, und der Code läuft nicht. Eine Antwort mit Fehlercode, etwa 500, ist eine normale Antwort: Der Code läuft, prüfen Sie response.status selbst.

Der Code läuft nach den übrigen Einstellungen des Blocks: Die Variablen aus „JSON-Antwort in Variablen schreiben“ sind zu diesem Zeitpunkt bereits geschrieben.

if (response.status !== 200) {
    sendMessage('Der Lieferdienst ist gerade nicht erreichbar, bitte versuchen Sie es später.');
    disableContinue();
} else if (response.data.slots && response.data.slots.length > 0) {
    setContactVariable('naechste_lieferung', response.data.slots[0].time);
} else {
    sendMessage('Für heute gibt es keine freien Lieferfenster.');
}

Eingehende Anfrage

Im Code des Blocks „Eingehender Webhook“ liegt die eingegangene Anfrage im Objekt request:

Feld Was darin steht
request.query Parameter aus dem Query-String. Die Werte sind Zeichenketten
request.headers Header der Anfrage. Namen in Kleinbuchstaben: request.headers['content-type']
request.body Body der Anfrage als Zeichenkette, so wie er angekommen ist
request.data Alle Parameter der Anfrage zusammen: aus dem Query-String, dem Formular und einem JSON-Body. Zahlen und Wahrheitswerte aus JSON bleiben Zahlen und true/false

Hat die Anfrage keine Parameter, ist request.query ein leeres Objekt. Prüfen Sie verschachtelte Felder vor dem Zugriff, damit der Code nicht an undefined scheitert:

var order = request.data.order;

if (order && order.contact_id && setContactById(order.contact_id)) {
    setContactVariable('bestellnummer', String(order.id));
    sendMessage('Bestellung Nr. ' + order.id + ' ist gepackt und an den Kurier übergeben.');
}

Signiert der Absender seine Anfragen, können Sie die Signatur mit der Funktion hash_hmac prüfen — anhand von request.body und dem Header mit der Signatur.

Tabellenzeilen

Im Code des Blocks „Zeilen aus Google Sheets lesen“ liegen die gefundenen Zeilen in sheet.data — einem Array von Zeilen, in dem jede Zeile ein Array von Zellen ist.

  • sheet.data enthält nur Zeilen, die die Filter des Blocks passiert haben, und nicht mehr als in „Anzahl der Einträge in der Nachricht“ angegeben.
  • Die Zellen sind Zeichenketten. Die erste Zelle des Arrays ist Spalte A.
  • Der Block lädt die Spalten bis zur rechtesten, die in seinen Einstellungen vorkommt. Damit der Code auch andere Spalten erhält, rufen Sie am Anfang des Codes setColumnRange("A:F") mit dem gewünschten Bereich auf — der Block liest diesen Aufruf vor der Abfrage der Tabelle. Leere Zellen am Zeilenende sendet Google nicht, deshalb können Zeilen unterschiedlich lang sein.
  • Werden keine Zeilen gefunden, läuft der Code nicht: Der Block verlässt den Ausgang „Einträge nicht gefunden“.
setColumnRange("A:C");

var rows = sheet.data;
var total = 0;

for (var i = 0; i < rows.length; i++) {
    total += Number(rows[i][2] || 0);
}

setContactVariable('bestellsumme', total);

Hier steht in Spalte C der Preis des Straußes, und der Code addiert die Preise aller gefundenen Zeilen.