チャット連携
Multica のエージェントを Feishu、Lark、Slack、DingTalk、WeCom に接続し、チームが普段使っているチャットツールから利用する方法を説明します。
チャット連携を使うと、Multica を開かなくても、エージェントへの質問、グループチャットでの @メンション、チャット画面からのイシュー作成ができます。
現在は Feishu/Lark、Slack、DingTalk、WeCom に対応しています。セッション、ユーザー識別、実行の仕組みは共通ですが、インストール方法が異なります。
プラットフォームを選ぶ
| Feishu / Lark | Slack | DingTalk | WeCom | |
|---|---|---|---|---|
| インストール | Multica で QR コードを生成し、Feishu でスキャンして認証 | Slack でアプリを作成し、2 つのトークンを Multica に入力 | 社内アプリと Stream モードのロボットを作成し、AppKey と AppSecret を Multica に入力 | WeCom 管理コンソールで常時接続を有効にしたスマートボットを作成し、Bot ID と Secret を Multica に入力 |
| エージェントとの DM | 対応 | 対応 | 対応 | 対応 |
| グループまたはチャンネル | Bot を @メンションするとトリガー | Bot を @メンションするとトリガー | Bot を @メンションするとトリガー | Bot を @メンションするとトリガー |
| イシューの作成 | /issue メッセージコマンド。入力内容からそのまま作成 | /issue スラッシュコマンド。エージェントが説明を整理してから作成 | /issue メッセージコマンド。入力内容からそのまま作成 | /issue メッセージコマンド。入力内容からそのまま作成 |
| 接続方式 | プラットフォームの常時接続 | Socket Mode | Stream モード | プラットフォームの常時接続 |
新規接続は現在、中国本土版の Feishu でのみ利用できます。既存の国際版 Lark 接続は、引き続き利用および管理できます。
各 Bot は 1 つの Multica エージェントに紐づきます。同じチャットプラットフォームで複数のエージェントを使う場合は、エージェントごとに Bot を接続してください。
DingTalk と WeCom はコミュニティメンテナンスです。各リリースに含まれますが、公式サポート SLA はありません。問題は GitHub issues で報告してください。
WeCom が現在扱えるのはテキストメッセージのみです。音声、画像、ファイルのメッセージにはその旨の短い返信が返り、エージェントには渡されません。
詳しい手順:
メッセージが処理される流れ
- Multica が Bot に対応するワークスペースとエージェントを特定します。
- グループやチャンネルでは、Bot を明示的に @メンションしたメッセージだけを処理します。DM では @メンションは不要です。
- Multica が送信者のアカウント連携とワークスペースのメンバー資格を確認します。
- メッセージがエージェントとのチャットセッションに追加され、タスクが作成されます。
- エージェントの返信が元の DM またはスレッドに返されます。
Bot を @メンションしていないチャンネルメッセージは、エージェントをトリガーせず、会話コンテキストにも追加されません。
通常のメッセージはこの流れで処理されます。/issue はコマンドであり、チャットのターンではありません。Multica は元のプラットフォームに結果を返しますが、コマンド自体は Multica Chat に追加しません。Slack のネイティブスラッシュコマンドは、独立した非同期のタスク作成フローで処理されます。
セッションの分離
- Feishu/Lark はチャットごとにセッションを分けます。同じチャットの後続メッセージは同じセッションを継続します。
- Slack は DM をチャンネルごとに分けます。チャンネル内では、スレッドごとに独立したセッションが保持されます。
- DingTalk は conversation ごとにセッションを分けます。DM とグループはそれぞれのセッションを継続します。
- WeCom はチャットごとにセッションを分けます。DM とグループチャットはそれぞれのセッションを継続します。
チャンネルで追加の依頼を送る場合も、Bot を再度 @メンションする必要があります。エージェントが受け取るのは自分宛てのメッセージだけで、チャンネルの履歴全体を自動的に読み取ることはありません。
アカウント連携
メンバーが初めて Bot にメッセージを送ると、アカウント連携用のリンクが届きます。Multica にログインすると、チャットプラットフォームのアカウントが現在のワークスペースのメンバー資格に紐づきます。
Multica がエージェントを実行するのは、アカウント連携が完了した後だけです。メッセージを受け取るたびにアカウント連携とワークスペースのメンバー資格を再確認するため、ワークスペースから退出した後は Bot 経由でアクセスできません。
アカウント連携は送信者の本人確認にのみ使われます。チャットプラットフォームのほかのメンバーが Multica ワークスペースへ自動的に追加されることはありません。
接続を管理する
ワークスペースの owner と admin は Bot を接続または切断できます。Feishu/Lark Bot の場合は、エージェントの所有者も接続と切断ができます。通常のメンバーは接続済みの連携を確認し、自分に実行権限があるエージェントを利用できます。
切断すると、Bot は新しいメッセージを受信しなくなります。既存の Multica の会話と実行記録は保持されます。
セルフホスト
セルフホスト環境では、Multica が接続エンドポイントを有効にする前に、プラットフォームごとに 32 バイトの暗号化キーを設定する必要があります。
MULTICA_LARK_SECRET_KEY=<base64-encoded 32-byte key>
MULTICA_SLACK_SECRET_KEY=<base64-encoded 32-byte key>
MULTICA_DINGTALK_SECRET_KEY=<base64-encoded 32-byte key>
MULTICA_WECOM_SECRET_KEY=<base64-encoded 32-byte key>これらのキーは、保存された Bot の認証情報を暗号化します。生成、保管、ローテーションの方法は環境変数を参照してください。Multica Cloud ではすでに設定済みです。
WeCom はさらにバックエンドを単一レプリカで運用する必要があります。送信経路が 1 つのプロセスが保持する WebSocket だけのため、他のレプリカで生成された返信は破棄されます。レプリカ間の送信ルーティングが実装されるまで、WeCom を有効にしたバックエンドは多重化しないでください。