فرمول‌ها

فرمول‌ها زبان محاسباتی داخلی GetMyBot هستند. با آن می‌توان مبلغ تخفیف را محاسبه کرد، رشته ساخت، شرط بررسی کرد، فهرست یا تاریخ را تبدیل کرد — مستقیماً در متن پیام، در اقدام «محاسبه» و در شرط‌های جدول تصمیم. نحو به فرمول‌های صفحه‌گسترده نزدیک است و از نام‌های مستعار متعدد برای توابع پشتیبانی می‌کند.

کجا فرمول‌ها کار می‌کنند

  • در متن — ساختار {{= expression}} عبارت را محاسبه و نتیجه را جایگزین می‌کند. مثلاً {{= ROUND(param.total * 0.9) }}.
  • اقدام «محاسبه» (compute) — عبارت را محاسبه و نتیجه را در ctx (فیلد «ذخیره در ctx») و/یا در پارامتر مشترک (فیلد «ذخیره در پارامتر») ذخیره می‌کند.
  • جدول تصمیم — در اقدام «محاسبه» به جای یک عبارت می‌توان فهرستی از قوانین «هنگامی که → آنگاه» تنظیم کرد: مقدار اولین قانونی که شرطش درست است برمی‌گردد، وگرنه مقدار پیش‌فرض.

نحو

  • عملگرها: حساب + - * / %، مقایسه‌ها == != < > <= >=، منطق && || !، پرانتز ( ).
  • لیترال‌ها: اعداد (42، 3.14)، رشته‌ها در گیومه ("سلام")، منطقی (true، false).
  • ارجاع به داده‌ها: داخل عبارت می‌توان به پارامترها و مقادیر زمینه با نام دسترسی داشت — param.total، ctx.items، recipient.email.
  • فراخوانی تابع: name(arg1, arg2). نام‌ها حساس به حروف بزرگ و کوچک نیستند.

توابع

نام‌ها به شکل کانونیک (انگلیسی) داده شده‌اند. حروف بزرگ و کوچک مهم نیستند.

ریاضی

SUM، AVERAGE، MAX، MIN، MOD، POW، SQRT، PI، ROUND، CEIL، FLOOR، TRUNC، ABS، RANDBETWEEN.

متن

LEN، LEFT، RIGHT، MID، LOWER، UPPER، UPPERFIRST، REPEAT، CONCAT، SUBSTITUTE، FIND، SEARCH، FIELD، TRIM، LTRIM، RTRIM، PADLEFT، PADRIGHT، SPLIT، JOIN، STARTSWITH، ENDSWITH، CONTAINS، NL.

منطق

IF، AND، OR، NOT، EMPTY، ISNUMBER، COALESCE.

فهرست‌ها

SORT، RSORT، UNIQUE، FILTER، FOREACH، REDUCE، INDEX، SLICE، COUNTA، COUNTUNIQUE، ARRAYADD، ARRAYREMOVE، ARRAYREPLACE، ARRAYFIND.

تاریخ و زمان

TODAY، NOW، DATEADD، DATESUB، DATEDIF، DATEFORMAT، DATEVALUE، WEEKDAY.

JSON

TOJSON، FROMJSON، JSONPATH، JP، JSONOBJECT، JSONARRAY، KEYS، VALUES.

رمزنگاری و کدگذاری

HASH، TOBASE64، FROMBASE64، FROMJWT، FROMJWK.

پارامترها

PARAMID، PARAMREPLACE، PARAMREMOVE.

مثال‌ها

  • تخفیف ۱۰٪ از مبلغ: {{= ROUND(param.total * 0.9) }}.
  • شرط: {{= IF(param.total > 1000, "عمده", "خرده") }}.
  • ساخت رشته: {{= CONCAT("سفارش شماره", ctx.order_id) }}.
  • اندازه فهرست: {{= COUNTA(ctx.items) }}.

آزمایش فرمول

در ویرایشگر اقدام «محاسبه» یک دکمه بررسی وجود دارد: عبارت و داده‌های نمونه را وارد می‌کنید، و پلتفرم نتیجه را برمی‌گرداند و خطاهای نحوی را برجسته می‌کند — بدون خروج از سازنده. این برای اشکال‌زدایی فرمول‌های طولانی قبل از ذخیره واکنش مفید است.

مرحله بعد