콘텐츠로 이동

단건 / 대량 SMS 발송

진입 위치 (다수): - 환자 검색 → 환자 선택 → SMS 버튼 - 리콜 관리 → 다중 선택 → 일괄 SMS - 신청자관리 → 신청자 선택 → 콜 응대 → 안내 SMS - 예약노트 → 발송 설정 4종 (즉시/오시는길/전일/당일) - 고객관리 대시보드 → 실패 행 [재발송] 발송 엔진: 알리고 SMS API (aligo.in)

한 줄 요약

환자/리드 1명 또는 다수에게 SMS·LMS·MMS 즉시 발송. 본문 직접 입력 또는 템플릿 선택 후 변수 치환.


단건 발송 (한 명)

진입

위치 버튼/메뉴
환자 검색 환자 행 → 우측 [SMS] 아이콘
환자 상세 우측 상단 [문자 보내기]
차트(진료실) 우측 패널 [SMS] 버튼
신청자 상세 콜 응대 모달 → [SMS 발송]

SmsMessagePopup 모달

[SMS 발송 — 김보혜 (010-1234-5678)]                       [X]
─────────────────────────────────────────────────────────
[템플릿 선택 ▾]  본문 입력 (변수 자동 치환):
[본문]                                                    
김보혜님, 안녕하세요. ...                                  
[글자수 78 / 90 LMS 자동 전환 ⓘ]                          
─────────────────────────────────────────────────────────
                                            [취소] [발송]
필드 설명
수신자 자동 입력 (현재 환자) — 수정 불가
템플릿 시드 + 운영자 등록 템플릿 선택 → 본문 자동 채움
본문 직접 작성 또는 템플릿 후 수정
변수 치환 {{환자명}}, {{예약일}} 등 자동 치환 미리보기
글자수 자동 전환 90자 초과 → LMS / 2000자 초과 → MMS

[발송] 클릭 → 알리고 즉시 발송 + sms_send_logs INSERT.


대량 발송 (다수)

진입 (3종)

위치 방법
리콜 관리 대상 환자 다중 선택 → 하단 [일괄 SMS 발송]
환자 검색 검색 결과 다중 체크 → [일괄 SMS]
고객관리 리스트 큐 다중 선택 → [일괄 발송] (Phase B-2)
신청자관리 신청자 다중 선택 → [일괄 SMS]

SmsMessagePopup (bulk 모드)

[SMS 일괄 발송 — 수신자 N명]                              [X]
─────────────────────────────────────────────────────────
[수신자 리스트 N명 펼치기 ▾]
[템플릿 선택 ▾]  본문:

[발송 전 미리보기 — 첫 환자 본문] [수신자별 변수 치환 확인]
─────────────────────────────────────────────────────────
                                       [취소] [N명에게 발송]
안전장치 동작
수신거부 자동 차단 sms_consent=0, ad_consent=0 환자 발송 제외 (전송 전 화면에 "N명 중 M명 제외" 표시)
빈 전화번호 차단 mobile_phone 빈 환자 자동 제외
5초 중복 클릭 가드 global.__inflightCrmSendNow (PM2 fork mode 단일 프로세스)
글자수 일관성 검증 본문이 SMS/LMS/MMS 경계에 걸치면 사용자에게 안내

템플릿 변수

변수 치환 값
{{환자명}} patients.name
{{예약일}} 예약된 가장 가까운 미래 예약일 (patient_reservations.scheduled_date)
{{예약시간}} 예약 시간
{{차트번호}} patients.chart_no
{{병원명}} vegas_hospitals.hospitalName
{{병원전화}} vegas_hospitals.phone

추가 변수는 향후 추가 가능 — 코드 수정 필요.


발송 시각 / 지연

  • 즉시 발송: 모달 [발송] 클릭 → 알리고 API 호출 (1~3초 내 환자 수신)
  • 예약 발송: 예약노트 발송설정의 [예약] 버튼 → sms_reserve INSERT (status=pending) → 1분 cron이 시각 도래 시 자동 발송

수신거부 (정보통신망법)

SMS 발송 전 자동 검사:

컬럼 결과
patients.sms_consent 0 / NULL ❌ 차단 (수신거부)
patients.ad_consent 0 / NULL ❌ 차단 (광고/마케팅 거부)

직원이 환자관리에서 환자 수정 시 동의 항목 변경 가능. 거부 환자는 모든 자동/수동 SMS 차단 — 정보통신망법 준수.


발송 이력

  • /crm/tasks (고객관리 리스트) — 자동 룰 발송 + 일괄 발송 통합
  • /popup/customer-management/{patient_uid} → 「문자」 탭 — 환자별 SMS 이력
  • 예약노트 좌측 "발송 이력" 섹션 — 해당 환자의 SMS 이력 (WI#18 v2)

알리고 비용

  • SMS (90자): 약 8~9원
  • LMS (2000자): 약 25~30원
  • MMS (이미지): 약 75원

상세: 알리고 aligo.in 계정 → 단가 페이지


자주 묻는 질문 / FAQ

Q. SMS 발송했는데 환자가 안 받았다고 해요

체크 항목: 1. sms_send_logs 에서 해당 발송 ID 검색 → status가 sent인지 / failed인지 2. 환자 전화번호가 올바른지 (patients.mobile_phone) 3. 환자가 수신거부 등록되어 있는지 (sms_consent, ad_consent) 4. 환자 폰의 SMS 차단 설정 (KISA 스팸 신고 등) 5. 알리고 잔액 0원이면 발송 실패 → 알리고 계정 충전

Q. 글자수가 90자 넘어도 SMS로 보낼 수 있나요?

아니요. 90자 초과 시 자동 LMS로 전환 (비용 ↑). 2000자 초과 시 MMS로 전환.

Q. 일괄 발송 중 일부만 실패하면 어떻게 되나요?

각 환자별로 sms_send_logs INSERT — 성공/실패가 행별로 기록. 발송 완료 후 alert에 "N건 성공, M건 실패" 표시. 실패 행은 [재발송] 버튼.

Q. 발송 메시지 내용을 나중에 보고 싶어요

sms_send_logs.message_body 컬럼에 본문 저장. 환자별 문자 이력에서 클릭 → 전체 본문 확인.

Q. 광고 메시지를 보내려면 어떤 동의가 필요한가요?

patients.ad_consent=1 인 환자만 발송 가능. 정보성 안내(예약 안내, 결제 안내)는 sms_consent=1 로 충분.

Q. 카카오 알림톡으로 전환하면 비용이 절감되나요?

예. 알림톡은 건당 9~12원 + 사전 등록된 템플릿만 사용 가능. 친구톡은 단가 더 저렴. 현재 WI#19로 백엔드 개발 진행 중.


관련 페이지