책임 구분
src/Notify는 자동 이벤트·공통 문구·선택·변수 연결, src/Aligo는 계정·승인 템플릿·발송 작업·결과·예약을 담당합니다. 외부 확장이 자체 문자 HTTP 요청을 만들어 채널·길이·중복 검사를 우회하지 않습니다.
이벤트는 실제 업무 성공 시 발생시킵니다. 댓글·주문·반품과 알림함을 함께 저장하고 외부 발송은 최외곽 트랜잭션 커밋 이후 실행합니다.
공개 발송 API
$jobId = $app->aligo()->send([
'event_key' => 'my_module_notice',
'channel' => 'at',
'tpl_code' => '승인된_템플릿코드',
'recipients' => [
['phone' => '01012345678', 'name' => '예시회원',
'vars' => ['이름' => '예시회원', '주문번호' => '예시번호']],
],
]); // message_jobs.id이 예시는 메서드 형태를 설명합니다. 실제 수신자를 넣어 실행하면 발송 요청이 발생합니다. 채널 허용·번호 정규화·중복 제거·필수 변수·승인·분할 호출은 관리자 화면과 같은 Dispatch 경로를 적용받습니다.
자동 이벤트 설정
알림별 delivery_configured·delivery_mail·delivery_phone은 기존 site_settings에 저장합니다. 공통 전화 모드는 사용 안 함·문자만·알림톡 후 문자·알림톡만입니다. 과거 개별 알림톡·문자 ON/OFF를 새 규칙에 다시 사용하지 않습니다.
이메일 전용 이벤트에는 전화 선택을 허용하지 않습니다. 일반 메일 수신 선호와 인증·복구 메일을 구분합니다. 사이트명·주소·문의처를 코드에 고정하지 않고 발송 시점의 설정에서 가져옵니다.
인코딩·결과·비용
- 문자 본문·제목은 UTF-8 전송. EUC-KR은 90바이트 판정과 지원 글자 검사에만 사용합니다.
- 최종 실제 치환 본문으로 SMS/LMS를 정하고 강제로 자르지 않습니다.
- 대기·불명확 결과를 실패로 보고 재발송하지 않습니다.
- 알림톡 대체문자 제목과 반환 오류 원문을 보존합니다.
- 비용은 API가 반환한 unit·total만 저장하고 임의 단가를 계산하지 않습니다.
- 예시값 발송 허용은 명시적 관리자 직접 발송 경로만이며 일반·자동 발송의 빈 변수 거절을 유지합니다.
요청 필드와 묶음
| 필드 | 동작 |
|---|---|
| channel | at 또는 sms. lms는 치환 본문 길이로 자동 판정 |
| event_key | 선택 이벤트 식별자. 이력 검색에 저장 |
| scheduled_at | 선택 예약 시각. 형식과 허용 기간 검사 후 UTC 저장 |
| failover | 알림톡 대체문자 사용 여부 |
| secret_vars | 이력 사본에서 가릴 변수 이름. 실제 본문은 정상 치환 |
| created_by | 요청한 관리자 표시명 |
| recipients | phone·name·user_id·vars와 선택 fallback_body/fallback_vars |
한 작업은 하나의 문자 유형을 사용합니다. 수신자별 치환 본문 중 하나라도 90바이트를 넘으면 전체 작업을 LMS로 보냅니다. 대량 발송의 첫 수신자 미리보기만 보고 모든 수신자의 SMS 비용을 확정하지 않습니다.
발송은 500명 단위로 분할합니다. 응답을 끝내 받지 못한 묶음의 전송 요청을 다시 보내지 않고 결과 조회를 통해 확인합니다. 반환된 정수는 job ID이며 접수 직후 상태가 sent라고 가정하지 않습니다.
개발자 참고 소스
문서 파일 갱신 26-10-07 08:34:40