2.3 KiB
2.3 KiB
Notion Notification System
노션(Notion)의 페이지 및 데이터베이스 변경 사항을 감지하고, 이를 Mattermost로 전송하는 웹훅 기반 알림 시스템입니다.
🔧 주요 기능
- Notion Webhook 수신 서버 구현 (Flask 기반)
- 변경 이벤트를 파싱하여 메시지 생성
- Mattermost에 메시지를 전송 (웹훅 또는 봇 API 방식 모두 지원)
- .env 환경 설정 기반 유연한 구성
- 향후 다양한 웹훅 소스 확장을 고려한 구조
📁 프로젝트 구조
notion_noti/
├── app.py # Flask 진입점
├── config.py # .env 기반 설정 로드 및 검증
├── views.py # 웹훅 라우트 정의
├── lib/
│ ├── notion_api.py # 노션 이벤트 파싱/처리
│ └── send_message.py # Mattermost 메시지 전송 기능
├── .env # 환경 설정 파일
├── requirements.txt # 의존 패키지 목록
⚙️ 설치 및 실행
1. 의존 패키지 설치
python -m venv .venv
source .venv/bin/activate # (Windows: .venv\Scripts\activate)
pip install -r requirements.txt
2. 환경 설정
.env 파일을 아래와 같은 형식으로 작성합니다.
# 서버 설정
SERVER_DOMAIN=example.com
SERVER_PROTOCOL=https
WEBHOOK_SERVER_HOST=0.0.0.0
WEBHOOK_SERVER_PORT=5000
# Notion API
NOTION_API_SECRET=secret_xxxxx
#NOTION_WEBHOOK_SECRET=your_webhook_secret # (선택사항)
# Mattermost 설정 (둘 중 하나 이상)
MATTERMOST_WEBHOOK_URL=https://mattermost.example.com/hooks/abc123
# 또는
MATTERMOST_BOT_TOKEN=your_token
MATTERMOST_CH_ID=channel_id_here
# 기타
DEBUG=true
LOG_LEVEL=INFO
3. 실행
python app.py
Flask 서버가 다음과 같이 실행됩니다.
* Running on http://0.0.0.0:5000
🧪 테스트
curl로 웹훅 테스트
curl -X POST http://localhost:5000/webhook/notion \
-H "Content-Type: application/json" \
-d '{
"event": "test_event",
"page_id": "abc123",
"action": "created"
}'
Postman 또는 테스트 스크립트도 사용 가능
📌 확장 계획
- Mattermost 슬래시 명령어 처리
- 다른 서비스(GitHub, Jira 등)의 웹훅 수신 처리
- 메시지 템플릿 설정 지원
- Docker 이미지 제공
- Synology NAS 환경에서 안정화 운영 지원