Slackのbotで、依頼の対応漏れと「確認待ち」を見える化した話
この記事の内容
社内のやり取りをSlackでされている企業様から、「依頼が流れて対応漏れが出る」「誰が対応したのか分からない」というご相談をよくいただきます。当社でもお手伝い先の業務でSlackのbotを何本か作って運用していますが、効果が出たのはメッセージを自動で送ることそのものではありませんでした。
効いたのは、「誰が、いつ、何をすればいいか」がSlackを開いた瞬間に分かる状態を作ったことです。この記事では、実際に動かしている3つのbotを例に、設計の考え方と、導入時に必ずつまずくポイントをまとめます。
Slackの依頼が漏れるのは、人のせいではない
Slackで依頼が漏れる原因は、ほぼ次の3つに集約されます。どれも担当者の注意力の問題ではなく、Slackの仕組み上そうなる、というものです。
| 起きていること | なぜ起きるか | botで変えられること |
|---|---|---|
| メンションが流れて埋もれる | チャンネルが複数に分かれ、依頼と雑談が同じ流れに並ぶ | 依頼だけを横断で拾って1か所に並べる |
| 対応済みかどうか分からない | 「対応しました」の返信やリアクションが人によってまちまち | 返信・リアクションから状態を自動で判定する |
| 確認依頼に気づかない | 自分のアカウントで投稿した内容は、自分に通知が来ない | bot名義で投稿して、確実に通知を鳴らす |
3つめは見落とされがちです。自動化ツールを「自分のアカウントのトークン」で動かすと、ツールが投稿した確認依頼は本人の発言扱いになり、本人には通知が届きません。「投稿はされているのに誰も気づかない」状態が、仕組みを入れた直後に起きます。
事例1:依頼の対応漏れを、自動で一覧にする
複数のチャンネルに散らばる「特定チームへのメンション」を定期的に集めて、1依頼=1行の台帳にまとめるbotです。台帳はスプレッドシートに置き、その上に対応状況のボードを載せています。
仕組みの流れ
- 対象チームへのメンションを検索で横断的に拾う(6時間おき)
- スレッドの返信とリアクションを読みに行き、状態を判定する
- 「要対応/未対応/対応中/完了」の4つに振り分けて台帳を更新する
- ボードで今月の件数・未対応の一覧・チャンネル別の偏りを見る
状態の判定はシンプルです。担当チームの誰かが返信していれば「対応中」、完了のリアクションか完了を示す返信があれば「完了」、何もなければ「未対応」。人が手で「完了」にした場合はそちらを優先し、次の自動更新でも上書きしません。
もう1つ大事なのが数えないものを決めることです。担当チーム自身が全体に周知するために付けたメンションや、ワークフロー・他のbotが自動で投稿したものまで数えると、対応不要な行で台帳が埋まって誰も見なくなります。これらは台帳から外し、周知は別シートに分けました。
事例2:確認依頼は、bot名義で送る
告知や配信の作成を自動化している業務では、最後に人の確認が必要です。その確認依頼を、当初は担当者本人のアカウントから投稿していました。すると前述のとおり、本人に通知が飛ばず、どれが確認待ちなのか分からない状態になりました。
そこで、確認依頼は必ず専用のbotから投稿するように変えました。本文を渡すと、bot名義で指定のスレッドへ投稿されます。これだけで、確認待ちが通知として届くようになり、「投稿したのに気づかれない」がなくなりました。
あわせて、本人アカウントでの代理投稿は禁止というルールにしています。誰が書いたのか(人なのか仕組みなのか)が名義で区別できると、あとから経緯を追うときにも迷いません。
事例3:応募の通知を、要約とスレッドに分ける
採用代行の業務をAIで自動化している案件では、求人への応募があったらSlackに知らせる仕組みを作りました。ここで気をつけたのは、通知の量が多いと誰も読まなくなることです。
通知の組み立て方
- 親メッセージ:件数の要約と、対応すべき人へのメンションだけ。1〜2行
- スレッド:応募者ごとの明細。見たい人だけが開く
- 定時のまとめ:朝8時と15時の2回、その時点の未対応をまとめて送る
この形にすると、チャンネルを眺めたときに見えるのは「今日の応募◯件・対応が必要な人」だけになり、流れが荒れません。明細はスレッドに閉じているので、担当者はそこだけ読めば仕事が終わります。
技術的には、応募データが保存された瞬間にデータベース側から通知を送るプッシュ型にしました。当初は常時起動のパソコンで定期的に確認する構成を検討していましたが、データベースのトリガーとクラウドの関数だけで完結させたことで、社内に常時起動のパソコンを置く必要がなくなりました。止まる場所が減るほど、仕組みは長持ちします。
Slack botの通知設計、3つの原則
3つのbotを作って運用するなかで、通知の設計はこの3つに落ち着きました。
原則
- 親は短く、明細はスレッドへ:チャンネルに流れるのは「誰が何をするか」だけにする
- 鳴らすのは、人の行動が必要なときだけ:「正常に終わりました」はまとめて1回、または鳴らさない
- 取り消せない操作はbotにさせない:botは知らせる・集める・下書きするまで。送信・決済・削除の最後のボタンは人が押す
特に2つめは、入れた直後ほど守られません。動いていることを確かめたくて、成功時にも毎回通知を出したくなります。ですが、成功通知が続くと、肝心の「対応が必要な通知」がその中に埋もれます。
導入でかならずつまずく3つのポイント
Slack botを自社で作るときに、ほぼ確実に引っかかる点をまとめておきます。
1. 「botのトークン」と「ユーザーのトークン」でできることが違う
SlackのアプリにはBot Token(xoxb-で始まる)とUser Token(xoxp-で始まる)の2種類があります。メッセージの検索(search.messages)はUser Tokenでしか使えません。事例1のように「メンションを横断で拾う」ならUser Token、事例2・3のように「bot名義で投稿する」ならBot Token、と用途で分けます。
2. 検索でヒットしたメッセージが、スレッドの途中のことがある
検索結果に返ってくるのは、スレッドの親ではなく途中の返信であることがあります。その位置を起点にスレッドを読みに行くと、返信がすべて取れず「返信0件=未対応」と誤判定します。必ずスレッドの親に戻ってから返信を読み直す処理が必要です。
3. 参加していないチャンネルの返信は読めない
User Tokenは、そのユーザーが参加していないチャンネルのスレッドを読めません。対応済みなのに未対応に見える行が出たら、まずトークンの持ち主がそのチャンネルに入っているかを確認してください。
まず1本作るなら、どれから始めるか
「Slackで何か自動化したい」というご相談では、最初にこの順番をおすすめしています。
おすすめの順番
- いちばん漏れて困っている依頼を1種類だけ決める:全部を拾おうとすると、判定ルールが決まらずに止まります
- 「完了」の定義を決める:返信なのか、リアクションなのか。ここが決まれば判定は機械でできます
- 通知先と頻度を決める:即時なのか、1日2回のまとめなのか
- そのあとでbotを作る
作る作業そのものは、今はAIを使えば短期間で終わります。時間がかかるのは、2の「完了の定義」を関係者で揃えるところです。ここを飛ばして作ると、正しく動いているのに誰にも信用されないbotになります。
よくある質問
Slackの有料プランでないとbotは作れませんか?
無料プランでもアプリ(bot)は作れます。ただし無料プランは閲覧できるメッセージ履歴の期間に制限があるため、過去の依頼をさかのぼって集計したい場合は、その範囲を先に確認してください。
エンジニアがいなくても運用できますか?
当社のbotは、スプレッドシートと組み合わせて「表を見れば状況が分かる」形にしています。判定ルールの変更はシートの設定で済むようにしておけば、日々の運用にプログラミングの知識は要りません。仕組みの修正が必要になったときだけご相談いただく形が多いです。
botに返信や対応までさせることはできますか?
技術的には可能ですが、取り消せない操作(外部への送信・配信・決済・削除など)はbotに任せず、人が最後のボタンを押す設計をおすすめしています。botは「集める・知らせる・下書きを用意する」までにしておくと、誤作動しても被害が出ません。
通知が多すぎて逆に見なくなりそうで不安です
親メッセージは要約とメンションだけにして明細をスレッドに分け、成功の通知は出さない(またはまとめて1回にする)と、チャンネルの流れはほとんど変わりません。通知の量は、作る前に「1日に何回鳴るか」を見積もって決めるのが確実です。
「Slackの依頼が漏れる」「確認待ちが埋もれる」といった業務があれば、どこをbotに任せるかの切り分けからご相談ください。
無料で相談する