マルチプラットフォームチャンネルの概要
Channel システムは Elftia をクロスプラットフォーム AI ボットにします。Agent を Discord、Telegram、Slack などのプラットフォームに同時接続し、どこからでもメッセージを受信し、ツールを呼び出し、返信を生成できます。
使用する場面
- Discord サーバーに AI アシスタントボットをデプロイしたい
- Telegram 経由で Agent とプライベートに会話したい
- Slack ワークスペースに AI コラボレーターを統合したい
- 同じ Agent で複数のプラットフォームのユーザーに同時対応したい
対応プラットフォーム
| Platform | Type ID | Connection Method | Max Message Length | Category |
|---|---|---|---|---|
| Discord | discord | Bot Token | 2,000 文字 | Core |
| Telegram | telegram | Bot Token | 4,096 文字 | Core |
| Slack | slack | Bot Token + App Token | 4,000 文字 | Core |
| QQ Bot | qqbot | Bot Token | 1,500 文字 | China |
| LINE | line | Channel Access Token + Secret | 5,000 文字 | Core |
email | SMTP + IMAP 認証情報 | 100,000 文字 | Core | |
whatsapp | 電話番号 | 65,000 文字 | Core | |
wechat | Wechaty Token | 2,000 文字 | China | |
| Matrix | matrix | Access Token | 65,536 文字 | Extended |
| Microsoft Teams | msteams | App ID + Password | 28,000 文字 | Extended |
| Mattermost | mattermost | Bot Token | 16,383 文字 | Extended |
| WeCom (Enterprise WeChat) | wecom | Webhook Key | 4,000 文字 | China |
| WeCom (App) | wecom-app | Corp ID + Secret | 4,000 文字 | China |
:::tip プラットフォームはプラグインです すべてのプラットフォームは Channel プラグインとして実装されています。組み込みプラグインはアプリに同梱されています。追加プラグインは Marketplace からダウンロードしてインストールできます。 :::
コアコンセプト
Channel インスタンス
各 Channel インスタンスは、外部プラットフォームへの接続を表します。同じプラットフォームに対して複数のインスタンスを作成できます(例: 2 つの異なる Discord ボットを接続する)。各インスタンスは、それぞれ独立して以下を管理します。
- 認証情報: 接続に必要なトークン/キー
- トリガールール: Agent がいつ返信するかを決定します(トリガールールとセキュリティを参照)
- 接続状態: 切断 / 接続中 / 接続済み / エラー
トリガールール
トリガールールは、Agent がどのメッセージに応答するかを決定します。
| Mode | Description | Best For |
|---|---|---|
all | すべてのメッセージに返信 | 個人用ボット、テスト環境 |
mention | @メンションされた場合のみ返信 | 複数ユーザーのグループ、共有サーバー |
keyword | 指定したキーワードに一致した場合に返信 | トピック固有のトリガー |
dm_only | ダイレクトメッセージにのみ返信 | プライベートチャットのみを受け付ける公開グループ |
セキュリティパイプライン
すべてのメッセージは Agent に到達する前に、複数のセキュリティチェックを通過します。
- InputSanitizer — 不可視の制御文字を除去します
- RateLimiter — レート制限(スパムの大量送信を防ぎます)
- PromptGuardian — AI 駆動のプロンプトインジェクション検出
- UserPermissionService — ロールベースのアクセス制御
- ChannelPermissionGate — 機密操作の確認メカニズム
ワークフロー
External platform message (Discord/Telegram/...)
│
▼
Channel Plugin ─── receive and parse message
│
▼
ChannelPluginRegistry ─── convert to unified ChannelMessage format
│
▼
ChannelMessageRouter ─── security pipeline checks + trigger rule matching
│
▼
ChannelMagiBridge ─── convert to MagiIncomingMessage
│
▼
MagiService (Agent) ─── process and generate reply
│
▼
ChannelMessageRouter ─── format + message splitting
│
▼
Channel Plugin ─── send reply back to the original platform
プラグインアーキテクチャ
Channel システムはプラグインベースのアーキテクチャを使用しており、2 種類のプラグインソースをサポートしています。
| Source | Directory | Description | Priority |
|---|---|---|---|
| Built-in (Bundled) | resources/bundled-channel-plugins/ | アプリのインストーラーと一緒に配布されます。読み取り専用です | 低 |
| User (Marketplace) | {userData}/channel-plugins/ | Marketplace からダウンロード、または手動でインストールされます。読み書き可能です | 高 |
同じプラグインタイプが両方のディレクトリに存在する場合、ユーザーディレクトリのバージョンが優先されます(Marketplace のより新しいバージョンである可能性があります)。
各プラグインには、プラグインタイプ、エントリーファイル、必要な認証情報、その他の情報を宣言する elftia-channel.json マニフェストファイルが必要です。
クイックスタート
- Settings → Channel を開きます
- Add Channel をクリックし、プラットフォーム(例: Discord)を選択します
- プラグインがインストールされていない場合、システムが Marketplace から自動的にダウンロードします
- プラットフォームの認証情報(例: Discord Bot Token)を入力します
- トリガールールを設定します(推奨: テストでは
mentionモードから始める) - Connect をクリックしてインスタンスを開始します
- 対応するプラットフォームでボットにメッセージを送信し、接続を確認します
次のステップ
- Discord セットアップガイド — Discord ボットを設定する詳細な手順
- トリガールールとセキュリティ — トリガーモードの設定とセキュリティパイプラインの詳細