Agents Webhookサテライト連携を追加
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
# Email to Discord Webhook Forwarder
|
||||
# Email Notification Forwarder (Discord / Agents Webhook)
|
||||
|
||||
メールサーバーを監視して、新しいメールが到着したときにDiscordのWebhookを使用して通知を送信するPythonアプリケーションです。
|
||||
メールサーバーを監視し、新しいメールをDiscordへ通知したり、AgentsのWebhookを通じてエージェントを起動したりするPythonアプリケーションです。Discordのみ、Agents Webhookのみ、または両方を同時に利用できます。
|
||||
|
||||
## 🚀 機能
|
||||
|
||||
- **メールサーバー監視**: IMAP/IMAPS プロトコルでメールサーバーを監視
|
||||
- **Discord通知**: 新しいメールが到着したときにDiscordに通知
|
||||
- **Agents Webhook通知**: メール内容をプロンプトとしてAgentsを起動
|
||||
- **複数通知先**: DiscordとAgents Webhookへの同時送信に対応
|
||||
- **環境変数設定**: 設定は全て環境変数で管理
|
||||
- **Dockerサポート**: コンテナとして簡単にデプロイ可能
|
||||
- **SSL/TLS対応**: セキュアな接続をサポート
|
||||
@@ -17,28 +19,59 @@
|
||||
|--------|------|------|-------------|
|
||||
| `EMAIL_USER` | メールアドレス | ✅ | - |
|
||||
| `EMAIL_PASSWORD` | メールパスワード/アプリパスワード | ✅ | - |
|
||||
| `DISCORD_WEBHOOK_URL` | Discord Webhook URL | ✅ | - |
|
||||
| `DISCORD_WEBHOOK_URL` | Discord Webhook URL | 条件付き | - |
|
||||
| `WEBHOOK_URL` | AgentsのWebhookエンドポイント | 条件付き | - |
|
||||
| `WEBHOOK_TOKEN` | ユーザー単位で発行されたWebhookトークン | 条件付き | - |
|
||||
| `DISCORD_CHANNEL_ID` | エージェントの応答先DiscordチャンネルID | 条件付き | - |
|
||||
| `WEBHOOK_SOURCE` | Agents上で表示するサービス名 | ❌ | `email-monitor` |
|
||||
| `IMAP_SERVER` | IMAPサーバーアドレス | ❌ | `imap.gmail.com` |
|
||||
| `IMAP_PORT` | IMAPポート番号 | ❌ | `993` |
|
||||
| `USE_SSL` | SSL/TLS使用の有無 | ❌ | `true` |
|
||||
| `MAILBOX` | 監視するメールボックス | ❌ | `INBOX` |
|
||||
| `CHECK_INTERVAL` | チェック間隔(秒) | ❌ | `60` |
|
||||
|
||||
`DISCORD_WEBHOOK_URL`、またはAgents用の `WEBHOOK_URL` / `WEBHOOK_TOKEN` / `DISCORD_CHANNEL_ID` のいずれか一組が必要です。Agents用の3変数は必ずまとめて設定してください。
|
||||
|
||||
## 🔧 セットアップ
|
||||
|
||||
### 1. Discord Webhook URLの取得
|
||||
### 1. Discord Webhook URLの取得(Discordへ直接通知する場合)
|
||||
|
||||
1. Discordでメッセージを送信したいチャンネルを選択
|
||||
2. チャンネル設定 → 連携サービス → ウェブフック
|
||||
3. 新しいウェブフックを作成してURLをコピー
|
||||
|
||||
### 2. Gmail用アプリパスワードの作成(Gmailを使用する場合)
|
||||
### 2. Agents Webhookの設定(Agentsを起動する場合)
|
||||
|
||||
Agentsの会話コンテキストに表示される「Webhook エンドポイント(実行時情報)」に従い、現在のユーザー用トークンを取得します。サービスに渡すのは `WEBHOOK_TOKEN` だけです。マスター鍵である `WEBHOOK_SECRET` は絶対に設定しないでください。
|
||||
|
||||
```env
|
||||
WEBHOOK_URL=http://agents-host:8080/webhook
|
||||
WEBHOOK_TOKEN=<user_id>:<hmac>
|
||||
DISCORD_CHANNEL_ID=123456789012345678
|
||||
WEBHOOK_SOURCE=email-monitor
|
||||
```
|
||||
|
||||
メール受信時には、次の形式でAgentsへ送信します。
|
||||
|
||||
```http
|
||||
POST ${WEBHOOK_URL}
|
||||
Authorization: Bearer ${WEBHOOK_TOKEN}
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"source": "email-monitor",
|
||||
"channel_id": 123456789012345678,
|
||||
"prompt": "新しいメールを受信しました。..."
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Gmail用アプリパスワードの作成(Gmailを使用する場合)
|
||||
|
||||
1. Googleアカウントの2段階認証を有効にする
|
||||
2. Googleアカウント設定 → セキュリティ → アプリパスワード
|
||||
3. メール用のアプリパスワードを生成
|
||||
|
||||
### 3. 環境変数の設定
|
||||
### 4. 環境変数の設定
|
||||
|
||||
```bash
|
||||
# .env.exampleをコピーして.envファイルを作成
|
||||
@@ -49,13 +82,19 @@ cp .env.example .env
|
||||
|
||||
## 🐳 Docker Composeでの実行
|
||||
|
||||
### 1. docker-compose.ymlの設定
|
||||
### 1. `.env` の設定
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- EMAIL_USER=your-email@gmail.com
|
||||
- EMAIL_PASSWORD=your-app-password
|
||||
- DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
|
||||
```env
|
||||
EMAIL_USER=your-email@gmail.com
|
||||
EMAIL_PASSWORD=your-app-password
|
||||
|
||||
# Discordへ直接通知する場合
|
||||
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
|
||||
|
||||
# Agentsを起動する場合(3項目すべてが必要)
|
||||
WEBHOOK_URL=http://agents-host:8080/webhook
|
||||
WEBHOOK_TOKEN=<user_id>:<hmac>
|
||||
DISCORD_CHANNEL_ID=123456789012345678
|
||||
```
|
||||
|
||||
### 2. コンテナの起動
|
||||
@@ -193,6 +232,9 @@ docker run -d \
|
||||
-e EMAIL_USER=your-email@gmail.com \
|
||||
-e EMAIL_PASSWORD=your-app-password \
|
||||
-e DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL \
|
||||
-e WEBHOOK_URL=http://agents-host:8080/webhook \
|
||||
-e WEBHOOK_TOKEN=<user_id>:<hmac> \
|
||||
-e DISCORD_CHANNEL_ID=123456789012345678 \
|
||||
-e CHECK_INTERVAL=60 \
|
||||
email-to-discord
|
||||
```
|
||||
@@ -217,6 +259,11 @@ set DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
|
||||
export EMAIL_USER=your-email@gmail.com
|
||||
export EMAIL_PASSWORD=your-app-password
|
||||
export DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
|
||||
|
||||
# Agents Webhookを使う場合
|
||||
export WEBHOOK_URL=http://agents-host:8080/webhook
|
||||
export WEBHOOK_TOKEN=<user_id>:<hmac>
|
||||
export DISCORD_CHANNEL_ID=123456789012345678
|
||||
```
|
||||
|
||||
### 3. アプリケーションの実行
|
||||
@@ -262,7 +309,7 @@ USE_SSL=true
|
||||
- 起動/停止メッセージ
|
||||
- メールサーバー接続状況
|
||||
- 新しいメールの検出
|
||||
- Discord送信の成功/失敗
|
||||
- Discord・Agents Webhook送信の成功/失敗
|
||||
- エラー情報
|
||||
|
||||
```bash
|
||||
@@ -279,6 +326,9 @@ docker logs -f email-to-discord-monitor
|
||||
2. **環境変数での機密情報管理**: パスワードやWebhook URLは環境変数で管理
|
||||
3. **SSL/TLS接続**: メールサーバーとの通信は暗号化
|
||||
4. **非rootユーザー**: Dockerコンテナは非rootユーザーで実行
|
||||
5. **ユーザー単位トークン**: Agents連携には `WEBHOOK_SECRET` ではなく `WEBHOOK_TOKEN` のみを使用
|
||||
|
||||
複数の通知先を設定した場合、すべての通知先への送信が成功してからメールを既読にします。いずれかが失敗したメールは未読のままとなり、次回の監視時に再試行されます。
|
||||
|
||||
## 🛠️ トラブルシューティング
|
||||
|
||||
@@ -295,6 +345,13 @@ docker logs -f email-to-discord-monitor
|
||||
2. Discordサーバーの権限を確認
|
||||
3. ネットワーク接続を確認
|
||||
|
||||
### Agents Webhookが起動しない場合
|
||||
|
||||
1. `WEBHOOK_URL` が `/webhook` を含む正しいURLか確認
|
||||
2. `WEBHOOK_TOKEN` が現在のユーザー用に発行された値か確認
|
||||
3. `DISCORD_CHANNEL_ID` が数値のチャンネルIDか確認
|
||||
4. Agents側のWebhookエンドポイントへコンテナから接続できるか確認
|
||||
|
||||
### ログの確認方法
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user