📡 퍼널발송채널 — 완전 분석

AI가 생성한 메시지를 어떤 경로(채널)로 발송하는지, 모든 채널과 작동 방식을 분석합니다.

📡 발송 채널 종류

명함 프로필 페이지에서 지원하는 발송 채널은 크게 4가지입니다:

채널설명주요 용도
문자메시지 (SMS/LMS) 휴대폰 번호로 문자 전송
90byte 이하 SMS, 초과 시 LMS
기본 발송 채널, 가장 많이 사용
카카오톡 카카오톡 알림톡/친구톡링크 클릭률이 높은 채널
RCS Rich Communication Service
이미지·버튼 포함 가능
브랜드 이미지 강조할 때
이메일 HTML 메일로 발송상세 정보 전달, 첨부파일 필요할 때

⚙️ card_con_send.php — 발송 엔진의 심장

모든 발송은 [내부API]/[명함발송] 단 하나의 엔드포인트로 통합됩니다. 이 파일이 하는 일을 분해해 볼게요.

┌──────────────────────────────────────────────────────────┐
│              card_con_send.php 작동 원리                   │
├──────────────────────────────────────────────────────────┤
│                                                            │
│  1. 요청(Request) 받기                                     │
│     ├── [정산유형]: "set" | "auto" | "finish" | "make"   │
│     │                   | "card_send" | "card_con_send"    │
│     ├── [결제수단]: "bank" | "card"                         │
│     ├── member_type: 사용자 유형                            │
│     ├── [결제금액파라미터]: 결제 금액                                │
│     ├── [수수료비율]: 90 (기본값, 수수료 10%)               │
│     ├── [주문번호파라미터]: 주문번호 (ex: [타임스탬프예시])     │
│     ├── card_url: '[서비스URL]?cur_win=...'  │
│     ├── message: AI가 생성한 메시지 내용                    │
│     └── card_send_mode: "clone" | "share"                  │
│                                                            │
│  2. 처리(Process)                                          │
│     ├── 결제 검증 → 잔액 확인                               │
│     ├── 메시지 길이 체크 → SMS(90B) / LMS 분기              │
│     ├── 발송 대상 필터링 → 중복·차단 목록 제외              │
│     ├── 채널 선택 → SMS / 카카오 / RCS / 이메일             │
│     └── 발송 실행 → 통신사 API 호출                         │
│                                                            │
│  3. 응답(Response)                                         │
│     ├── 성공: {result: "success", sent_count: N}           │
│     ├── 실패: {result: "fail", reason: "잔액부족"}          │
│     └── refresh_page() → 화면 갱신                          │
│                                                            │
└──────────────────────────────────────────────────────────┘

🔄 발송 흐름 전체 과정

사용자가 "발송" 버튼을 클릭했을 때 어떤 일이 일어나는지, 시간 순서대로 따라가 봅시다.

1
사용자 입력
발송 대상 선택, 메시지 확인, 발송모드 선택 (clone/share)
2
프론트엔드 검증
settlement(val, frm, auto_up) 함수 호출 → 필수값 체크
3
발송모드 결정
card_send_mode: clone=0(내 소유로 복제발송), share=1(공유발송)
4
AJAX 요청
$.ajax({ url: "[내부API]/[명함발송]", method: "POST", data: {...} })
5
서버 처리
card_con_send.php: 결제검증 → 메시지 가공 → 채널 선택 → 발송
6
발송 목록 갱신
성공 시 location.href = "[내부API]/[발송내역]" 로 목록 조회
7
화면 갱신
refresh_page() 호출 → 페이지 전체 상태 리셋, 최신 데이터 로드

💰 정산(settlement)과 발송의 관계

발송은 반드시 정산 과정을 거쳐야 실행됩니다. 정산 함수의 구조를 살펴볼게요.

settlement(val, frm, auto_up) 함수 분석

function settlement(val, frm, auto_up) {
    // val 값에 따라 분기:
    //
    // "set"    → 상품 선택, 수량 입력
    // "auto"   → 자동 충전 설정
    // "finish" → 최종 결제 실행
    // "make"   → 명함 제작 요청
    // "card_send" → 명함 발송 실행 ← 이것!

    if (val === "card_send") {
        // 1. 발송 수량 계산
        var item_cnt = $('#item_cnt').val();
        var item_price = $('#item_price').val();
        var total_amt = item_cnt * item_price;

        // 2. 회원 유형 확인 (일반/기업/프리미엄)
        var member_type = $('#member_type').val();

        // 3. 결제 수단 확인
        var [결제수단변수] = ...;;

        // 4. AJAX로 card_con_send.php 호출
        $.ajax({
            url: "[내부API]/[명함발송]",
            type: "POST",
            data: {
                [정산유형]: "card_send",
                [결제수단]: [결제수단변수],
                member_type: member_type,
                [결제금액파라미터]: [총액],
                [수수료비율]: 90,         // ← 10% 수수료 공제
                [주문번호파라미터]: [주문번호],  // ← 유니크 주문번호
                card_url: card_url,
                message: msg,
                card_send_mode: send_mode
            },
            success: function(res) {
                if (res.result === "success") {
                    refresh_page();       // ← 성공 시 페이지 갱신
                }
            }
        });
    }
}
💡 수수료 구조

[수수료비율] = 90 의 의미: 사용자가 100원을 결제하면, 실제 발송에 사용되는 금액은 90원입니다. 나머지 10%는 플랫폼 수수료로 차감됩니다. 예를 들어 건당 20원인 SMS를 100건 보내려면 2,000 ÷ 0.9 = 약 2,223원을 충전해야 합니다.

📤 발송모드: clone vs share

모드동작
clone (복제발송)card_send_mode = 0내 명함을 그대로 복제해서
상대방에게 "내 명함"으로 등록
share (공유발송)card_send_mode = 1내 명함 링크만 공유
상대방이 내 명함을 조회만 가능
// HTML 라디오 버튼 (lines 13638-13640)
<input type="radio" name="card_send_mode" id="duplicate" value="0"> 복제발송
<input type="radio" name="card_send_mode" id="share" value=""> 공유발송

// JS에서 읽기 (line 4096)
var send_mode = $("input[name=card_send_mode]:checked").val();
// → 0이면 "clone", 빈 문자열이면 "share"

🎓 초등학생도 따라하는 발송 설정법

1
명함 준비하기
먼저 내 명함이 등록되어 있어야 해요. 명함관리에서 종이명함을 등록하세요.
2
발신자 정보 입력하기
AI명함퍼널 탭에서 내 이름, 회사, 연락처, 소개글을 입력하세요. 이 정보로 AI가 메시지를 만들어요.
3
프롬프트 설정하기
AI에게 어떤 말투로, 어떤 내용을 강조할지 지시문을 쓰세요. ("친근하게", "전문적으로" 등)
4
발송 대상 선택하기
'연락처' 탭에서 누구에게 보낼지 선택하세요. 필터(업종/지역)로 원하는 사람만 골라낼 수 있어요.
5
채널 선택하기
SMS, 카카오톡, RCS, 이메일 중에 골라요. 보통 SMS가 가장 기본이에요.
6
발송모드 선택하기
'복제발송'은 내 명함을 상대에게 주는 거고, '공유발송'은 링크만 보내는 거예요.
7
발송하기 버튼 클릭!
'발송하기' 버튼을 누르면 결제 확인 후 자동으로 발송돼요. 결과는 화면에서 바로 확인할 수 있어요.
⚠️ 주의사항
  • 잔액이 부족하면 발송이 안 돼요. 먼저 포인트를 충전하세요.
  • SMS는 90byte까지만 한 건으로 쳐요. 넘으면 LMS(장문) 요금이 나가요.
  • 한 번 발송된 메시지는 취소할 수 없어요. 신중하게 확인하세요.
  • 수신 거부된 번호로는 자동으로 발송되지 않아요.
💡 꿀팁

발송 전에 테스트 발송 기능을 이용해서 내 번호로 먼저 받아보세요. 메시지가 어떻게 보이는지 확인하고 수정할 수 있어요. 실전 발송 전에 꼭 테스트하세요!


📊 관련 AJAX 엔드포인트 요약

URLMethod역할
[내부API]/[명함발송]POST명함 콘텐츠 발송 실행
[내부API]/[발송내역]GET발송 내역 목록 조회
[내부API]/[공지발송내역]GET공지 발송 내역 조회
[내부API]/[채널설정]POST퍼널 채널 설정 저장
[내부API]/[프롬프트생성]POSTAI 프롬프트 생성