본문 바로가기
← 패키지 목록

Sendgo

인증된 제출자

cms-orbit/sendgo

제출자 이우진
최신 v4.3.2라이센스 MIT배포 2026년 9월 23일
인증

Orbit SendGo 연동: 관리자 GUI, 템플릿 동기화, 캠페인 기록, 전화번호 인증 기능을 제공합니다.

CMS Orbit SendGo

cms-orbit/sendgo는 Orbit 관리자와 SendGo API를 연결하는 동반 패키지입니다. Hub 대시보드, AlimTalk 템플릿 동기화, SMS·AlimTalk·FriendTalk 캠페인 기록, 발신번호·카카오 프로필 조회, 휴대폰 인증 발송까지 Orbit 설정 화면 하나로 묶어줍니다.

무엇을 제공하나요?

  • SendGo Hub — 최근 30일 캠페인 요약, 메시지 유형 차트, 발신번호·카카오 프로필·동기화 템플릿 현황
  • Orbit 설정 그룹 — sendgo.* 자격 증명을 Settings → SendGo에서 관리 (.env 값은 UI에서 잠금·마스킹)
  • AlimTalk 템플릿 동기화 — SendGo API → 로컬 sendgo_templates 테이블, 관리자에서 Sync 액션
  • 캠페인 기록 — SendGo API v2 기준 SMS / AlimTalk / FriendTalk 목록·상세 (읽기 전용)
  • 발신자 조회 — SMS 발신번호, Kakao 프로필 목록
  • 휴대폰 인증 — techigh/sendgo-notification 연동, SMS 또는 AlimTalk 채널 선택

요구사항

  • PHP ^8.4
  • cms-orbit/core ^4.6
  • techigh/sendgo-notification ^1.2

설치

composer require cms-orbit/sendgo:^4.0php artisan migratephp artisan sendgo:migrate-config   # auth_sendgo.* 키에서 업그레이드 시php artisan sendgo:sync-templates   # 선택: AlimTalk 템플릿 초기 동기화

cms-orbit/core가 먼저 설치·설정(orbit:install)되어 있어야 합니다.

설정

패키지 설정값은 세 곳에서 읽어오며, 아래 순서대로 우선순위가 정해집니다.

우선순위

  1. .env — 값이 있으면 Orbit 설정 UI에서 잠금·마스킹되어 덮어쓰기 불가
  2. orbit_config('sendgo.*') — Orbit Settings → SendGo
  3. config/sendgo.php — 패키지 기본값

NOTE

.env에 값을 넣으면 "이 값은 서버 운영자만 바꿀 수 있다"는 의미로 취급됩니다. 관리자 UI에서는 값이 마스킹되어 보이며 수정할 수 없습니다. 운영 환경에서 자격 증명을 실수로 노출·변경하지 못하도록 막는 안전장치입니다.

환경 변수

SENDGO_URL=https://api.sendgo.io SENDGO_ACCESS_KEY= SENDGO_SECRET_KEY= SENDGO_SENDER_KEY= SENDGO_KAKAO_SENDER_KEY= SENDGO_API_VERSION=v2 SENDGO_PHONE_VERIFICATION_TEMPLATE_CODE=
키ENV기본값설명
urlSENDGO_URLhttps://api.sendgo.ioSendGo API 베이스 URL
access_keySENDGO_ACCESS_KEY—API Access Key
secret_keySENDGO_SECRET_KEY—API Secret Key
sms_sender_keySENDGO_SENDER_KEY—SMS 발신번호 키
kakao_sender_keySENDGO_KAKAO_SENDER_KEY—카카오 발신 프로필 키
api_versionSENDGO_API_VERSIONv2API 버전
phone_verification_template_codeSENDGO_PHONE_VERIFICATION_TEMPLATE_CODE—AlimTalk 인증 템플릿 코드

레거시 설정 마이그레이션

auth_sendgo.* 키를 쓰던 설치는 아래 명령으로 sendgo.*로 이전할 수 있습니다.

php artisan sendgo:migrate-config
레거시 키새 키
auth_sendgo.urlsendgo.url
auth_sendgo.access_keysendgo.access_key
auth_sendgo.secret_keysendgo.secret_key
auth_sendgo.sms_sender_keysendgo.sms_sender_key
auth_sendgo.kakao_sender_keysendgo.kakao_sender_key
auth_sendgo.phone_verification_template_codesendgo.phone_verification_template_code

휴대폰 인증

Orbit Authentication & Security에서 auth_methods.phone.enabled가 켜져 있으면 Settings → SendGo에 Phone verification 섹션이 표시됩니다.

  • SMS — sendgo.sms_sender_key가 설정되어 있으면 SMS로 인증번호 발송
  • AlimTalk — sendgo.phone_verification_template_code가 필요
  • local/testing — SendGo 자격 증명이 없으면 로그로 fallback (실제 발송 없음)

NOTE

로컬 개발 환경에서는 SendGo 자격 증명을 굳이 발급받지 않아도, 인증번호가 실제 문자 대신 로그 파일에 기록되므로 개발·테스트가 가능합니다.

관리자 화면

설치 후 Orbit Integrations 섹션에 SendGo 메뉴가 등록됩니다.

화면라우트 이름권한
SendGo Huborbit.sendgo.indexsendgo.dashboard
SMS 캠페인orbit.sendgo.messages.*sendgo.campaigns
AlimTalk 캠페인orbit.sendgo.notices.*sendgo.campaigns
FriendTalk 캠페인orbit.sendgo.friends.*sendgo.campaigns
SMS 발신번호orbit.sendgo.senders.indexsendgo.senders
Kakao 프로필orbit.sendgo.kakao-senders.indexsendgo.senders
AlimTalk 템플릿orbit.entities.sendgo-templates.*Entity 권한

Artisan 명령

php artisan sendgo:sync-templates    # AlimTalk 템플릿 API → 로컬 DBphp artisan sendgo:migrate-config    # auth_sendgo.* → sendgo.* 마이그레이션

데이터베이스

php artisan migrate 시 sendgo_templates 테이블이 생성됩니다. SendGo API에서 동기화한 AlimTalk 템플릿 메타데이터(코드, 제목, 상태, 변수 등)를 로컬에 캐시합니다.

업데이트 노트

4.3.1

  • config.allow-plugins 에 pestphp/pest-plugin 추가: require-dev 에 pest 가 선언돼 있는데 플러그인 허용 설정이 없어 composer update 가 pestphp/pest-plugin contains a Composer plugin which is blocked 로 실패했습니다. CI 를 붙이자마자 드러났습니다.
  • cms-orbit/core ^4.5 → ^4.6: core 4.6.0 이 OrbitAccess 라우팅 리졸버와 여러 관리자 화면 수정(PostgreSQL 500, strict mode, orbit:install 의 OrbitProvider 미등록)을 담고 있습니다.
  • GitHub Actions 워크플로 추가: php 8.4·8.5 로 composer validate 와 pint --test 를 돌리는 ci.yml, 그리고 태그의 composer.json version 이 태그명과 일치하는지 확인하는 release-guard.yml. Packagist 는 불일치 태그를 조용히 무시합니다.
  • 위성 패키지의 CI 는 cms-orbit/core 를 Packagist 게시본으로 받으므로, "지금 게시된 core 와 이 패키지의 제약이 함께 해석되는가" 까지 같이 검증합니다.
  • pint 포맷 정규화: pint --test 를 CI 게이트로 걸려면 기존 코드가 설정에 맞아야 해서 함께 정규화했습니다. 순수 포맷 변경이며 동작은 바뀌지 않습니다.

4.2.0

  • illuminate/http 와 illuminate/support ^11.0 || ^12.0 || ^13.0 → ^13.0: Laravel 13 전용으로 좁혔습니다.
  • cms-orbit/core ^4.4 → ^4.5.
  • 왜 좁혔나: Pest 5 를 채택한 4.4.0(패키지별 4.1.0)부터 pest-plugin-laravel 5 가 laravel/framework ^13.23 을 요구해, 이 저장소의 테스트가 Laravel 13 으로만 해석됩니다. 즉 Laravel 11·12 호환성을 더 이상 검증할 수 없는 상태로 그 범위를 광고하고 있었습니다. 검증되지 않는 지원 범위를 제약에 남겨두지 않기로 했습니다.
  • Laravel 11·12 사용자는 업그레이드가 필요합니다. 이번 변경은 실제로 지원 구성을 제거하므로, php 하한 상향과 달리 소비자에게 직접 영향이 있습니다. Laravel 13 으로 올리거나 이전 버전에 머물러야 합니다.

4.1.0

  • php 제약 ^8.3 → ^8.4: php 8.3 환경에서는 더 이상 설치되지 않습니다.
  • cms-orbit/core ^4.1 → ^4.4.
  • pestphp/pest ^4.0 → ^5.0, pestphp/pest-plugin-laravel ^4.0 → ^5.0 (require-dev). Pest 5 가 php ^8.4 를 요구하는 것이 php 하한을 올린 이유입니다. PHPUnit 도 13.3 으로 함께 올라갑니다.
  • orchestra/testbench ^9.0 || ^10.0 || ^11.0 → ^11.0 (require-dev): pest-plugin-laravel 5 가 laravel/framework ^13.23 을 요구하므로 testbench 9(L11)·10(L12)은 Pest 5 와 함께 설치될 수 없습니다. 해석되지 않는 범위를 남겨두지 않고 사실에 맞게 좁혔습니다.
  • 생산 의존은 하나도 바뀌지 않았습니다. php 하한 상향으로 새로 받게 된 패키지는 Pest 5 계열(require-dev)뿐입니다. cms-orbit 전 패키지의 직접 의존 20개를 최신판과 전수 대조했고, 나머지 18개는 이미 php ^8.3 에서 최신을 받고 있었습니다. 이번 상향은 기능 확보가 아니라 장기 정리 목적입니다.
  • 소비자의 Laravel 11·12 지원은 유지됩니다 (laravel/framework ^11.0 || ^12.0 || ^13.0).

4.0.5

  • php 제약 ^8.3 복구: 게시된 태그는 모두 ^8.3 이었으나 main 에서 ^8.2 로 내려가 있었습니다. Laravel 13 은 php ^8.3 을 요구하므로 php ^8.2 + laravel/framework ^13 조합은 php 8.2 환경에서 조용히 Laravel 11 을 설치합니다.
  • laravel/pint ^1.14 → ^1.30 (1.30 이 php ^8.3 을 요구).
  • orchestra/testbench ^10.0 → ^9.0 || ^10.0 || ^11.0: 9=Laravel 11, 10=Laravel 12, 11=Laravel 13 이므로 이 패키지가 지원하는 프레임워크 범위와 일치시켰습니다. 이전에는 ^10.0 만 허용해 Laravel 13 에서 테스트를 돌릴 수 없었습니다.
  • pestphp/pest 는 ^4.0 유지: Pest 5 는 php ^8.4 를 요구하는데 이 패키지의 최소 php 는 ^8.3 입니다. Pest 5 를 받으려면 php 최소 버전을 ^8.4 로 올려야 해서 보류했습니다.
  • 릴리스 파이프라인 도입: .githooks/pre-push 가 composer.json 의 version 필드와 태그명이 어긋난 태그의 푸시를 차단합니다. cms-orbit/core 의 4.0.8 태그가 version: 4.0.7 로 만들어져 Packagist 가 아무 오류 없이 그 태그를 무시했고, 4.0.8 이 게시되지 않은 사실을 아무도 알지 못한 사고가 있었습니다. bin/release <버전> 이 version 갱신·검증·커밋·태그·푸시를 한 동작으로 묶어 이 드리프트를 원천 차단하고, cms-orbit/* 의존이 실제로 Packagist 에 게시되어 있는지 Composer 리졸버로 확인합니다. 저장소를 클론해 composer install 하면 core.hooksPath 가 자동 설정됩니다.

4.0.4

  • 프런트 매니페스트 추가: resources/orbit/frontend.json을 제공해 orbit:frontend-sync가 @cms-orbit/sendgo Vite alias를 자동 관리하도록 했습니다. 이전에는 매니페스트가 없어, 순정 호스트에서 frontend-sync 실행 시 sendgo alias가 누락되어 Rolldown failed to resolve import "@cms-orbit/sendgo" 빌드 오류가 발생했습니다.

License

MIT