101 lines
2.3 KiB
Markdown
101 lines
2.3 KiB
Markdown
# Notion Notification System
|
|
|
|
노션(Notion)의 페이지 및 데이터베이스 변경 사항을 감지하고, 이를 Mattermost로 전송하는 웹훅 기반 알림 시스템입니다.
|
|
|
|
---
|
|
|
|
## 🔧 주요 기능
|
|
|
|
- Notion Webhook 수신 서버 구현 (Flask 기반)
|
|
- 변경 이벤트를 파싱하여 메시지 생성
|
|
- Mattermost에 메시지를 전송 (웹훅 또는 봇 API 방식 모두 지원)
|
|
- .env 환경 설정 기반 유연한 구성
|
|
- 향후 다양한 웹훅 소스 확장을 고려한 구조
|
|
|
|
---
|
|
|
|
## 📁 프로젝트 구조
|
|
|
|
```bash
|
|
notion_noti/
|
|
├── app.py # Flask 진입점
|
|
├── config.py # .env 기반 설정 로드 및 검증
|
|
├── views.py # 웹훅 라우트 정의
|
|
├── lib/
|
|
│ ├── notion_api.py # 노션 이벤트 파싱/처리
|
|
│ └── send_message.py # Mattermost 메시지 전송 기능
|
|
├── .env # 환경 설정 파일
|
|
├── requirements.txt # 의존 패키지 목록
|
|
```
|
|
|
|
|
|
---
|
|
|
|
## ⚙️ 설치 및 실행
|
|
|
|
### 1. 의존 패키지 설치
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
source .venv/bin/activate # (Windows: .venv\Scripts\activate)
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 2. 환경 설정
|
|
`.env` 파일을 아래와 같은 형식으로 작성합니다.
|
|
|
|
```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. 실행
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
Flask 서버가 다음과 같이 실행됩니다.
|
|
```csharp
|
|
* Running on http://0.0.0.0:5000
|
|
```
|
|
|
|
## 🧪 테스트
|
|
### curl로 웹훅 테스트
|
|
```bash
|
|
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 환경에서 안정화 운영 지원
|
|
|