概要
Slackは、仕事の話がすでに交わされている場所です。連携してCognoのボットを必要なチャネルに招待すると、Cognoはチームがそこで話している内容を読み取り、メッセージを一目で承認できる suggested task に変え、taskが誰かの確認を必要とするときはSlack DMでその人に連絡します。あなたは何も整理しません。Cognoがやります。
事前確認
- 対象ワークスペースで 設定 を開ける。Slackの設定はowner限定ではなく、Settingsに入れるmemberなら誰でも接続できます。
- 接続したいSlackワークスペースでアプリをインストールできる(またはできる人に承認してもらえる)。
- Cognoが同期するのはボットが参加しているチャネルだけです。パブリックチャネルはCognoからワンクリックで追加でき、プライベートチャネルはSlack側でボットを招待できる必要があります。
- 個人用ではなくチームを表すSlackワークスペースを使う。Cognoが対応付けるのが一緒に働くメンバーになります。
CognoでSlackを接続する
1
Slack連携を開く
対象ワークスペースで 連携 を開き、Slack を選択します。
2
接続を開始する
接続 を押します。Slackの認可画面が別ウィンドウで開きます。
3
Slackで承認する
Cognoに許可する内容を確認して承認します。承認後、Slackがもとの画面に戻します。
4
接続を確認する
Slackページに 接続 セクションが表示され、Slack teamの名前が出ます。CognoはバックグラウンドでSlackのメンバーを同期するので、次にユーザーの紐付けを設定できます。CognoはSlack経由でワークスペースへの招待DMを送信しません。Cogno ワークスペースの名前がまだ「Newワークスペース」のままだった場合は、Slack teamの名前が付きます。
接続はOAuthの1ステップだけです。Webhook URL・setting ID・tokenを手で入力する必要はありません。Cognoが接続を保持し、アクセスを自動で更新します。ペアは排他です。1つのCogno ワークスペースに接続できるSlackワークスペースは1つで、1つのSlackワークスペースを同時に接続できるCogno ワークスペースも1つです。
Slackの権限を更新する
Cognoに新しいSlack権限を必要とする機能が追加されても、先に接続していたワークスペースは承認済みの権限のままです。Slackは権限をインストール時に付与し、後から自動で広げることはありません。そのため、権限が足りないとチャネル操作がエラーになります。 新しい権限を必要とする操作を最初に使ったときにエラーとして表示されます。Slackの生のエラーではなく、対処方法が案内されます。 Slackページで、ワークスペース名の横の 権限を更新 を押してください。Slackの承認画面が開くので承認して戻ります。チャネルもユーザーの紐付けもそのまま残ります。認証情報だけを差し替えるため、紐付けを無効化して7日間の削除猶予を開始する 連携を解除 とは異なります。 これを待っている機能は他にありません。チャネルの読み取り、メッセージのsuggested task化、Slack DM、ユーザーの紐付け、同期は、そのワークスペースが最初に接続したときに承認された権限で動くため、更新してもしなくても動き続けます。影響を受けるのは新しい権限を必要とする操作だけです。チャンネル のトグルにはチャネル管理用scope、絵文字リアクションの操作にはreactions:write、エージェントによるファイルアップロードには files:write の承認が必要です。Slackで /invite @Cogno を使ったチャネル追加はどちらでも動作します。
CognoがSlackで行うこと
接続すると、Slackは event source になります。メッセージがloopに流れ込み、Cognoがそれをもとに動きます。行うことは3つです。
以下のセクションで、Cognoが読む範囲、memberの紐付け、ボットをメンションしたときの動作を説明します。
Cognoが読むもの — そして決して読まないもの
Cognoが読むのは Cognoのボットが参加しているチャネル だけです(パブリック・プライベートとも)。それらのチャネルの新しいメッセージは、投稿されると同時に流れ込みます。スレッド内の返信も対象です。編集と削除も追従し、メッセージを編集すればCognoが持つ内容も更新され、削除すれば取り除かれます。接続時と、データを同期 を押すたびに、Cognoは連携中の各チャネルについて 直近100件まで のメッセージをさかのぼって取得し、ボットがアクセスできるSlackキャンバスを読みます。接続直後には、チームの文脈をワークスペースの メモリ に取り込むため、最近のメッセージのサンプルを一度だけ読みます。 ダイレクトメッセージとグループDMは 決して取り込まれません。Cognoがそれらをtaskやmemoryにすることはなく、通知DMのスレッドに返信してもCognoとの会話は始まりません。ボットをチャネルから外すと以降の読み取りは止まりますが、すでに読んだ内容は残ります。 新しく取り込んだSlackの元メッセージへのリンクには、親投稿の場合も元のスレッドが含まれます。返信へのリンクでは、その返信がメッセージの遷移先になります。ProjectからSlackを検索する
Projectに紐付くエージェントrunは、Slackを直接読み取ります。メッセージ検索はSlackの現在のチャネル履歴を呼び出し、スレッド取得はCognoの以前の同期結果ではなくSlackの現在の返信を呼び出します。検索結果を保存するのは、スレッド・返信・リアクションの各ツールが使う数値のメッセージIDを発行するためだけであり、回答の参照元はその保存データではありません。 providerへの各リクエストは、Projectが読むSlackチャネルに限定されます。チャネルを何も選んでいなければ、ProjectはCognoボットが参加しているすべてのチャネルを読みます。チャネルを選ぶと、そのチャネルだけに絞られます。メッセージIDを知っていてもこの範囲は迂回できません。切断済みの接続と、ボットが参加していないチャネルは対象外です。プライベートチャネルは、ボットがアクセスできる必要があります。 Projectのチャネル選択肢には、Cognoのボットが参加しているチャネルだけが表示されます。選択肢に出したいチャネルは、先にSlack連携ページの チャンネル でオンにしてください。 検索は大文字・小文字を区別しない文字列一致で、チャネルと期間を指定でき、最大100件を返します。ライブ検索にはSlackリクエスト数の上限があります。範囲が広い、または古い検索を上限内に完了できない場合、部分的な結果を完全な結果として返すことはありません。エージェントに明示的なエラーを返し、チャネルまたは期間を狭めて再試行できるようにします。エージェントのSlackアクセスを制御する
Slack連携ページの エージェントツール では、ワークスペースのownerまたはadminが、この接続の Slackを読み取る と Slackに送信 を個別に3つのmodeから選べます。 ツールを検索 で、機能名・説明・権限キー・Tool名から絞り込めます。検索で変わるのは表示だけです。保存された ブロック・確認・許可 の設定は変わりません。
各機能が付与するツールは、選択の下に ツール として並び、現在のmodeに応じて印が付きます。確認なしで実行するものにはチェック、毎回確認するものには破線の枠と疑問符、ブロックされるものには打ち消し線が付きます。
Slackを読み取る は、ライブメッセージ検索、チャネルの最近のメッセージの読み取り、現在のスレッド取得、Projectが読み取るチャネルで共有されたファイルの読み取り、接続ごとのProjectのチャネル一覧、メンションのためのSlackユーザーのIDや名前での検索をまとめて制御します。チャネル名とユーザーは、Cognoが最後にSlackと同期した内容を使います。ファイルを読み取ると、ファイルの情報と、エージェントが扱える形の内容が返ります。テキストファイルやPDFはテキスト(最大20,000文字)、画像は画像として返ります。スキャンなどテキストを含まないPDFは1ページ目の画像として返り、それ以外の種類のファイルは、内容を読み取っていない旨の注記とファイルの情報だけが返ります。Slackが元のファイルを提供している場合は、15分で失効するダウンロードリンクも返るため、エージェントは編集などのために元のファイルそのものを取得できます。リンクはファイルを読んだrunが終了すると使えなくなり、使用時にもProjectのチャネルに対して再確認され、Slackの認証情報がCognoの外に出ることはありません。既存の接続では、ownerまたはadminが変更するまで許可された状態を維持します。Slackに送信 は、plain textの新規メッセージ投稿、Slackスレッドへの返信、Input Fileまたは現在のTask向けにエージェントが作成したファイルのアップロード、Slackメッセージに対するCognoのボットの絵文字リアクション追加・削除をまとめて制御し、初期状態は許可です。エージェントが投稿したメッセージにはメッセージIDが返るため、エージェントはそのメッセージのスレッドに続けて書けます(たとえば、チャネルには短い見出しだけを投稿し、詳細はスレッドに返信する)。ある接続に保存したpolicyが別の接続を許可することはありません。
変更は次のrunから反映されます。Slack接続を解除すると、実行中のエージェントからもすぐに利用できなくなります。これらの管理対象の書き込みでは Slackに送信 が継続的な許可を示す唯一の設定です。送信先チャネルは引き続きそのProjectで選択済みかつCognoのボットが参加中である必要があります。画像や進捗・成果報告に添付するファイルを含め、すべてのファイルアップロードは保存済みSlackメッセージを対象にし、そのメッセージのスレッド内へ投稿されます。ファイルアップロードの上限は100 MBで、plain textのコメントを付けられます。Cognoは Input Files に表示された正確なファイルを送信できます。また、Task run中に作成したファイルを先に現在のTaskへ添付し、その添付を送信できます。Taskを持たないProject Runは、作成したファイルをrun自体に保持してそこから送信するため、Taskを作成する必要はありません。任意のローカルpathやURLを信頼済みの添付として扱うことはなく、別のTaskやワークスペースに属するファイルは拒否されます。リアクション操作は保存済みメッセージIDを対象にし、
thumbsupやワークスペースのカスタム絵文字名のようなSlack絵文字名を使います。Slackを呼ぶ前にprovider操作を記録するため、retryによって書き込みが暗黙に重複することはありません。チャットへの返信は短く保たれます。12行を超える投稿は、全文を求められた場合を除き拒否され、何も送信されません。そのためCognoは結論を先に書き、長い一覧は画像または上位3件にまとめ、詳細はTaskに残します。
Cognoは、送信結果が未確認のメッセージを自動で再送しません。Slackは、一部の投稿が済んだあとでもエラーを返す場合があります。そのためCognoは結果を不明のまま保持し、「何も送られていない」と決めつけたり、送信に成功したと報告したりしません。
Cognoのボットをチャネルに追加する
Cognoが読むのは、Cognoのボットが追加されたチャネルだけです。それ以外は同期もtask化もされません。チャネルの連携方法は2つあります。 パブリックチャネル — Cognoから。 チャンネル には、ボットが参加できるパブリックチャネルがトグル付きで並びます。トグルをオンにするとCognoがボットを参加させ、オフにすると退出します。 プライベートチャネル — Slackから。 Slackの仕様上、ボットは自分でプライベートチャネルに参加できません。さらにSlackは、@Cogno が招待されるまでそのプライベートチャネルの存在自体をCognoに知らせません。そのため招待はSlack側で行います。
1
Cognoから始める
チャンネル の見出しの横にある プライベートチャネルにCognoを招待 を押します。Cognoが
/invite @Cogno をクリップボードにコピーし、Slackのワークスペースを開きます(手入力でも同じです)。2
Slackでチャネルを開く
Slackで、Cognoに読ませたいプライベートチャネルを開きます。Cognoが候補一覧を出すことはできません。招待されていないプライベートチャネルは、Cognoからは見えないためです。
3
Cognoのボットを招待する
/invite @Cogno を貼り付けます。またはチャネル設定の インテグレーション からCognoを追加します。@Cogno を招待し直すことだけです。
Cognoはチャネルに参加・退出する際、そのチャネルに短い通知を投稿します。読み取りを開始した/終了したことがチャネルの参加者に伝わるようにするためで、Slack自身の参加・退出メッセージは必ず表示されるとは限りません。
ワークスペースdataを同期する
チャンネル には、各チャネルが人数と最大5人分のメンバーのアバター付きで並びます(memberに未紐付けのSlackユーザーは薄く表示)。Cognoのボットが参加しているチャネルはトグルがオンで、先頭に並びます。チャネルが8つを超えると一覧の上に チャンネルを検索 欄が表示され、一覧はその場でスクロールします。一覧は自動で最新の状態を保ちます。Cognoのボットをチャネルに招待したり外したりすると、画面を開いたままでも一覧が更新されます。メンバー一覧・トピック・直近のメッセージなどをまとめて取り直すには、ワークスペース名の横の ⋯ メニューから データを同期 を選びます。ワークスペースの行には最終同期時刻とチャンネル数・メッセージ数が表示されます。大きなSlackワークスペースでは同期に数分かかることがあります。失敗した場合はワークスペースの行に 同期に失敗 と理由が表示されます。Slackユーザーをmemberに紐付ける
CognoはSlackユーザーをワークスペースの member に対応付け、Slackから読み取るすべての内容を正しい人に紐づけます。1
メンバーの対応づけを開く
Slackページの メンバーの対応づけ を開きます。Slackユーザーごとに1行、右側にmemberの選択があります。
2
Slackからユーザーを同期する
ユーザーを同期 を押して、Slackから現在のメンバー一覧を取得します。botや無効化済みのアカウントは除外されます。
3
各ユーザーを対応付ける
各Slackユーザーで メンバーを選択 を開き、対応するCogno memberを選びます。後から変更・解除する場合はメニューを開き直して別のmemberを選ぶか、対応づけを解除 します。
@Cognoをメンションしたときの動作
Cognoのボットが参加しているチャネルで @Cogno をメンションすると、Cognoはそのメッセージを自分への依頼として扱います。数秒以内に、受け取った印として絵文字リアクションがメッセージに付きます。続いてProject Runがスレッドを読み、そのスレッドに返信します。トップレベルのメッセージでメンションすると、そのメッセージの下にスレッドが始まります。スレッド内でメンションすると、そのスレッドの続きになります。Cognoが返信したあとは、再度メンションしなくても同じスレッドで続けられ、runが対応中の間は、その後の返信もそのrunに届きます。ファイルを頼むと、Cognoはスレッドに投稿します。Slackへ送れないファイルは、Taskに添付し、スレッドにTaskのリンクを添えて返信します。 返信が届くかどうかは、次の2つの設定で決まります。いずれもSlack側ではなくCogno側の設定です。 複数のProjectが同じチャンネルを読む場合も、Project名なしで @Cogno をメンションできます。Cognoはスレッドを読み、依頼内容・参照されたTask・会話の文脈から、そのrunに渡されたProjectの中で対象を選びます。対象がまだ不明なら、Project単位の変更を行う前にスレッドで短く1行質問します。Projectの選択によってアクセス範囲が増えたり、保存された承認設定が省略されたりすることはありません。
どちらかの条件が欠けていると、メンションにリアクションは付きますが返信は届きません。リアクションはrunが始まる前に付くもので、Slackに送信 の設定には左右されません。ただし
reactions:write の権限は必要です。Cognoがこの権限を求める前に接続したワークスペースではリアクションが付きませんが、返信は届きます。追加できるのはviewer以外のロールのmemberです。Slackページでワークスペース名の横の 権限を更新 を押します。viewerにはこのボタンが表示されません。
Cognoリンクのプレビュー
SlackにCognoのTaskへのリンクを貼ると、メッセージの下にプレビューが付きます。Taskのタイトル、ステータス、担当、Project、期限に続いて、次の2行が表示されます。- いま — 作業の状況です。承認待ち、担当者の対応待ち(Cognoが理由を書いていればその理由)、Cogno の直近の実行が失敗、Cogno が作業中、Cogno の実行待ちのいずれかです。進行中の作業がないときは表示されません。
- 最新 — Taskへの最後の変更、変更した人、何分前か。時刻は読む人それぞれの時間帯で表示されます。
- リンクを貼った人がCognoワークスペースのmemberで、上の「Slackユーザーをmemberに紐付ける」でSlackアカウントが紐付いている。それ以外の人が貼ったリンクは普通のリンクのままです。
- チャネルがSlackコネクトで他の組織と共有されていない。
- TaskがこのSlackワークスペースと接続しているCognoワークスペースにあり、まだ存在する。
links:read と links:write の権限が必要です。Cognoがこの権限を求める前に接続したワークスペースでは、viewer以外のロールのmemberがSlackページで 権限を更新 を押すまで、リンクは普通のリンクのままです。
Slackを解除する
1
メニューを開く
Slackページで、ワークスペース名の横の ⋯ メニューから Slack連携を解除 を選びます。
2
確認する
確認ダイアログで 解除する を押します。
逆方向でも機能します。SlackワークスペースからCognoアプリをアンインストールすると、Cogno側の連携も自動的に解除されます。
解除後のSlackデータの扱い
解除すると 7日間の猶予 が始まります。その間に同じSlackワークスペースを再接続すれば、チャネル・ユーザー紐付け・Cognoが読んだメッセージはそのまま残っています。猶予を過ぎると、Cognoはそのワークスペースについて保持しているSlackデータを削除します。メッセージ本文、スレッドとチャネルの記録、読み取ったSlackキャンバス、Slackユーザーとmemberの紐付けが対象です。 削除は元に戻せません。猶予後に再接続した場合はゼロからのやり直しになり、各チャネルの直近100件を再度さかのぼって取得し、Slackユーザーの紐付けもやり直します。 Slackから作られた提案taskや、すでに作成済みのtaskは影響を受けません。連携ではなくボード上のあなたのデータです。Slackは、アプリが削除されてから14営業日以内にそのワークスペースのデータを削除することを求めています。7日間という猶予はCogno側の設定で、その期限内に収まる範囲で、短時間の解除やトークンの更新で履歴を失わないようにするためのものです。
よくある状態
参照URL
Cognoの投稿を削除する
対象投稿のスレッドでCognoにメンションして、削除を頼んでください。例: 「Cogno、直前のあなたの返信を消して」。Cognoは対象を確認し、そのSlack接続のCogno自身の投稿を削除します。候補が複数ある場合は、どの投稿か指定してください。 削除にも Slackに送信 の権限設定が適用されます。保存された承認・拒否設定に従います。Slack scopeは既存のchat:write で自分の投稿を削除できます。