📡 퍼널발송채널 — 완전 분석
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)
발송 대상 선택, 메시지 확인, 발송모드 선택 (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: 결제검증 → 메시지 가공 → 채널 선택 → 발송
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가 메시지를 만들어요.
AI명함퍼널 탭에서 내 이름, 회사, 연락처, 소개글을 입력하세요. 이 정보로 AI가 메시지를 만들어요.
3
프롬프트 설정하기
AI에게 어떤 말투로, 어떤 내용을 강조할지 지시문을 쓰세요. ("친근하게", "전문적으로" 등)
AI에게 어떤 말투로, 어떤 내용을 강조할지 지시문을 쓰세요. ("친근하게", "전문적으로" 등)
4
발송 대상 선택하기
'연락처' 탭에서 누구에게 보낼지 선택하세요. 필터(업종/지역)로 원하는 사람만 골라낼 수 있어요.
'연락처' 탭에서 누구에게 보낼지 선택하세요. 필터(업종/지역)로 원하는 사람만 골라낼 수 있어요.
5
채널 선택하기
SMS, 카카오톡, RCS, 이메일 중에 골라요. 보통 SMS가 가장 기본이에요.
SMS, 카카오톡, RCS, 이메일 중에 골라요. 보통 SMS가 가장 기본이에요.
6
발송모드 선택하기
'복제발송'은 내 명함을 상대에게 주는 거고, '공유발송'은 링크만 보내는 거예요.
'복제발송'은 내 명함을 상대에게 주는 거고, '공유발송'은 링크만 보내는 거예요.
7
발송하기 버튼 클릭!
'발송하기' 버튼을 누르면 결제 확인 후 자동으로 발송돼요. 결과는 화면에서 바로 확인할 수 있어요.
'발송하기' 버튼을 누르면 결제 확인 후 자동으로 발송돼요. 결과는 화면에서 바로 확인할 수 있어요.
⚠️ 주의사항
- 잔액이 부족하면 발송이 안 돼요. 먼저 포인트를 충전하세요.
- SMS는 90byte까지만 한 건으로 쳐요. 넘으면 LMS(장문) 요금이 나가요.
- 한 번 발송된 메시지는 취소할 수 없어요. 신중하게 확인하세요.
- 수신 거부된 번호로는 자동으로 발송되지 않아요.
💡 꿀팁
발송 전에 테스트 발송 기능을 이용해서 내 번호로 먼저 받아보세요. 메시지가 어떻게 보이는지 확인하고 수정할 수 있어요. 실전 발송 전에 꼭 테스트하세요!
📊 관련 AJAX 엔드포인트 요약
| URL | Method | 역할 |
|---|---|---|
[내부API]/[명함발송] | POST | 명함 콘텐츠 발송 실행 |
[내부API]/[발송내역] | GET | 발송 내역 목록 조회 |
[내부API]/[공지발송내역] | GET | 공지 발송 내역 조회 |
[내부API]/[채널설정] | POST | 퍼널 채널 설정 저장 |
[내부API]/[프롬프트생성] | POST | AI 프롬프트 생성 |