콘텐츠로 이동

메시지 유형

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
}

작동 방식

  1. 사용자가 전화번호를 입력합니다.
  2. API가 플래시 호출을 시작합니다.
  3. 벨이 1~2회 울리면 통화가 종료됩니다.
  4. 앱이 발신자 ID를 캡처합니다.
  5. 패턴을 기준으로 발신자 ID 확인
  6. 사용자 인증

모범 사례

  • ✅ 짧은 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'
);

다음 단계