알림톡 실패 시 SMS 대체 발송 설정하기
replaceSms 로 카카오 알림톡이 도달하지 못했을 때 자동으로 문자를 보내는 방법. 필수 파라미터와 흔한 실수를 정리했습니다.
POST /api/v2/notices/send알림톡은 카카오톡을 쓰는 사람에게만 도달합니다. 카카오톡을 안 쓰거나, 채널을 차단했거나, 전달에 실패하면 메시지가 사라집니다. 주문 확인이나 배송 안내처럼 반드시 도달해야 하는 알림이라면 문자로 대체하도록 켜 두세요.
필요한 것
대체 발송에는 문자 발신번호가 추가로 필요합니다. 알림톡만 보낼 때는 kakaoSenderKey 만 있으면 되지만, 대체 발송을 켜면 senderKey(문자 발신번호)도 등록돼 있어야 합니다.
켜는 법
세 개를 함께 넘깁니다. 하나라도 빠지면 대체 발송이 조용히 실패합니다.
| 파라미터 | 값 |
|---|---|
replaceSms |
"Y" |
smsSubject |
문자 제목 (LMS 로 나갈 때 사용) |
smsContent |
문자 본문 |
Node.js / TypeScript
await sendgo.alimtalk.send({
templateCode: 'DELIVERY_START_001',
replaceSms: 'Y',
smsSubject: '[배송 시작 안내]',
smsContent: '주문하신 상품이 출고되었습니다.\n송장번호: #{var2}',
contacts: [{
contact: '01012345678',
var1: 'ORD-001',
var2: '1234567890',
}],
});
Python
client.alimtalk.send(
template_code="DELIVERY_START_001",
replace_sms="Y",
sms_subject="[배송 시작 안내]",
sms_content="주문하신 상품이 출고되었습니다.\n송장번호: #{var2}",
contacts=[{"contact": "01012345678", "var1": "ORD-001", "var2": "1234567890"}],
)
PHP · Laravel
<?php
$sendgo->alimtalk->send([
'templateCode' => 'DELIVERY_START_001',
'replaceSms' => 'Y',
'smsSubject' => '[배송 시작 안내]',
'smsContent' => "주문하신 상품이 출고되었습니다.\n송장번호: #{var2}",
'contacts' => [
['contact' => '01012345678', 'var1' => 'ORD-001', 'var2' => '1234567890'],
],
]);
REST 직접 호출
curl -X POST https://sendgo.io/api/v2/notices/send \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"templateCode": "DELIVERY_001",
"scheduleType": "DIRECTLY",
"replaceSms": "Y",
"smsSubject": "[배송 시작 안내]",
"smsContent": "주문하신 상품이 출고되었습니다.\n송장번호: #{var2}",
"kakaoSenderKey": "your_kakao_sender_key",
"senderKey": "your_sms_sender_key",
"contacts": [{ "contact": "01012345678", "var1": "ORD-001", "var2": "1234567890" }]
}'
대체 본문에서 변수 쓰기
smsContent 안의 #{var1} 형태 자리표시자는 각 수신자의 값으로 치환됩니다. 알림톡 템플릿과 같은 변수를 그대로 쓸 수 있어서, 두 본문을 따로 관리할 필요가 없습니다.
알림톡 템플릿: [#{var2}] 주문 #{var1} 이 출고되었습니다.
smsContent: [#{var2}] 주문 #{var1} 출고. 송장 #{var3}
다만 문자에는 바이트 제한이 적용됩니다. 90바이트를 넘으면 LMS 로 나가고 요금이 달라집니다.
흔한 실수
smsContent를 빠뜨림.replaceSms: 'Y'만 켜고 본문을 안 넣으면 대체할 내용이 없어서 아무것도 나가지 않습니다. 알림톡도 실패했는데 문자도 안 가는 최악의 조합이라, 실제로 가장 자주 나오는 사고입니다.- 문자 발신번호 미등록. 알림톡만 테스트할 때는 문제가 없다가, 실제 대체가 발생하는 순간 실패합니다.
- 비용 예측 누락. 문자는 알림톡보다 단가가 높습니다. 대체 비율이 10%만 돼도 예상 비용이 눈에 띄게 올라갑니다.
- 광고성 메시지에 대체 발송. 알림톡은 정보성만 나가므로 이 조합이 나올 일이 거의 없지만, 브랜드메시지에서 대체 발송을 켤 때는 문자 쪽에
(광고)표기와 수신거부 안내가 필요합니다.
다음 단계
자주 묻는 질문
- SMS 대체 발송은 언제 동작하나요?
- 수신자가 카카오톡을 쓰지 않거나, 채널을 차단했거나, 알림톡이 전달되지 못한 경우입니다. 이때 replaceSms 가 Y 면 지정한 문자 본문이 대신 발송됩니다.
- replaceSms 를 Y 로 했는데 아무것도 안 갔습니다.
- smsContent 를 함께 넘기지 않았을 가능성이 큽니다. 대체 발송 본문이 비어 있으면 보낼 내용이 없어 조용히 아무것도 나가지 않습니다. smsSubject 와 smsContent, 그리고 문자 발신번호(senderKey)를 모두 채우세요.
- 대체 발송 요금은 어떻게 되나요?
- 실제로 나간 채널의 요금이 부과됩니다. 알림톡이 성공하면 알림톡 요금만, 문자로 대체되면 문자 요금이 부과됩니다. 문자가 더 비싸므로 대체 비율이 높으면 비용이 예상보다 올라갑니다.
- 대체 발송 본문에도 템플릿 변수를 쓸 수 있나요?
- 쓸 수 있습니다. smsContent 안의 #{var1} 같은 자리표시자가 각 수신자의 값으로 치환됩니다. 다만 문자에는 알림톡 템플릿의 길이 제한이 아니라 SMS/LMS 바이트 제한이 적용됩니다.