← 메인으로 돌아가기

🎁 GiftCall 메시지 플랫폼 파트너사 연동 아키텍처 설계

파트너사 독립적 구조 - NHN Cloud/메가버드 교체 가능한 유연한 설계

📋 문서 정보
• 작성일: 2025-12-24
• 최종 수정: 2025-12-29
• 핵심 설계: 추상화 계층으로 파트너사 교체 시 환경변수만 변경
• 대상: 개발자, 아키텍트

📚 목차

📋 개요

핵심 목표

✅ 명절 선물세트 배송 업무의 완전 자동화

문제점 → 개선

문제점 개선
수작업 전화 자동 메시지 발송
종이 기록 디지털 실시간 관리
점포 대표번호 (응답률 낮음) 카카오톡
개인정보 우려 시스템 통합 보호

업무 시나리오

[1] 주문 등록
   - 웹에서 주문 정보 입력
   - 수령자 목록 엑셀 업로드 (100명)
   ↓
[2] 알림톡 일괄 발송
   - 템플릿 메시지 발송
   - 버튼: [채널 추가하고 답장하기]
   ↓
[3] 고객 회신 수신
   - Webhook으로 자동 저장
   ↓
[4] 실시간 현황 모니터링
   - 응답률 확인
   - 미응답자 추적
   ↓
[5] 추가 대화 및 조율
   - 배송일 변경
   - 주소 변경
   ↓
[6] 미응답자 재발송
   ↓
[7] 배송 처리
   - 엑셀 다운로드

🏗️ 아키텍처

유연한 구조 설계 ⭐

GiftCall 시스템 (FastAPI + Vue.js)
    ↓
AlimTalkService (추상화 계층)
    ↓
Provider 선택 (환경변수)
    ├─ NHN Cloud
    └─ 메가버드
    ↓
카카오 서버
    ↓
고객
✅ 핵심: 환경변수만 변경하면 파트너사 교체 가능

환경변수 설정

ALIMTALK_PROVIDER=nhn_cloud  # 또는 megabird

코드 예시

# 파트너사 독립적
service = create_alimtalk_service()  # 환경변수에서 자동 선택
result = service.send_delivery_notification(...)

파일 구조

backend/app/services/
└── alimtalk_service.py
    ├── AlimTalkProvider (추상 클래스)
    ├── NHNCloudProvider (구현)
    ├── MegabirdProvider (구현)
    ├── AlimTalkService (비즈니스 로직)
    └── create_alimtalk_service() (팩토리)

새 파트너사 추가 방법

class NewProvider(AlimTalkProvider):
    def send_message(self, phone, template_code, template_params):
        # 새 파트너사 API 호출
        pass
    
    def get_message_status(self, message_id):
        # 상태 조회
        pass
    
    def validate_config(self):
        # 설정 검증
        pass

💻 구현

Phase 1: 사전 준비 ✅

Phase 2: 파트너사 선정 ⏳

항목 NHN Cloud 메가버드
알림톡 8-15원 8원
친구톡 5-8원 13원
시작 프로젝트 생성 1,500원 충전
통합 카카오톡만 문자+카카오톡
API 문서 공개 회원가입 후

NHN Cloud API

엔드포인트: https://api-alimtalk.cloud.toast.com/alimtalk/v2.3/appkeys/{appkey}
인증: X-Secret-Key
문서: https://docs.nhncloud.com/ko/Notification/KakaoTalk%20Bizmessage/ko/alimtalk-api-guide/

메가버드 API

웹사이트: https://www.megabird.com/
특징: 문자+카카오톡 통합, REST API/DB Agent/WEB 제공
문서: 회원가입 후 다운로드

Phase 3: 발신 프로필 & 템플릿

🔹 메시징 전략 ⭐

✅ 하이브리드 방식
알림톡 (첫 메시지, 템플릿 필수)
    ↓
고객이 채널 친구 추가
    ↓
친구톡 (이후 대화, LLM 자동생성 가능)

🔹 템플릿 내용

안녕하세요 #{고객명}님,
이마트 #{점포명}입니다.

🎁 선물을 보내드립니다!

#{발신자명}님께서 #{상품명}을(를) 보내주셨습니다.

📍 배송지: #{주소}
📦 배송 가능일: #{배송일자}

위 내용이 맞으시면 아래 버튼으로 채널 친구 추가 후 답장 부탁드립니다.

감사합니다.

[버튼: 채널 추가하고 답장하기]

Phase 4: 개발 (2-3일)

🔹 Backend

service = create_alimtalk_service()
result = service.send_delivery_notification(
    phone="010-1234-5678",
    customer_name="홍길동",
    store_name="이마트 역삼점",
    sender_name="김철수",
    product_name="한우 세트",
    address="서울시 강남구",
    delivery_date="2025-01-02"
)

🔹 Frontend

Phase 5: 테스트 (1일)

# 파트너사 교체 테스트
export ALIMTALK_PROVIDER=nhn_cloud
python prototypes/kakao-biz/test_nhn_alimtalk.py

export ALIMTALK_PROVIDER=megabird
python prototypes/kakao-biz/test_nhn_alimtalk.py

Phase 6: 운영 준비 (1일)

🔧 NHN Cloud 설정 가이드

Step 1: 회원가입 및 프로젝트 생성

  1. https://www.nhncloud.com/ 접속
  2. 회원가입 및 조직 생성
  3. 프로젝트 생성 (예: "GiftCall")

Step 2: Appkey와 Secret Key 발급

  1. KakaoTalk Bizmessage 서비스 활성화
  2. Appkey 확인 (화면 상단)
  3. Secret Key 생성 (URL & Appkey 메뉴)
⚠️ 중요: Secret Key는 다시 확인할 수 없으니 안전하게 보관!

Step 3: 발신 프로필 등록

  1. 발신 프로필 관리 > 발신 프로필 등록
  2. 카카오톡 채널 검색 ID 입력 (@포함)
  3. 관리자 휴대폰 번호 입력
  4. 카테고리 선택
  5. 인증 요청 → 카카오톡으로 6자리 토큰 수신
  6. 토큰 입력 → Sender Key 발급

Step 4: 템플릿 등록

  1. AlimTalk > 템플릿 관리 > 템플릿 등록
  2. 템플릿 코드: EMART_DELIVERY_001
  3. 메시지 내용 및 변수 입력
  4. 버튼 추가: 채널 추가 (AC)
  5. 검수 요청 (1-2 영업일)

Step 5: 환경변수 설정

ALIMTALK_PROVIDER=nhn_cloud
NHN_ALIMTALK_APP_KEY=your_app_key
NHN_ALIMTALK_SECRET_KEY=your_secret_key
NHN_ALIMTALK_SENDER_KEY=your_sender_key

Step 6: 테스트 실행

cd prototypes/kakao-biz
pip install -r requirements.txt
python test_nhn_alimtalk.py

✅ 체크리스트

사전 준비

기술 준비

개발

운영

📅 일정

📋 총 소요: 2-3주
Week 1: 파트너사 선정 (2-3일)
Week 1-2: 프로필/템플릿 등록 (2-4일)
Week 2: 개발 (2-3일)
Week 2: 테스트 (1-2일)
Week 3: 베타 테스트
개요
아키텍처
구현
설정