cms-orbit / sendgo
Orbit SendGo integration: admin GUI, template sync, campaign records, and phone verification.
4.3.1
2026-09-08 02:43 UTC
Requires
- php: ^8.4
- cms-orbit/core: ^4.6
- illuminate/http: ^13.0
- illuminate/support: ^13.0
- techigh/sendgo-notification: ^1.2
Requires (Dev)
- laravel/pint: ^1.30
- orchestra/testbench: ^11.0
- pestphp/pest: ^5.0
- pestphp/pest-plugin-laravel: ^5.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
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.5techigh/sendgo-notification^1.2
설치
composer require cms-orbit/sendgo:^4.0 php artisan migrate php artisan sendgo:migrate-config # auth_sendgo.* 키에서 업그레이드 시 php artisan sendgo:sync-templates # 선택: AlimTalk 템플릿 초기 동기화
cms-orbit/core가 먼저 설치·설정(orbit:install)되어 있어야 합니다.
설정
우선순위
.env— 값이 있으면 Orbit 설정 UI에서 잠금·마스킹되어 덮어쓰기 불가orbit_config('sendgo.*')— Orbit Settings → SendGoconfig/sendgo.php— 패키지 기본값
환경 변수
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 | 기본값 | 설명 |
|---|---|---|---|
url |
SENDGO_URL |
https://api.sendgo.io |
SendGo API 베이스 URL |
access_key |
SENDGO_ACCESS_KEY |
— | API Access Key |
secret_key |
SENDGO_SECRET_KEY |
— | API Secret Key |
sms_sender_key |
SENDGO_SENDER_KEY |
— | SMS 발신번호 키 |
kakao_sender_key |
SENDGO_KAKAO_SENDER_KEY |
— | 카카오 발신 프로필 키 |
api_version |
SENDGO_API_VERSION |
v2 |
API 버전 |
phone_verification_template_code |
SENDGO_PHONE_VERIFICATION_TEMPLATE_CODE |
— | AlimTalk 인증 템플릿 코드 |
레거시 설정 마이그레이션
auth_sendgo.* 키를 쓰던 설치는 아래 명령으로 sendgo.*로 이전할 수 있습니다.
php artisan sendgo:migrate-config
| 레거시 키 | 새 키 |
|---|---|
auth_sendgo.url |
sendgo.url |
auth_sendgo.access_key |
sendgo.access_key |
auth_sendgo.secret_key |
sendgo.secret_key |
auth_sendgo.sms_sender_key |
sendgo.sms_sender_key |
auth_sendgo.kakao_sender_key |
sendgo.kakao_sender_key |
auth_sendgo.phone_verification_template_code |
sendgo.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 (실제 발송 없음)
관리자 화면
설치 후 Orbit Integrations 섹션에 SendGo 메뉴가 등록됩니다.
| 화면 | 라우트 이름 | 권한 |
|---|---|---|
| SendGo Hub | orbit.sendgo.index |
sendgo.dashboard |
| SMS 캠페인 | orbit.sendgo.messages.* |
sendgo.campaigns |
| AlimTalk 캠페인 | orbit.sendgo.notices.* |
sendgo.campaigns |
| FriendTalk 캠페인 | orbit.sendgo.friends.* |
sendgo.campaigns |
| SMS 발신번호 | orbit.sendgo.senders.index |
sendgo.senders |
| Kakao 프로필 | orbit.sendgo.kakao-senders.index |
sendgo.senders |
| AlimTalk 템플릿 | orbit.entities.sendgo-templates.* |
Entity 권한 |
Artisan 명령
php artisan sendgo:sync-templates # AlimTalk 템플릿 API → 로컬 DB php 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.jsonversion 이 태그명과 일치하는지 확인하는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-laravel5 가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-laravel5 가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/sendgoVite alias를 자동 관리하도록 했습니다. 이전에는 매니페스트가 없어, 순정 호스트에서 frontend-sync 실행 시 sendgo alias가 누락되어Rolldown failed to resolve import "@cms-orbit/sendgo"빌드 오류가 발생했습니다.
License
MIT