Rechner ist ein Feld im Block „Editor“, das geöffnet wird, wenn Sie auf den gleichnamigen Tab klicken. In diesem Feld können Sie logische oder arithmetische Operationen durchführen, Funktionen von API-Anfragen aus dem Builder sowie verfügbare Integrationen ausführen.

Es ermöglicht Ihnen, eine Variable für den Kunden, der diesen Block betreten hat, zuzuweisen (zu deklarieren) oder die Werte vorhandener Variablen zu aktualisieren. Diese Funktionalität ist besonders nützlich für den Aufbau von Funnels oder die Verfolgung von Traffic-Quellen.

Der gleichnamige Artikel erklärt, wie man mit Variablen arbeitet.

Wichtige Punkte:

Bei der Arbeit mit dem Rechner darf ein Variablenname nicht mit einer Zahl beginnen.

Falsch: <1_name>\ Richtig: <name_1>.

Ein Variablenname darf keine Leerzeichen enthalten; verwenden Sie einen Unterstrich „_“, um Wörter zu trennen.\ Falsch: <Client Name>\ Richtig: <Client_Name>

Weitere Details finden Sie im Artikel „Variablen.“ ****ссылка

So verwenden Sie den Rechner im Builder

Es ist nicht erforderlich, die #{} -Syntax zu verwenden, wenn Sie auf eine Variable verweisen.

Beispiel für die Berechnung eines Variablenwerts im Feld Rechner:

Auf Variablen kann entweder direkt über ihren Namen oder mit der #{} -Syntax verwiesen werden. Alle Variablen werden automatisch in Gleitkommazahlen umgewandelt.

Der Rechner unterstützt alle notwendigen logischen und arithmetischen Operationen.

Kommentare im Rechner

Um Kommentare im Rechner hinzuzufügen, verwenden Sie /* Kommentartext /. Diese / */ Syntax ermöglicht es Ihnen, sowohl einzeilige als auch mehrzeilige Kommentare zu schreiben:

Denken Sie daran, Ihren Kommentar immer mit dem Tag */ am Ende zu schließen; andernfalls wird der Kommentar in der nächsten Zeile fortgesetzt.

Denken Sie daran, das schließende Tag für den Kommentar einzufügen, auch wenn der Kommentar die letzte Zeile im Feld „Rechner“ ist.

Platzieren Sie Kommentare nicht direkt hintereinander; zwischen ihnen muss mindestens eine leere Zeile sein.

Konstanten

E“: Eulersche Zahl e

Unterstützte Operatoren

+“: Addition

-“': Subtraktion

*Multiplikation

/“: Division

%'“: Rest der Division

^“ „**“: Potenzierung

==“ „!=“ „>“ „<“ „>=“ „<=“: Vergleichsoperatoren

and“ „AND“ „&&“: logisches UND

or“ „OR“ „||“: logisches ODER

Wichtig! Logische Trigger mit Variablen müssen im Feld „Variable“ geschrieben werden, nicht im Feld „Trigger“!

Zum Beispiel erfolgt der Übergang entlang des Konnektors, wenn die Variable Phone_Number ausgefüllt ist. Siehe Abbildung unten:

Hinweis!

Wenn Sie eine Variable mit einem Wert in Anführungszeichen vergleichen, stellen Sie sicher, dass zwischen den Anführungszeichen und dem Wert keine Leerzeichen sind; andernfalls kann der Block nicht ausgelöst werden oder sich falsch verhalten!

Richtig (kein Leerzeichen vor dem Anführungszeichen oder nach dem Wert my_new_bot):

Falsch (mit einem Leerzeichen vor dem Anführungszeichen):

Der IF-Operator

Sie können jetzt bedingte Logik im Rechner mit dem IF-Operator verwenden:

if (score > 90) {
    grade = 'excellent'
    bonus = 500
} else if (score > 70) {
    grade = 'good'
} else {
    grade = 'keep trying'
}

Bedingungen können auch in einer einzigen Zeile geschrieben werden:

if (paid == 1) { status = 'ok' } else { status = 'wait' }

Jeder Zweig kann eine beliebige Anzahl von Zeilen enthalten, einschließlich verschachtelter Bedingungen und Schleifen.

Nur der Zweig, dessen Bedingung als wahr ausgewertet wird, wird ausgeführt. Alle anderen Zweige werden vollständig übersprungen, sodass eine undefinierte Variable oder ein Fehler in einem inaktiven Zweig die Berechnung nicht mehr unterbricht.

Die #{variable}-Substitution erfolgt ebenfalls nur innerhalb des aktiven Zweigs.

Die Methode if(Bedingung, wenn_wahr, wenn_falsch) funktioniert weiterhin wie zuvor, aber jetzt wird nur der ausgewählte Zweig ausgewertet:

status = if(paid == 1, 'Bezahlt', 'Warte auf Zahlung: #{payment_url}')

Wenn paid == 1 ist, wird der Zweig, der #{payment_url} enthält, überhaupt nicht verarbeitet, sodass die Variable nicht existieren muss.

while- und for-Schleifen, break und continue

i = 0
sum = 0
while (i < 10) {
    sum += i
    i += 1
}
for (i = 0; i < 10; i += 1) {
    sum += i
}

Schleifen und Bedingungen können frei verschachtelt werden.

break beendet eine Schleife vorzeitig.

continue überspringt den Rest der aktuellen Iteration und fährt mit der nächsten fort:

found = -1
for (i = 0; i < arr_len(items); i += 1) {
    if (items[i] == target) {
        found = i
        break
    }
}

Verwenden Sie for (;;) { ... }, um eine Endlosschleife zu erstellen, vorbehaltlich des Iterationslimits.

Schutz vor Endlosschleifen

Jeder Variablenblock erlaubt maximal 256 Iterationen über alle Schleifen hinweg.

Sobald das Limit erreicht ist, werden alle Schleifen gestoppt und der Rest des Blocks wird weiter ausgeführt. Das vorzeitige Beenden einer Schleife mit break hilft, das verfügbare Iterationslimit zu schonen.

Wie Variablen gespeichert werden

Innerhalb einer Schleife werden Werte sofort aktualisiert. Die Schleifenbedingung und jede nachfolgende Zeile verwenden immer die aktuellsten Werte.

Nur die endgültigen Werte werden einmalig gespeichert, nachdem die Schleife beendet ist, auch wenn sie durch break beendet wird. Egal wie viele Iterationen durchgeführt werden, nur das Endergebnis wird geschrieben.

Wenn innerhalb einer Schleife ein Fehler auftritt, werden keine der von dieser Schleife vorgenommenen Änderungen gespeichert. Während der Iterationen erstellte Werte sind temporär, und die zuvor gespeicherten Werte bleiben unverändert.

Eine for-Schleifenvariable, wie z. B. i, ist intern. Sie existiert nur, während die Schleife läuft, wird nie gespeichert und verschwindet, wenn die Schleife beendet ist.

Lokale Variablen

Das Schlüsselwort local erstellt eine temporäre interne Variable. Sie bleibt für alle Berechnungen bis zum Ende des Blocks verfügbar, wird aber nie im Kundenprofil gespeichert.

Das bedeutet, dass temporäre Variablen wie tmp und buf nicht mehr manuell mit del entfernt werden müssen.

local tmp = get(#{data}, 'items')
local count = arr_len(tmp)
if (count > 5) {
    result = 'many'
}

Wenn der Kunde bereits eine reguläre Variable mit demselben Namen hat, bleibt diese unverändert. Die lokale Variable überlagert sie nur vorübergehend.

Die Operatoren += und -=

counter += 1
balance -= price
greeting += ', hello!'

Diese Operatoren funktionieren mit Zahlen und Zeichenketten an jeder Stelle im Block. Bei Zeichenketten hängt += den neuen Text an den vorhandenen Wert an.

Mehrzeilige Ausdrücke und JSON ohne Anführungszeichen

Lange Ausdrücke müssen nicht mehr in eine einzelne Zeile passen. Bisher konnte ein Zeilenumbruch dazu führen, dass der gesamte Block fehlschlug, was ein häufiges Problem bei der Arbeit mit dem Rechner war.

Funktionsaufrufe können sich jetzt über mehrere Zeilen erstrecken. Fügen Sie einfach einen Zeilenumbruch nach einem Komma zwischen den Argumenten ein.

Objekte und Arrays können auch direkt geschrieben werden, ohne sie in Anführungszeichen zu setzen, und können sich über so viele Zeilen erstrecken wie nötig:

cfg = {
    "greeting": "Hallo!",
    "work_hours": [10, 19]
}
hello = cfg["greeting"]

Es gibt nur eine Einschränkung: Text in Anführungszeichen, wie z. B. '...', darf keinen Zeilenumbruch enthalten.

Fügen Sie Zeilenumbrüche nach Kommas zwischen Funktionsargumenten oder überall innerhalb von {geschweiften Klammern} und [eckigen Klammern] ein.

KI-gestützte Validierung

Jeder Rechner-Code kann mit KI überprüft werden. Sie identifiziert potenzielle Probleme und Fehler in Bezug auf Methoden, Funktionen, Operatoren, Bedingungen und Schleifen.