메시지 유형
Cascade API는 네 가지 메시지 유형을 지원하며 각각은 다양한 사용 사례와 채널에 최적화되어 있습니다.
개요
| 유형 | 목적 | 채널 | 인터랙티브 |
|---|---|---|---|
거래 |
중요한 알림 | 모두 | 아니요 |
| '프로모션' | 마케팅 캠페인 | 모두 | 예(버튼) |
viber_survey |
여론조사 및 피드백 | 바이버, SMS | 예(옵션) |
| '플래시콜' | 전화인증 | 전화통화 | 아니요 |
거래 메시지
주문 확인, 계정 업데이트, 시스템 알림과 같은 중요한 알림입니다.
특성
- 우선순위 배송
- 홍보성 콘텐츠가 없습니다.
- 직접적이고 간결함
- 시간에 민감한
- 경로 : Telegram → Viber → RCS → SMS
사용 사례
- 주문 확인
- 결제 알림
- 계정 알림
- 보안 알림
- 배송 업데이트
- 비밀번호 재설정
예
{
"id": "tx-order-12345",
"fromName": "YourStore",
"toPhone": "+380XXXXXXXXX",
"messageType": "transaction",
"text": "Order #12345 confirmed. Total: $99.99. Delivery: Jan 25. Track: https://example.com/track/12345",
"ttl": 86400
}
모범 사례
- ✅ 가능하면 메시지를 160자 미만으로 유지하세요.
- ✅ 관련 거래 세부정보 포함
- ✅ 추적 링크 제공
- ✅ 명확하고 전문적인 언어를 사용하세요.
- ❌ 마케팅 내용을 포함하지 마세요.
- ❌ 이모티콘을 과도하게 사용하지 마세요.
사용 사례별 예
주문 확인
{
"messageType": "transaction",
"text": "Order #12345 confirmed. Total: $99.99. Expected delivery: Jan 25."
}
결제 알림
{
"messageType": "transaction",
"text": "Payment of $150.00 to Merchant ABC successful. Transaction ID: TXN789. Balance: $850.00"
}
보안 경고
{
"messageType": "transaction",
"text": "New login detected from iPhone at 10:30 AM. Location: New York. If this wasn't you, secure your account immediately."
}
배달 업데이트
{
"messageType": "transaction",
"text": "Your package is out for delivery! Expected arrival: 2-4 PM. Track: https://track.example.com/PKG123"
}
프로모션 메시지
풍부한 미디어와 대화형 요소를 갖춘 마케팅 및 판촉 캠페인입니다.
특성
- 리치 미디어 지원
- 대화형 버튼
- 클릭 유도문안 중심
- 더 긴 TTL이 허용됩니다.
- 경로 : Telegram → Viber → RCS → SMS
사용 사례
- 제품 출시
- 판매 공지
- 이벤트 초대
- 뉴스레터 캠페인
- 특별 혜택
- 브랜드 인지도
예
{
"id": "promo-summer-sale",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "promo",
"text": "🌟 Summer Sale! Up to 50% off on selected items. Shop now: https://example.com/sale",
"ttl": 259200
}
변수 포함
{
"messageType": "promo",
"text": "Hi %name=1%! Exclusive offer: Use code %name=2% for 20% off. Shop: %short_url=1%",
"variables": [
{"id": 1, "type": "name", "value": "John"},
{"id": 2, "type": "name", "value": "VIP20"},
{"id": 1, "type": "short_url", "value": "https://store.com/sale?utm=sms"}
]
}
모범 사례
- ✅ 명확한 클릭 유도 문구 포함
- ✅ 매력적인 언어를 사용하세요
- ✅ URL에 추적 매개변수 추가
- ✅ 변수로 개인화
- ✅ 여러 채널에서 테스트
- ❌ 고객에게 스팸을 보내지 마세요
- ❌ 오해의 소지가 있는 내용을 사용하지 마세요.
- ❌ 글자 수 제한을 초과하지 마세요.
사용 사례별 예
제품 출시
{
"messageType": "promo",
"text": "🎉 NEW ARRIVAL: iPhone 15 Pro now available! Pre-order today and get free shipping. Visit: https://store.com/iphone15"
}
반짝 세일
{
"messageType": "promo",
"text": "⚡ FLASH SALE: 2 hours only! Extra 30% off everything. Use code: FLASH30. Shop now: https://store.com/flash"
}
이벤트 초대
{
"messageType": "promo",
"text": "You're invited! VIP Shopping Event on Jan 25 at 6 PM. Exclusive deals + refreshments. RSVP: https://events.com/vip"
}
버려진 장바구니
{
"messageType": "promo",
"text": "Hi %name=1%! You left items in your cart. Complete purchase now and get 10% off with code CART10: %short_url=1%"
}
바이버 설문조사
고객 피드백 수집을 위한 대화형 여론 조사 및 설문 조사입니다.
특성
- 2~5개의 응답 옵션
- 텍스트는 85자로 제한됩니다.
- Viber의 대화형 인터페이스
- SMS로 대체(상호작용 없음)
- 단일 질문 형식
사용 사례
- 고객 만족도 조사
- 제품 피드백
- 서비스 품질 평가
- 시장 조사
- 이벤트 피드백
- 순 추천 지수(NPS)
예
{
"id": "survey-satisfaction-001",
"fromName": "YourBrand",
"toPhone": "+380XXXXXXXXX",
"messageType": "viber_survey",
"text": "How satisfied are you with our service?",
"surveyOptions": [
"Very Satisfied",
"Satisfied",
"Neutral",
"Dissatisfied",
"Very Dissatisfied"
],
"ttl": 604800
}
제약
- 텍스트: 최대 85자
- 옵션: 2~5개 선택
- 옵션 길이: 각각 30자 미만으로 유지하세요.
- TTL: 7~30일 권장
모범 사례
- ✅ 하나의 명확한 질문을 하세요
- ✅ 균형 잡힌 옵션 제공
- ✅ 간단한 언어를 사용하세요
- ✅ 옵션을 간결하게 유지하세요
- ✅ 적절한 TTL 설정(7일 이상)
- ❌ 여러 질문을 하지 마세요
- ❌ 기술적인 전문 용어를 사용하지 마세요.
- ❌ 응답을 편향하지 마세요.
사용 사례별 예
고객 만족(NPS)
{
"messageType": "viber_survey",
"text": "How likely are you to recommend us to a friend?",
"surveyOptions": [
"0 - Not at all",
"1-6 - Unlikely",
"7-8 - Likely",
"9-10 - Very Likely"
]
}
제품 피드백
{
"messageType": "viber_survey",
"text": "How do you rate our new product?",
"surveyOptions": [
"⭐️ Excellent",
"⭐️ Good",
"⭐️ Average",
"⭐️ Poor",
"⭐️ Very Poor"
]
}
서비스 품질
{
"messageType": "viber_survey",
"text": "Was your support experience helpful?",
"surveyOptions": [
"Yes, very helpful",
"Somewhat helpful",
"Not helpful"
]
}
이벤트 피드백
{
"messageType": "viber_survey",
"text": "Would you attend our events again?",
"surveyOptions": [
"Definitely yes",
"Probably yes",
"Not sure",
"Probably not",
"Definitely not"
]
}
플래시 콜
SMS 코드 대신 자동 통화를 사용한 전화 인증입니다.
특성
- 비용 효율적인 검증
- SMS보다 빠릅니다. (1~3초)
- 알림에 표시되는 코드가 없습니다.
- SIM 스왑 공격에 강함
- 전화 통화만 가능(텔레그램/바이버 불가)
사용 사례
- 사용자 등록
- 로그인 인증
- 전화번호 확인
- 이중 인증
- 계정 복구
- 거래 확인
예
{
"id": "verify-user-12345",
"fromName": "YourApp",
"toPhone": "+380XXXXXXXXX",
"messageType": "flashcall",
"ttl": 300
}
작동 방식
- 사용자가 전화번호를 입력합니다.
- API가 플래시 호출을 시작합니다.
- 벨이 1~2회 울리면 통화가 종료됩니다.
- 앱이 발신자 ID를 캡처합니다.
- 패턴을 기준으로 발신자 ID 확인
- 사용자 인증
모범 사례
- ✅ 짧은 TTL 설정(60-300초)
- ✅ 발신자 ID 감지 구현
- ✅ SMS 대체 제공
- ✅ 권한 요청 처리
- ✅ 명확한 지침 표시
- ❌ 홍보용으로 사용하지 마세요.
- ❌ TTL을 길게 설정하지 마세요.
대체 예시
{
"id": "verify-001",
"fromName": "YourApp",
"toPhone": "+380XXXXXXXXX",
"messageType": "flashcall",
"ttl": 300,
"fallback": {
"messageType": "transaction",
"text": "Your verification code: 123456"
}
}
올바른 유형 선택
의사결정 트리
Is it time-critical or transactional?
├─ Yes → transaction
└─ No
└─ Is it promotional?
├─ Yes → promo
└─ No
└─ Is it a survey?
├─ Yes → viber_survey
└─ No → Is it for verification?
├─ Yes → flashcall
└─ No → transaction (default)
비교 매트릭스
| 기능 | 거래 | 프로모션 | 설문조사 | 플래시콜 |
|---|---|---|---|---|
| 리치 미디어 | ❌ | ✅ | ❌ | ❌ |
| 인터랙티브 | ❌ | ✅ | ✅ | ❌ |
| 개인화 | ✅ | ✅ | ✅ | ❌ |
| 일반 TTL | 영업시간 | 일 | 주 | 분 |
| 비용 | 중간 | 중간 | 중간 | 낮음 |
| 배송 속도 | 빠른 | 빠른 | 빠른 | 가장 빠른 |
구현 예
class CascadeMessageBuilder {
constructor(apiKey) {
this.apiKey = apiKey;
}
buildTransaction(id, fromName, toPhone, text, ttl = 86400) {
return {
id,
fromName,
toPhone,
messageType: 'transaction',
text,
ttl
};
}
buildPromo(id, fromName, toPhone, text, ttl = 259200) {
return {
id,
fromName,
toPhone,
messageType: 'promo',
text,
ttl
};
}
buildSurvey(id, fromName, toPhone, text, options, ttl = 604800) {
if (text.length > 85) {
throw new Error('Survey text must be under 85 characters');
}
if (options.length < 2 || options.length > 5) {
throw new Error('Survey must have 2-5 options');
}
return {
id,
fromName,
toPhone,
messageType: 'viber_survey',
text,
surveyOptions: options,
ttl
};
}
buildFlashCall(id, fromName, toPhone, ttl = 300) {
return {
id,
fromName,
toPhone,
messageType: 'flashcall',
ttl
};
}
async send(message) {
// Implementation to send message
}
}
// Usage
const builder = new CascadeMessageBuilder('your-api-key');
// Transaction
const transaction = builder.buildTransaction(
'order-123',
'Store',
'+380XXXXXXXXX',
'Order confirmed'
);
// Promo
const promo = builder.buildPromo(
'promo-001',
'Brand',
'+380XXXXXXXXX',
'Sale now on!'
);
// Survey
const survey = builder.buildSurvey(
'survey-001',
'Brand',
'+380XXXXXXXXX',
'Rate our service?',
['Excellent', 'Good', 'Average', 'Poor']
);
// Flash Call
const flashCall = builder.buildFlashCall(
'verify-001',
'App',
'+380XXXXXXXXX'
);
다음 단계
- 메시지 보내기 - 연속 메시지 보내기 시작
- 메시지 변수 - 메시지 맞춤설정
- SMSBAT API - SMSBAT 기능 살펴보기