Agents Webhookサテライト連携を追加

This commit is contained in:
2026-07-18 08:30:41 +09:00
parent eaa96e94e2
commit 8fe18971f0
8 changed files with 382 additions and 53 deletions
+70 -13
View File
@@ -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