문법과 규칙
지시문을 쓰면서 옆에 두고 보는 페이지입니다. 쓸 수 있는 옵션, 저장이 거부되는 경우, 한도, 응용 예제를 모았습니다.
사용 가능한 문법
Section titled “사용 가능한 문법”| 문법 | 설명 | 적지 않으면 |
|---|---|---|
:save | 응답을 담아둘 이름. JSON은 {{ 이름.필드 }}로 꺼냅니다 | JSON은 connected에 담기고, 텍스트는 지시문 자리에 출력 |
:method | get 또는 post | get |
:body | POST로 보낼 데이터. :method post와 함께 써야 합니다 | 데이터 없이 호출 |
:content_type | 보내는 데이터 형식. JSON body는 application/json | 폼 형식 (application/x-www-form-urlencoded) |
:headers | 추가 헤더를 JSON 객체로 적습니다. 예: :headers {"X-Store-Id": "123"}JSON 형식이 아니면 호출하지 않고 실패 처리됩니다. 인증용 헤더는 인증 정보 등록을 사용하세요 | 기본 헤더만 전송 |
:basic_auth | Basic 방식으로 등록한 인증 정보 이름 | 인증 없이 호출 |
:auth_credentials | Token 방식으로 등록한 인증 정보 이름 | 인증 없이 호출 |
:cache_max_age | 응답 재사용 시간. 단위는 초입니다. 수신자마다 값이 같은 호출이라면 길게 잡아 호출 수를 줄일 수 있습니다 | 기본 캐시 규칙 (응답 재사용 설정하기 참고) |
:no_cache | 매번 새로 호출합니다. 재고처럼 항상 최신이어야 하는 값에 씁니다 | 캐시 사용 |
default: | 값이 비었을 때 보여줄 문구 (개인화 메시지의 기존 필터) | 빈칸으로 발송 |
{% abort_message %} | 이 수신자에게 발송하지 않습니다 | 빈칸이어도 발송 |
저장이 거부되는 경우
Section titled “저장이 거부되는 경우”| 저장이 거부되는 경우 | 해결 방법 |
|---|---|
| Liquid 문법 오류, 지원하지 않는 필터 · 태그 | 괄호 짝과 필터 이름을 확인하세요 |
| 지원하지 않는 옵션, 옵션값 오류 | :method는 get · post만 쓸 수 있습니다:cache_max_age는 초 단위로 적습니다 (예: 3600):retry는 아직 지원하지 않습니다 (추후 지원 예정) |
| 메시지당 호출 수 초과 | 제목 · 내용 등 모든 필드를 합쳐 3개까지만 작성해주세요. |
| for 반복문 안의 지시문 | 반복문 밖에서 한 번 호출하고 응답 배열을 반복하세요 (아래 예제 4) |
| 호출 주소의 도메인에 개인화 변수 | 호출 주소의 도메인에는 개인화 변수를 사용할 수 없습니다 도메인은 고정하고, 변수는 경로 · 쿼리에만 사용해주세요 |
| 저장한 이름을 필드 없이 사용 | {{ point }} 대신 {{ point.amount }}처럼 필드까지 적어주세요 |
| 인증 정보 문제 | 등록된 이름인지, 방식(Basic · Token)과 옵션(:basic_auth · :auth_credentials)이 맞는지, 허용 도메인이 호출 주소와 정확히 같은지 확인하세요 |
| 항목 | 한도 |
|---|---|
| 메시지당 호출 수 | 제목 · 내용 등 모든 필드를 합쳐 3개 · 지시문마다 1개로 셉니다. 필드가 달라 같은 주소를 다시 적어도 각각 셉니다 · {% if %} 분기 안의 지시문도 실행 여부와 관계없이 모두 셉니다· 여정 자동화는 메시지 액션마다 3개 |
| 호출 1건당 최대 대기 시간 | 2초 |
| 응답 크기 | 1MB |
| 호출 주소 길이 | 변수 치환 후 2048자 |
| 응답 캐시 유지 시간 | · GET 기본 5분 · POST는 :cache_max_age를 지정할 때만· :cache_max_age 지정 범위 300초(5분) ~ 14400초(4시간). 벗어난 값은 가장 가까운 한도로 맞춰 적용됩니다 |
| 인증 정보 등록 개수 | 프로젝트당 10개 |
기본 사용법을 익힌 뒤 참고할 수 있는 예제입니다.
예제 1. 제목과 내용에서 같은 값 쓰기
Section titled “예제 1. 제목과 내용에서 같은 값 쓰기”:save로 저장한 이름은 지시문을 쓴 필드 안에서만 쓸 수 있습니다. 제목과 내용처럼 다른 필드에서 쓰려면 필드마다 지시문을 적어주세요. 주소가 같으면 캐시된 응답을 재사용합니다.
제목
{% connected_content https://api.example.com/products/{{ tags.wishlist_sku }} :save product %}찜하신 {{ product.name }} 가격이 내려갔어요.내용
{% connected_content https://api.example.com/products/{{ tags.wishlist_sku }} :save product %}지금 {{ product.price | number_with_delimiter }}원에 만나보세요.예제 2. 앞의 응답을 다음 호출에 쓰기
Section titled “예제 2. 앞의 응답을 다음 호출에 쓰기”지시문은 위에서 아래로 실행되므로, 먼저 저장한 값을 다음 호출 주소에 쓸 수 있습니다. 앞 호출이 끝나야 다음 호출이 시작돼서 대기 시간이 쌓입니다.
{% connected_content https://api.example.com/me?uid={{ userId }} :save me %}{% connected_content https://api.example.com/orders/{{ me.id }} :save orders %}{{ me.name }}님의 주문 {{ orders.total }}건예제 3. 조건에 따라 다른 API 호출하기
Section titled “예제 3. 조건에 따라 다른 API 호출하기”{% if %} 안에서도 호출할 수 있고, 양쪽에 같은 이름을 써도 됩니다. 실제로 실행된 쪽의 응답이 담깁니다.
{% if tags.vip %} {% connected_content https://api.example.com/vip-deals :save deals %}{% else %} {% connected_content https://api.example.com/normal-deals :save deals %}{% endif %}오늘의 특가: {{ deals.title }}예제 4. 응답 목록을 반복문으로 표시하기
Section titled “예제 4. 응답 목록을 반복문으로 표시하기”지시문은 반복문 밖에서 한 번만 호출하고, 받아온 목록을 반복문으로 표시합니다.
{% connected_content https://api.example.com/reco?uid={{ userId }} :save reco %}회원님을 위한 추천 상품이에요.
{% for item in reco.items %}- {{ item.title }} {{ item.price | number_with_delimiter }}원{% endfor %}