← 목록
기타 2026-05-27 4KB 읽기 4분

메신저알림 — 시즌1알림 메신저 v3 정식 연동

개요

시즌1알림.한선은 기존에 talk.crowny.org:80 MOCK 채널로만 동작했다. 메신저 v3가 talk-api.crowny.org:9766으로 가동 중이므로, 시스템 채널 plain HTTP POST를 127.0.0.1:9766으로 직접 호출하는 분리 모듈을 작성. TLS 미완 회피(loopback 내부), graceful fallback, 영속 이력 기록 모두 포함.

무엇을 했는지

  1. /Users/ef/Downloads/CrownyTVM/std/메신저알림.한선 (+ .han 복사본) 작성
- 메신저알림_POST(호스트, 포트, 경로, 본문) — TCP HTTP/1.1 POST + X-Crowny-System 헤더 - 메신저알림_시스템(crowny_id, 본문)POST /api/v1/messages (from=system, channel=system) - 메신저알림_단가갱신(년차, 새단가, 직전단가) — 본문 조립 + 시스템 발송 - 메신저알림_이력기록(채널, 상태, 페이로드)/tmp/메신저알림이력.dat append - 메신저알림_상태판정(응답) — HTTP/1.1 2xx → OK - 메신저알림_룰등록() — 셀코어 호환 룰 2개 - 메신저알림_자가검증() — MOCK 경로 검증 (메신저 v3 미가동 OK)
  1. v0.38 함정 회피: 셀코어 import 없음(인라인 룰 헬퍼), TCP읽기 1인자, 분할 자가검증
  2. 자가검증 결과: MOCK 모드에서 정상 — 이력 1줄 기록, JSON payload 올바름

핵심 산식

페이로드 = {"from":"system","to":"<crowny_id>","channel":"system","text":"<본문>","ts":<unix>}
요청 = POST /api/v1/messages HTTP/1.1 + Host + X-Crowny-System + Content-Length + 본문
상태 = "E*" → ERR_CONNECT|ERR_EMPTY | "HTTP/1.1 2*" → OK | else → ERR

셀코어 룰 (밸런싱 노브)

룰생성("알림_메신저우선", 10)
  조건(메신저_가용 == 참) → 변경(채널=messenger, 폴백=MOCK)

룰생성("알림_긴급은전체방송", 20)
  조건(우선순위 == "critical") → 변경(채널="messenger,slack")

밸런싱 한 줄: 룰조건추가(룰, "우선순위", "==", "critical") → 룰변경추가(룰, "채널", "messenger,slack,sms")로 긴급 채널에 SMS 추가만 하면 전체 룰엔진 재실행.

관련 파일

  • /Users/ef/Downloads/CrownyTVM/std/메신저알림.한선 — 신규 모듈 (위임 대상)
  • /Users/ef/Downloads/CrownyTVM/std/메신저알림.han — 컴파일러용 사본
  • /Users/ef/Downloads/CrownyTVM/std/시즌1알림.한선 — 기존 (위임 호출자, 메인 세션이 한 줄 수정)
  • /tmp/메신저알림이력.dat — 이력 영속
  • /tmp/v_메신저알림.han — 자가검증 진입점

연동 한 줄

시즌1알림.한선의 알림_메신저전송(채널, 본문) 안에서 메신저알림_시스템("kps", 본문)을 호출하도록 한 줄 위임 추가. cron 트리거 bin/시즌1단가cron.sh는 무변경.

잔여 이슈

  1. 메신저 v3 실제 endpoint: /api/v1/messages 가정. talk-api 운영 세션이 정식 경로/인증 헤더 확정 시
메신저알림_경로(), 메신저알림_시스템토큰() 두 함수만 갱신.
  1. 시스템 토큰: 현재 SYSTEM_PLACEHOLDER. launchd plist에서 CROWNY_SYSTEM_TOKEN 주입 후
메신저알림_시스템토큰()환경변수읽기()로 교체.
  1. 환경 토글: 메신저알림_환경() 기본 "mock". 실배포 시 "production"으로 변경하면
루프백 9766 POST 발생.
  1. Slack: 시즌1알림.한선의 알림_슬랙전송()은 그대로 MOCK 유지 권고(TLS 필요).
추후 메신저 v3가 Slack 브릿지를 운영하면 위임 가능.
  1. TCP 연결 실패 시: ERR_CONNECT 반환 + 이력 ERR 기록. 시즌1알림 호출자는 이를
감지해 MOCK 폴백 로직 가능.