SlackでバックオフィスのFAQ対応を自動化した(い)話

こんにちは、エウレカのCTO室で開発を担当している香取です。
この記事は、eureka Advent Calendar 2017 11日目の記事です。

業務では、社内で利用されているツールのアカウント管理を自動化したり、プロダクト改善に直接関わらないけれどその工程を効率化したりするための開発を行っています。とくに、チームメンバーとしてエンジニアが不在であるバックオフィスの業務を助けるような内容が多いです。

今日は、その中からSlackでバックオフィスのFAQ対応を自動化した(い)話をします。(まだ導入前ですw)
エンジニアリングというよりは、社内の業務改善に対するアプローチとして面白かったので、同じような課題を抱えている方のヒントになれば嬉しいです。

背景

弊社では、新入社員がはじめに行うべき諸作業(PCセットアップなど)がいくつかあり、マニュアルを基に自身で対応してもらっています。しかし、イケてるマニュアルを用意したつもりでも、特殊なケースや解釈の違いなどから期待通りに進められないことが少なからずあります。

そんなときのフォローの場として、Slackのnew-commerなるチャンネルにて新入社員向けの質問窓口が用意されています。
しばらく運用してみたところ、新入社員の方から同じような依頼が度々来ていることに気付きました。
それに対応する手間をなくしたいと考えたのです。

Slackに関する開発では、スラッシュコマンド@メンションでbotへ要求する機能を実装していましたが、今回はフォーマットに縛られない自然言語に対して反応させることを目指しました。
理由は、スラッシュコマンドにしても@メンションにしても、使用するにはユーザーがフォーマットを覚えなければならず、コマンドが増える度に覚えるコマンドが増えるという問題が起こるからです。
とくに今回の対象ユーザーは新入社員なので、前提知識が不要な自動返信機能を求めました。
人間が意識しなくても勝手に対応してくれる機能が理想形ですね〜。

  • スラッシュコマンド
    /で始まるコマンドと有効な引数を入力すると、入力情報が設定されているURLへHTTPリクエストで送られます。

  • @メンション
    RTM API(後述)で、botユーザーに対して送られた入力に応じて処理を行う。

やりたいこと

よくある質問がされたら、Botが自動返信してくれること。

手順

  1. よくある質問リストを作成する
  2. リストに該当する投稿に対してbotから自動返信する

よくある質問リストを作成する

botで反応すべき投稿に含まれるキーワードを選定し、その投稿への返信に利用する定型文を作成する。以下のようなリストを作りました。

反応する条件 返信テキスト
(モニタ, ディスプレイ)
&& (ほしい, 欲, 支給, 借り, 貸し, 使)
備品の購入はこのページから申請してね💁

上記の反応する条件は、以下をすべて満たすことを表しています。

  • 「モニター」「ディスプレイ」のいずれかが含まれる
  • 「ほしい」「欲」「支給」「借り」「貸し」「使」のいずれかが含まれる

リストに該当する投稿に対してbotから自動返信する

投稿を監視するにはSlackのRTM APIを利用します。RTMはReal Time Messagingの略です。このAPIで、botが招待されているチャンネルのいろいろなイベント(投稿やユーザーの参加など)を取得できます。

botをどのチャンネルへ招待するかによって監視するチャンネルを絞ることになります。今回はnew-commerというChannelを対象にしました。

ゴニョゴニョして、できたのがこんな具合です。


雑な条件ではありますが、ある程度バックオフィスの手間を削減できるのではないかと期待しています。

感想

CTO室で業務をしていると、効率の最大化を常に考えることになります。奇妙かもしれませんが、今回のようにあえて仕様を雑に(単純に)定義してつくる重要さを感じています。複雑な仕様にするほどCTO室が割く工数が増え、全体最適から遠ざかることがあるからです。雑に作って、必要に応じて改善するというフローを心がけています。

そして今後の展望として、botで対象の投稿を記録し単語に分けて集計すると面白そうだなと思いました。社内にどのような課題があるかを見つけることもCTO室の重要な仕事なので、それを助ける手になりそうな気がします。

また、今回はよくある質問が一定量あるということがわかっていたので実行しましたが、メトリクスを先に取っておいて、感覚だけでなく数値的に見てもやる価値があるかどうかを判断できたら良かったなというのも感じました。

今回はCTO室として持っている環境や制約を踏まえた結果Slack botによる自動化を選択しましたが、他にも手段はあって、環境に応じて選択するとよいと思います。今後も、自動化できるものはどんどん自動化していきます!

明日は鈴木くんのGoのフレームワーク“Revel”を触ってみたです!

  • このエントリーをはてなブックマークに追加

エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

goji+xorm: Building web api server in golang (part1)

GOPATH を build.Default.GOPATH で適切に扱う