수식

수식은 GetMyBot의 내장 계산 언어입니다. 메시지 텍스트에서, "계산" 액션에서, 의사결정 테이블 조건에서 직접 할인 금액 계산, 문자열 조합, 조건 확인, 목록이나 날짜 변환을 할 수 있습니다. 문법은 스프레드시트 수식과 유사하며 러시아어 함수명 별칭도 지원합니다.

수식이 사용되는 곳

  • 텍스트에서{{= 표현식}} 구조가 표현식을 계산하고 결과를 삽입합니다. 예: {{= ROUND(param.total * 0.9) }}.
  • "계산" 액션 (compute) — 표현식을 계산하고 결과를 ctx("ctx에 저장" 필드)에 및/또는 구독자 매개변수("매개변수에 저장" 필드)에 저장합니다.
  • 의사결정 테이블 — "계산" 액션에서 단일 표현식 대신 "조건 → 결과" 규칙 목록을 설정할 수 있습니다: 조건이 참인 첫 번째 규칙의 값을 반환하며, 아니면 기본값을 반환합니다.

문법

  • 연산자: 산술 + - * / %, 비교 == != < > <= >=, 논리 && || !, 괄호 ( ).
  • 리터럴: 숫자(42, 3.14), 문자열 따옴표("안녕"), 불리언(true, false).
  • 데이터 참조: 표현식 내에서 매개변수와 컨텍스트 값을 이름으로 참조할 수 있습니다 — param.total, ctx.items, recipient.email.
  • 함수 호출: 이름(인수1, 인수2). 이름은 대소문자를 구분하지 않습니다.

함수

이름은 표준(영어) 형식입니다. 대소문자는 중요하지 않습니다.

수학

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.

예시

  • 금액에서 10% 할인: {{= ROUND(param.total * 0.9) }}.
  • 조건: {{= IF(param.total > 1000, "도매", "소매") }}.
  • 문자열 조합: {{= CONCAT("주문 번호", ctx.order_id) }}.
  • 목록 크기: {{= COUNTA(ctx.items) }}.

수식 테스트

"계산" 액션 편집기에는 확인 버튼이 있습니다: 표현식과 샘플 데이터를 입력하면 플랫폼이 결과를 반환하고 문법 오류를 강조 표시합니다 — 빌더를 떠나지 않고도 됩니다. 반응을 저장하기 전에 긴 수식을 디버깅하는 데 편리합니다.

다음 단계