메시지 유형별 지원 필드
- 이메일
- 푸시
- SMS
- 인앱 메시지
- 라이브 활동
- 제목, 답장 대상 및 사전 헤더
- 메시지 본문
- HTML 블록의 이미지 대체. 예시:
<img src="{{image_url}}"/> - URL, 메일 보내기 및 기타 필드와 같은 버튼 블록 작업.
기본 구문
Liquid은 두 가지 주요 구문 구조를 사용합니다:- 출력 태그:
{{ ... }}- 변수 또는 객체의 데이터를 표시합니다. - 로직 태그:
{% ... %}- 조건문 또는 루프를 실행합니다.
데이터 소스
| 소스 | 예시 | 설명 |
|---|---|---|
| 태그 | {{ first_name }} | OneSignal SDK 또는 API (tags) |
| 속성 | {{ subscription.email }} | 시스템 관리 (email, external_id, language 등) |
| 저니 이름 | {{ journey.name }} | 시스템 관리 |
| 사용자 지정 데이터 | {{ message.custom_data.key }} | 메시지 생성 API에서 전달된 custom_data |
| 데이터 피드 | {{ data_feed.cart.size }} | 데이터 피드를 사용하면 전송 시 API에서 실시간 데이터를 메시지로 직접 가져올 수 있습니다. |
| 사용자 지정 이벤트 | {{ journey.last_event.name }} | 이벤트 트리거 저니, 다음까지 대기 노드를 통해 설정 |
조건문
연산자
==,!=,>,<,>=,<=and,orcontains(문자열 또는 배열)
연산은 오른쪽에서 왼쪽으로 실행됩니다. 괄호는 지원되지 않습니다.
liquid
if, elsif, else
liquid
unless
liquid
필터
{{ variable | filter }}를 사용하여 필터를 적용하여 데이터 표시 방식을 조정합니다.
default
속성이 비어 있거나 존재하지 않는 경우 기본값을 할당합니다.
liquid
date
date 필터는 타임스탬프를 다른 날짜 형식으로 변환합니다. 이 구문의 형식은 strftime과 동일합니다. 입력은 Ruby의 Time.parse와 동일한 형식을 사용합니다.
태그로 날짜를 초 단위 unix 타임스탬프로 설정합니다. 이렇게 하면 liquid 구문 개인화 및 시간 연산자를 사용한 세분화를 모두 사용할 수 있습니다. 예를 들어 태그는 다음과 같을 수 있습니다: bill_due : 1687968776
liquid
Result
liquid
Result
liquid
Result
now (또는 today)를 전달합니다.
liquid
Result
현재 시간은 메시지가 수신자에게 전송된 시간을 기준으로 메시지에 렌더링됩니다. 메시지를 테스트하는 경우 테스트 메시지가 전송된 시간이 현재 시간으로 표시됩니다.
capitalize
이 필터는 문자열의 첫 문자를 대문자로 만들고 나머지 문자를 소문자로 변환합니다.
liquid
Result
round
이 필터는 숫자를 가장 가까운 정수로 반올림하거나 인수로 숫자가 전달된 경우 해당 소수 자릿수로 반올림합니다.
liquid
Result
pluralize
이 필터는 주어진 숫자를 기준으로 문자열의 단수 또는 복수 형식을 반환합니다. 숫자는 정수여야 하며 문자열로 제공할 수 있습니다. 문자열의 단수 및 복수 형식을 모두 제공해야 합니다.
liquid
Result
반복
for 루프
코드 블록을 반복적으로 실행합니다. for 루프 내에서 사용 가능한 속성의 전체 목록은 for 루프 객체를 참조하세요.
liquid
Request Body
Results
강력하고 유연하지만 liquid 구문에서
for 루프를 사용하면 특정 드문 경우에 알림 전달 성능이 저하될 수 있습니다. for 루프 사용에 주의하세요. 또한 일부 푸시 채널 필드(contents, headings, subtitle, apns_alert 및 url)에서 for 루프 사용을 방지한다는 점에 유의하세요.limit & offset
루프를 지정된 반복 횟수로 제한합니다. 예를 들어 메시지에 4개의 제품만 표시하려는 경우 제한 및 오프셋을 사용하여 표시되는 제품 수를 지정할 수 있습니다.
Data
liquid
Result
Data
liquid
where
주어진 속성 값을 가진 객체만 포함하는 배열을 생성하거나 기본적으로 참 값을 가진 객체만 포함합니다.
이 예시에서는 제품 목록이 있고 주방 제품을 별도로 표시하려고 한다고 가정합니다. where를 사용하면 type이 kitchen인 제품만 포함하는 배열을 만들 수 있습니다.
Data
liquid
Result
문자열 조작
때때로 사용자에게 직접 표시하기에 적합하지 않은 형식의 문자열이 포함된 데이터 태그가 있을 수 있으며, 형식을 조정하기 위해 문자열을 조작해야 할 수 있습니다. 아래는 문자열을 조정하는 데 사용할 수 있는 liquid 구문 명령 표입니다. 태그와 메시지에 직접 작성된 문자열 모두에서 문자열 조작을 사용할 수 있습니다.| 명령어 | 설명 | 예시 | 예시 출력 |
|---|---|---|---|
replace | 하위 문자열을 다른 문자열로 바꿉니다. | {{ 'hello world' | replace: 'world', 'there' }} | hello there |
capitalize | 문자열의 첫 글자를 대문자로 만듭니다. | {{ 'hello' | capitalize }} | Hello |
upcase | 문자열을 대문자로 변환합니다. | {{ 'hello' | upcase }} | HELLO |
downcase | 문자열을 소문자로 변환합니다. | {{ 'HELLO' | downcase }} | hello |
strip | 문자열에서 선행 및 후행 공백을 제거합니다. | {{ ' hello ' | strip }} | hello |
strip_html | 문자열에서 모든 HTML 태그를 제거합니다. | {{ '<p>hello</p>' | strip_html }} | hello |
truncate | 문자열을 지정된 길이로 줄이고 필요한 경우 줄임표(…)를 추가합니다. | {{ 'This is a long sentence' | truncate: 10 }} | This is a… |
truncatewords | 특정 단어 수 이후에 문자열을 자릅니다. | {{ 'This is a long sentence' | truncatewords: 2 }} | This is… |
replace_first | 하위 문자열의 첫 번째 발생을 바꿉니다. | {{ 'hello world' | replace_first: 'world', 'there' }} | hello there |
prepend | 다른 문자열의 시작 부분에 문자열을 추가합니다. | {{ 'world' | prepend: 'hello ' }} | hello world |
append | 다른 문자열의 끝에 문자열을 추가합니다. | {{ 'hello' | append: ' world' }} | hello world |
lstrip | 문자열에서 선행 공백을 제거합니다. | {{ ' hello' | lstrip }} | hello |
rstrip | 문자열에서 후행 공백을 제거합니다. | {{ 'hello ' | rstrip }} | hello |
자주 묻는 질문
대체가 작동하지 않는 이유는 무엇인가요?
- 인앱 메시지는 속성 대체를 지원하지 않습니다.
- “테스트 메시지 보내기”를 사용할 때는 태그 대체가 작동하지 않습니다.
- 태그 키는 영숫자여야 하거나 _ 및 -를 사용해야 합니다(마침표나 공백 없음).
- 미리보기 모드에서는 대체가 표시되지 않습니다. 테스트하려면 실제 메시지를 보내세요.
공백 및 개행을 제어하는 방법은 무엇인가요?
하이픈을 사용하세요:{{- ... -}}, {%- ... -%}는 주변 공백을 제거합니다.
자세한 내용은 공백 제어를 참조하세요.
사용자 생성 콘텐츠를 처리하는 방법은 무엇인가요?
사용자 생성 텍스트를{% raw %} 및 {% endraw %}로 래핑하여 Liquid 구문 분석을 방지하세요. “raw” 구문을 참조하세요.
json