Skip to main content

Slack

ShanoneのSlack連携では、日常的なメッセージングからチャンネル管理、Canvas、Lists、Enterprise Gridの管理操作まで、125のツールをエージェントが利用できるようになります。

はじめに

1

OAuthで接続する

エージェントにSlackで何か作業をしてもらう(例:「#generalに投稿して」)か、ShanoneダッシュボードのIntegrationsから事前に接続します。どちらの方法でも、ShanoneのSlackアプリをワークスペースに対して認可するためのconnect_linkが発行されます。
2

プライベートチャンネルにアプリを招待する

Botトークンによる操作(投稿、履歴の取得など)は、Slackアプリが追加されているチャンネルでのみ動作します。パブリックチャンネルでは通常これは不要ですが、プライベートチャンネルではSlack上で明示的にアプリを招待する必要があります。
3

リクエストを再試行する

接続が完了したら、もう一度エージェントに依頼してください——shanone_execute_toolはconnect_linkを返す代わりに成功するようになります。
リマインダー・スター・検索・DND設定などの一部ツールは、Botトークンではなく同じOAuthフローで取得されるSlackのユーザートークンを使用します。他の機能は動くのにこれらのツールだけ失敗する場合は、OAuth接続をやり直して両方のトークンが付与されているか確認してください。詳しくはBot名義とユーザー名義の切り替えを参照してください。

Bot名義とユーザー名義の切り替え

SlackのOAuthでは、Botトークン(xoxb-)とユーザートークン(xoxp-)の2種類が発行されます。Shanoneはどちらも保存しており、ツールごとにact_asパラメータで送り手を切り替えられます。 act_asを省略した場合はこれまでと同じくBot名義で動作するため、既存の使い方に影響はありません。

使い分け

Bot名義が向いているケース

自動レポートの配信、CI/CDの通知、定期的なリマインドなど。自動化された処理であることが明示されるため、チームにとって分かりやすくなります。

ユーザー名義が向いているケース

同僚へのDM返信、自分の代理での発言など。本人の発言として自然に見せたい場合や、Botが参加していないチャンネルの履歴を読みたい場合に使います。

使用例

同じslack_post_messageでも、act_asだけで送り手が変わります。
エージェントに対して「私名義で送って」「Botとして通知して」と自然言語で伝えるだけでも、エージェントがact_asを適切に指定します。

act_asに対応しているツール(31)

投稿・履歴取得・チャンネル操作など、Bot/ユーザーのどちらでも意味を持つツールが対応しています。

act_asを指定できないツール

Slackの仕様上、片方のトークンでしか動作しないツールがあります。これらはact_asを指定しても自動的に正しいトークンが選択されるため、エラーにはなりません。
Slackがユーザートークンのみを許可しているため、常にあなた本人として実行されます。
リモートファイルの登録・更新・削除は、Slackがアプリ自身の所有物として扱うためBotトークン専用です。slack_add_remote_file, slack_update_remote_file, slack_remove_remote_file
Bot名義で投稿できるのはBotが参加できる場所だけです。 人間同士の1対1のDMはメンバーが2人で固定されており、Botを含む第三者は参加できません。そのようなDMへact_as="bot"で投稿しようとするとchannel_not_foundが返ります。他の人とのDMにはact_as="user"を使ってください。

既定値を固定する

毎回act_asを指定するのが面倒な場合は、パラメータポリシーでツールごとの既定値を設定できます。default_valueポリシーを使うと、エージェントがact_asを省略したときだけその値が適用され、明示的に指定された場合はそちらが尊重されます。 たとえばslack_post_messageのact_asにdefault_value: "user"を設定すると、以降の投稿は既定で本人名義になります。
常に強制したい場合はforced_valueポリシーを使ってください。この場合はエージェントの指定を無視して必ずその値が使われます。

利用可能なツール

ShanoneはSlack用に125のツールを提供しており、以下のカテゴリに分類されています。

よくある使い方

デイリースタンドアップ

自動スタンドアップリマインダーを予約し、チームの近況アップデートを収集する。

レポートの配信

レポートを生成し、関連チャンネルに自動で共有する。

ナレッジ検索

過去のやり取りを検索して、決定事項・リンク・情報を見つける。

タスク管理

リアクションを使ってタスクの完了状況を追跡し、フィードバックを集める。

トラブルシューティング

Botトークンによるツールがプライベートチャンネルに投稿できるようにするには、Slackアプリがそのチャンネルのメンバーである必要があります。Slack上でアプリを招待してから再試行してください。
slack_search_messages / slack_search_all / slack_search_filesにはOAuthのユーザートークンが必要で、Botトークンだけでは動作しません。IntegrationsからSlackを再接続し、両方のトークンが付与されているか確認してください。
act_asを省略すると既定でBot名義になります。本人の投稿として表示したい場合はact_as="user"を指定してください(詳細はBot名義とユーザー名義の切り替え)。毎回指定したくない場合は、パラメータポリシーのdefault_valueで既定値をuserに変更できます。
人間同士の1対1のDMはメンバーが2人で固定されており、Botは参加できません。act_as="user"を指定して本人名義で投稿してください。Bot名義で送れるのは、Bot自身とのDM・Botを招待済みのチャンネル・Botを含むグループDMだけです。
ツールが必要とするスコープが、現在の連携に含まれていない可能性があります。Shanoneのアップデートで新しいスコープが追加された場合、IntegrationsからSlackを再連携すると解消します。BotトークンとユーザートークンではSlackが要求するスコープ名が異なるため、片方の名義でだけ失敗することもあります。
まずslack_list_channelsを呼び出して、利用可能なすべてのチャンネルとそのIDを確認してください。プライベートチャンネルはアプリがメンバーである場合のみ表示されます。
ファイルパス/URLにアクセスできること、対象チャンネルへのアクセス権限がアプリにあること(上記参照)を確認してください。
予約時刻が少なくとも数秒後の未来であり、Slack自体の予約可能な範囲内であること、またタイムスタンプの形式がslack_schedule_messageのスキーマで期待される形式と一致していることを確認してください(shanone_get_tool_schemaで確認できます)。