공식 템플릿은 주문·결제·배송·클레임·구독처럼 쇼핑몰에서 흔히 쓰는 문구와 인증번호·가입 완료·비밀번호 찾기 같은 회원 문구를 부트페이가 대신 승인받아 둔 것이에요. 채널을 연동했다면 검수를 기다리지 않고 바로 보낼 수 있어요. 조회는 부트페이 데이터만 읽어서 부작용이 없어요.
카탈로그 밖의 문구와 쇼핑몰 밖 서비스의 안내는 자체 템플릿으로 자유롭게 만들어요.
검색은 목록에서도 본문(content)과 필수 변수(required_variables)를 함께 돌려줘요. 카탈로그를 훑어보고 고르는 화면을 만들려면 본문이 필요하기 때문이에요. ksp_id를 함께 넘기면 그 채널의 변수 예문 사전으로 미리보기 값까지 채워 줘요.
공식 템플릿의 메시지 유형은 기본형(BA)과 부가정보형(EX) 둘뿐이에요. 채널추가형(AD)·복합형(MI)은 여러 채널이 함께 쓰는 그룹 템플릿에 담을 수 없어서, 그 유형이 필요하면 자체 템플릿으로 만들어요.
1공식 템플릿 검색
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
q |
String | 선택 | 검색어. 본문·이름·분류를 부분일치(대소문자 무시)로 찾아요. keyword 로도 받아요 |
category |
String | 선택 | 분류 정확일치 |
msg_type |
String | 선택 | BA(기본형) 또는 EX(부가정보형) |
page |
Integer | 선택 | 페이지 번호 (기본 1) |
per |
Integer | 선택 | 페이지 크기 (기본 20, 최대 100) |
ksp_id |
String | 선택 | 이 채널의 예문 사전으로 variable_examples를 채워요 |
코드 예제
curl -X GET "https://message.bootapi.com/alimtalk/official?q=재입고&per=20" \
-H "Authorization: Basic {base64(client_key:secret_key)}"bashrequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
response = commerce.alimtalk_official_list(
keyword: '재입고',
per: 20,
ksp_id: '6a718d6cdd5558fb1fff72af'
)
puts response.dataruby응답
{
"list": [
{
"code": "G_RESTOCK_NOTICE_user",
"name": "재입고 알림",
"category": "상품",
"msg_type": "BA",
"tags": ["재입고", "상품"],
"emphasize_type": "NONE",
"version": 1,
"instant_send": true,
"content": "#{company_name}\n#{user_name}님, 찜하신 상품이 재입고되었어요.",
"required_variables": ["company_name", "user_name", "mobile_link", "pc_link"],
"variable_examples": {
"company_name": "부트페이몰",
"user_name": "홍길동"
}
}
],
"count": 57,
"page": 1,
"per": 20,
"categories": ["배송", "주문", "회원"]
}jsoncategories는 필터와 무관하게 카탈로그 전체 기준으로 내려와요. 화면의 분류 탭을 만들 때 써요.
2공식 템플릿 상세
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
code |
String | 필수 | 템플릿 코드 (경로 파라미터, 슬래시를 포함하지 않아요) |
ksp_id |
String | 선택 | 이 채널의 예문 사전으로 variable_examples를 채워요 |
코드 예제
curl -X GET "https://message.bootapi.com/alimtalk/official/G_RESTOCK_NOTICE_user" \
-H "Authorization: Basic {base64(client_key:secret_key)}"bashresponse = commerce.alimtalk_official_detail(code: 'G_RESTOCK_NOTICE_user')
puts response.dataruby응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| code | String | 발송할 때 쓰는 템플릿 코드 |
| content | String | 본문. 변수는 #{변수명} 형식이에요 |
| required_variables | Array | 발송 시 반드시 채워야 하는 변수 |
| emphasize_type | String | NONE·TEXT·IMAGE·ITEM_LIST |
| emphasize_title | String | 강조 타이틀. 발송할 때 치환돼요 |
| emphasize_subtitle | String | 강조 보조문구. 변수를 써도 치환되지 않아요 |
| buttons | Array | 버튼 목록 |
| template_extra | String | 부가정보형(EX)의 추가 문구 |
| instant_send | Boolean | 검수 없이 발송 가능 여부 |
치환되는 영역은 정해져 있어요
required_variables에는 본문·강조 타이틀·보조문구·아이템 요소·버튼 링크의 변수가 모두 잡혀요. 하지만 발송할 때 실제로 값이 치환되는 건 본문·강조 타이틀·버튼 링크뿐이에요. 보조문구와 아이템리스트형 요소는 카카오가 등록된 문구 그대로 렌더해요.
에러 코드
| 코드 | error_code | 메시지 | 대처 방법 |
|---|---|---|---|
3015 |
TEMPLATE_NOT_FOUND |
템플릿 없음 | 코드가 맞는지, 카탈로그에 노출되는 템플릿인지 확인해요 |
다음 단계
쓸 템플릿을 골랐다면 알림톡 발송에서 template_code로 바로 보내요.
