Slack とチャンネル
Slack をプロジェクトに接続し、チャンネルからセッションを操作します。
チャンネルはチャットプラットフォームをプロジェクトに接続します。接続済み チャンネルでメッセージを送ると、セッションが開始されます。エージェントは 同じスレッドで返信します。
利用可能なチャンネル
Beeuni は現在、4 つのチャンネルプラットフォームに対応しています。
- Slack — Beeuni が管理するアプリをワンクリックで接続するか、独自の ボットトークンを使用します。
- Microsoft Teams — 組織管理者の同意を伴う OAuth で接続するか、独自の Azure Bot を使用します(実験的機能。有効にするには Settings → Feature flagsを開きます)。
- メール — AgentMail を利用したチャンネルです(実験的機能。有効にするには Settings → Feature flagsを開きます)。
- 音声 — リアルタイム音声チャンネルです(実験的機能。有効にするには Settings → Feature flagsを開きます)。エージェントとリアルタイムで音声会話できます。
CLI とダッシュボードから接続できるのは Slack と Microsoft Teams のみです。メールと 音声はダッシュボードで管理します。このページでは Slack について説明します。 Teams にも同じセッション、ID のリンク、認証情報のルールが適用されます。
チャンネルからセッションを開始する
Slack スレッドまたは Teams の会話で最初のメッセージを送ると、セッションが作成されます。 サンドボックスが停止して再開した後も、そのスレッドには同じセッションが紐づきます。
Slack チャンネルでは、その後のメッセージがセッションに届くのはボットへのメンションがある場合だけです。 メンションのない返信はスレッド内の参加者向けです。次に誰かがメンションしたとき、エージェントは それらの返信を読みます。ダイレクトメッセージでは、すべてのメッセージがセッションに届きます。
複数のプロジェクトに接続された Slack ワークスペースでは、最初のメンション時に プロジェクト選択画面が表示されます。
ID のリンク
Beeuni はエージェントを実行する前に、チャットの送信者を Beeuni アカウントにリンクします。
Slack で /beeuni login を実行し、リンクを開いてサインインしてください。Teams でも
同じ要件が適用されます。リンクされていない送信者にはセッションを実行せず、リンクを促す
メッセージが表示されます。
サインインリンクは一度だけ使用でき、有効期限は 10 分です。Slack アカウントは一度に 1 つの
Beeuni アカウントにしか接続できません。別のアカウントに接続するには、まず
/beeuni logout を実行してください。組織で二要素認証が必要な場合、Beeuni は接続前に
2 つ目の認証要素を求めます。チャットは、接続に使用した認証要素で実行されます。
各操作は、それを行った人のリンク済みアカウントと、そのアカウントのプロジェクトロールで実行されます。 アカウントのオーナーと管理者は、プロジェクトマネージャーとして扱われます。
| 操作 | 実行できる人 |
|---|---|
| 新しいメッセージまたはボットのスレッドでボットにメンションする | プロジェクトへのアクセス権があり、チャンネルのポリシーに従うリンク済みアカウント |
| 実行を停止する | 返信対象のメッセージを送った人、またはセッションへの参加を承認され、引き続きプロジェクトを利用できる人 |
| チャンネルのプロジェクト、エージェント、モデル、ポリシーを変更する | プロジェクトマネージャー。ボットとの DM では、プロジェクトメンバー全員 |
| レビューに対応する | プロジェクトマネージャー |
| コネクター呼び出しを承認または拒否する | プロジェクトマネージャー、またはセッションを開始した人 |
owner_approval スレッドへの参加者を承認する |
セッションのオーナー |
link-bot |
プロジェクトマネージャー |
認証情報の保存場所
接続済みチャンネルのボットトークンは、コネクターのスコープに限定された シークレットです。プロジェクトの Secrets ページには表示されません。 Beeuni がこれをサンドボックスに注入することはありません。エージェントがチャットメッセージを送受信するとき、 Beeuni がサーバー側でトークンを解決します。
Slack を接続する
接続を開始する
CLI から次を実行します。
beeuni channels connect共有 Slack アプリが設定されたホスト(たとえば Beeuni Cloud)では、ワンクリックでインストールできる
リンクが表示されます。リンクを開いてワークスペースを選択し、Allow をクリックします。
インストールが完了するまでコマンドをポーリングさせるには、--wait を追加します。
代わりにダッシュボードでプロジェクトの Channels ページを開き、そこで Slack を接続することもできます。 同じインストールフローが使われます。
独自の Slack アプリを使用する
独自の Slack アプリを使用するには、beeuni channels manifest を実行してアプリの
マニフェストを出力します。そのマニフェストを使って
api.slack.com/apps でアプリを作成し、ワークスペースにインストールします。
次に、以下を実行します。
beeuni channels connect --manual --bot-token xoxb-... --signing-secret ...接続を確認する
beeuni channels status接続を解除するには beeuni channels disconnect を実行します。すべてのフラグについては
CLI リファレンスを参照してください。
Slack を接続すると、あなたの beeuni.yaml に channel コネクターのエントリが追加されます。
このエントリを手動で作成する必要はありません。
Slack を使う
ボットが参加しているチャンネルでタスクとともにボットにメンションするか、ダイレクトメッセージを 開きます。前述のとおり、スレッドには同じセッションが紐づきます。チャンネルのスレッドで ボットに再度メンションすると、セッションを続けられます。タスクなしでメンションだけすると、 セッションを開始せず、タスクを追加するよう案内されます。
エージェントが読み取れる内容
エージェントは、プロジェクトの Slack
コネクター(beeuni_slack、またはサンドボックス内の slack コマンド)を
使って Slack を読み取ります。同じ Slack ワークスペースに接続されたすべてのプロジェクトが
同じボットを使用するため、Beeuni は各プロジェクトが独自に扱う会話の範囲内で読み取りを許可します。
| 会話 | 読み取り |
|---|---|
| このプロジェクトに接続されたチャンネルまたは DM | 許可 |
| このプロジェクトのセッションが開始または参加した、任意のチャンネル内のスレッド | 許可 |
| 別のプロジェクトのチャンネル、DM、スレッド | 拒否 |
| どのプロジェクトにも接続されていない会話 | 他のプロジェクトがワークスペースに接続されていない場合のみ許可 |
読み取りを拒否すると、403 に理由 conversation_not_in_project と、会話名を含むメッセージが返されます。
どのプロジェクトにも接続されていない会話を読み取るには、まずその会話で
/beeuni switch を実行し、このプロジェクトを選択してください。
- チャンネル履歴には、別のプロジェクトのスレッド内のメッセージは含まれません。
get_historyとget_threadは、Slack が名前を特定できる送信者について、各メッセージにuser_nameをuserID の横に追加します。1 回の読み取りで名前が表示されるのは最大 25 人です。 2 秒以内に Slack から名前が返らなかった場合、その名前は省略されます。list_channelsはすべてのパブリックチャンネルと、エージェントが読み取り可能なプライベートチャンネルおよび DM を列挙します。channel_infoはすべてのパブリックチャンネルについて応答します。プライベートチャンネルと DM には上の表が適用されます。file_infoは、エージェントが読み取り可能な会話、またはこのプロジェクトのスレッドでファイルが共有された場合に応答します。slack downloadにも同じルールが適用されます。別のプロジェクトの会話でのみ共有されたファイルには403と応答します。ダウンロードは 50 MB で停止し、413と応答します。search_messagesは検索対象を 1 つのプロジェクトの会話に限定できないため、他のプロジェクトがワークスペースに 接続されていない場合にのみ実行されます。list_users、user_info、auth_testはワークスペースのディレクトリを読み取り、制限の対象にはなりません。
書き込みには、以下の独自ルールが適用されます。
エージェントが投稿できる内容
投稿、ファイルの送信、編集、削除、リアクション、チャンネルへの参加、スレッドの紐づけには、 共通のルールが適用されます。エージェントが別のプロジェクトのチャンネルやスレッド内で操作することはありません。
| 対象 | 書き込み |
|---|---|
| このプロジェクトのチャンネル、またはそのセッションが開始もしくは参加したスレッド | 許可 |
| どのプロジェクトにも接続されていないチャンネル | 許可。新しいメッセージがこのプロジェクトのスレッドを開始し、ボットへのメンションを含む返信はセッションに戻ります |
| 個人とのダイレクトメッセージ | 許可。その人とボットとの DM で別のプロジェクトが実行されている場合も許可 |
| 別のプロジェクトのチャンネルまたはグループ DM | 拒否 |
| 任意の会話内の、別のプロジェクトのスレッド | 拒否。返信、編集、削除、リアクションはできません |
書き込みを拒否すると、403 に理由 conversation_not_in_project と、会話名を含むメッセージが返されます。
slack send --file と slack bind-thread にも同じルールが適用されます。
channel にはチャンネル名ではなく、C0123ABCD や U0123ABCD のような会話 ID またはユーザー ID を
指定する必要があります。Slack は名前を使って投稿しますが、名前をルールに照らして確認することはできません。
確認対象とは別の場所に Slack がメッセージを投稿した場合、Beeuni はそのメッセージを削除し、投稿を拒否します。
別のプロジェクトが管理するチャンネルに投稿するには、そのチャンネルで /beeuni switch を実行して
このプロジェクトを選ぶか、そのプロジェクトから投稿してください。
スラッシュコマンドでセッションを操作する
Slack では /beeuni <command> として入力します。DM では通常のテキストとして入力します。
スラッシュコマンドは Assistant DM ペイン内では実行されないため、そこでは Beeuni が同じ語句を
通常のテキストから解析します。
| コマンド | 機能 |
|---|---|
login、logout |
Slack ID をリンクまたはリンク解除する |
switch、unbind |
このチャンネルとプロジェクトの紐づけを変更または解除する |
projects |
紐づけ可能なプロジェクトを一覧表示する |
sessions |
このワークスペースで開始された最近のセッションを一覧表示する |
whoami |
チャンネルパネルを表示する。プロジェクト、エージェント、モデル、ポリシー、リンク済み ID が表示されます |
models |
このチャンネルのモデルを選択する。Models and keysを参照してください |
agent <name>、model <id> |
このチャンネルで使うエージェントまたはモデルを設定する |
policy <mode> |
ここでセッションを開始できる人を設定する |
help |
すべてのコマンドを一覧表示する |
policy には project_open(デフォルト。ボットにメンションしたプロジェクトメンバーなら誰でもセッションを開始できます)、
owner_approval、または owner_only を指定できます。これはチャンネルごとのリソース設定であり、ロールではありません。
ロールの判定で拒否される権限を付与することはありません。Accounts & accessを参照してください。
モデルとキー
/beeuni models は、Web の選択画面と同じように、ここで実行できるすべてのモデルを一覧表示します。
Beeuni モデルのほか、プロバイダー API キーまたは ChatGPT サブスクリプションを通じて利用するモデルも含まれます。
各モデルには料金の支払い方法が表示されます。長い一覧は、入力して絞り込める 1 つの選択欄にまとめられます。
モデルを選ぶか、/beeuni model <id> と入力してください。/beeuni model default を選ぶと、プロジェクトのデフォルトに戻ります。
利用できるキーは会話によって異なります。
- ボットとの DM — 自分のキーと ChatGPT サブスクリプションに加えて、プロジェクトと共有されているキーを使えます。 セッションは自分だけに公開されます。
- チャンネルまたはグループ DM — プロジェクト全体と共有されているキーのみ使えます。 自分のキーで動作するモデルを選ぶには、代わりに DM を使用してください。
キーを使うモデルは、そのプロバイダーで利用できるすべてのキーを使用し、レート制限時にはキーを切り替えます。 チャンネルのモデルは、新しいスレッドを開始するたびに使用されます。スレッドでは、開始時のモデルが維持されます。 スレッドのモデルを実行できなくなった場合は、失敗させずに、そのメッセージに限って別のモデルに切り替えます。 Provider keys and member accessを参照してください。
画像を含むフォローアップには、画像を読み取れるモデルが使用されます。利用可能なモデルに該当するものがない場合、 エージェントにはプロンプトでその旨が伝えられます。画像が見えないと伝え、推測する代わりにテキストを求めます。
チャンネル名とユーザー名
Slack は C0123ABCD や U0123ABCD のような ID を送信します。Beeuni は、Slack 上でユーザーに表示される名前を表示し、
操作には ID を使用します。
| 場所 | 表示される内容 |
|---|---|
Channels ページ、beeuni channels bindings |
パブリックまたはプライベートチャンネルでは #channel、DM では相手、グループ DM ではメンバー |
| セッション内の Slack メッセージ | 送信者の名前と #channel |
セッション内の slack send への返信 |
#channel、または DM の相手 |
| セッションのタイトル | Slack に表示されるメンション。@Beeuni は表示されますが、<@U0123ABCD> は表示されません |
| エージェントのプロンプト | ID の横に表示される名前。Sam Rivera (U0123ABCD)、#general (C0123ABCD) |
| Slack 内のエージェントのプラン手順 | ユーザーは @Sam Rivera、チャンネルは #general と表示されます。手順によって通知が送信されることはありません |
| Slack の承認カード | チャンネルのパラメーターはチャンネルリンクとして表示され、Slack はあなた自身のアクセス権に基づいて名前を表示します。ユーザーのパラメーターには相手の名前が表示されます |
Slack が見つけられないチャンネルは 利用できないチャンネル と表示され、ID は保持されます。 チャンネルが削除された場合や、ボットが削除された場合にこうなります。2 秒以内に Slack から名前が返らなかった場合、 そのメッセージでは名前が省略されます。その後、プロンプトには ID のみが含まれ、処理は待たずに続行されます。
承認
エージェントが処理を続ける前に人の判断を必要とすると、レビュー項目を作成します。 セッションがこのスレッドから開始されている場合、タイトル、概要、リスクレベル、Approve、 Request changes、Deny を含むカードがここに表示されます。
Request changes をクリックすると、変更内容を入力する欄が開きます。入力した内容は判断とともに保存され、 エージェントに渡されるため、再度尋ねる必要はありません。入力は任意です。空のまま送信すると、エージェントには 確認するよう伝えられます。Approve と Deny はワンクリックで選択できます。
レビューに対応するには、プロジェクトへの書き込み権限があるリンク済み Beeuni アカウントが必要です。
実行を停止する
エージェントの作業中は、ライブメッセージに Stop ボタンが表示されます。これを押すと、メッセージ上だけでなく ランタイムで実行が終了します。実行が残ったままだと、スレッドの次のメッセージに返信せず、そのメッセージを取り込んでしまいます。
返信対象のメッセージを送った人は実行を停止できます。また、セッションへの参加を承認され、引き続きプロジェクトを 利用できる人も停止できます。チャンネル内にいるだけの人は停止できず、その旨を伝える非公開メッセージが届きます。
できないこと
- Assistant DM ペイン内ではスラッシュコマンドを実行できません。代わりに
/beeuni <command>を通常のテキストとして入力してください。 - Telegram など、他のチャットプラットフォームは現在チャンネルとしてサポートされていません。 CLI とダッシュボードから接続できるのは Slack と Microsoft Teams のみです。メールと音声はダッシュボードから接続します。