Google Form, Slack, Zapier, Trelloで作る簡易ヘルプデスクシステム
最近問い合わせを捌き切れなくなってきて、対応漏れが出てきたので、Google Form, Slack, Zapier, Trelloで簡易的なヘルプデスクシステムを作ってみました。ZapierはStarter以上のプランが必要になります(多段Zapである為)。トライアルでも同じものが作れます。
社内のヘルプデスクの歴史
歴史というほどのものでもなく、半年以内の出来事なのですが簡単に経緯だけ説明します。実装方法だけ知りたい人は後ろの方を見てください。
入社時(2019年2月)
そもそも弊社には私が入社するまで専任の情シスはおらず、一部開発者や総務・人事などのメンバーが手分けしてPCやネットワークの不具合などを対応していました(多分)
私が入社してからは、待望の専任者ということでDMや様々なチャンネルでメンションが飛んできて判断軸もまだ定まっていなかったのでなかなかカオスな状況でした。
GASとGoogle Formで窓口を一本化
とにかく、チャネルと問い合わせのフォーマットをある程度統一しないと始まらないということで、何かシステムを導入しなくてもすぐに始められることとして、以下の記事を参考にGoogle Formから問い合わせを受けて特定のチャンネルに問い合わせが届くようにしました。Google FormのURLはSlackで「助けて情シス」と打つとカスタムレスポンスで教えてくれるようになっています。
情シスG(私とGLが入ったSlackのユーザーグループ @ug-adm-infosys)へのグループメンションや、問い合わせ者のメールアドレスの追記など一部カスタマイズしていますが、ほぼ上記の記事の通りです。
これをSlackのスターで管理していました。
問い合わせのフォーマットとチャネルをある程度統一できて、かつ皆が使い慣れたSlackでやりとりできたので入社時に比べればかなりマシにはなりました。
徐々にパンク
3ヶ月ちょっとこの方式で回してみたものの、「問い合わせの絶対数がどんどん増えたこと」、「対応者が実質私一人であること」、「私自身が社内の各種情報システムのテコ入れや新規導入などといったもっと重いタスクを抱えていること」、「移動中にスマホで問い合わせに既読をつけてしまってスターをつけ忘れたりすること」によって、徐々に対応漏れが増えてきました。
2019年6月某日「助けて情シス」リニューアル
そして先日、Zapierを部署で買ってもらったことを契機にヘルプデスクシステムをリニューアルしました。
リニューアルにあたっての要件として、以下のようなものがありました。
・問い合わせ内容が自動で何らかのタスク管理ツールにチケット登録されること
・アサイン機能があること
・ステータス管理ができること
・やりとり自体はSlackで行うこと
・タスク管理ツールとSlackで相互リンクされていること
・ユーザーがチケットの進捗状況を見れること
・Slackでのやり取りもチケットに表示される or クローズ時にストックできること
・タスク管理ツールでタスクを完了にするとチケットクローズ連絡がスレッドに飛ぶこと
仕組み
1. Google Formで問い合わせると、問い合わせ者と対応者(情シス)をメンションしてSlackのとあるチャンネルに投稿される
2. 投稿されたスレッドの Permanent Link と問い合わせ内容が記載されたカードがTrelloのボードに作成される
3. TrelloのSlack Power-Upによって会話内容をカードに表示
4. TrelloのカードのリンクをSlackのスレッドに返信
カードのリンクと、ボードの招待リンク、Trelloのアカウント作成方法が返信される
問い合わせた人は招待URLからボードに参加し、自身の問い合わせの進捗状況をボードで確認できます。(「この問い合わせどうなってますか?」というやり取りを減らす狙いがあります)
Trelloアカウントを持っていない人は自社サービスである「Teachme Biz」上に公開されている手順を参考にアカウントを作成します。返信に手順書のリンクも併記されています。
5. 問い合わせに関するやり取りをSlackで実施
Trelloのカード側でもやり取りの進捗状況がわかります。(将来的にチームメンバーが増えたときのことを考えているため)
6. カードを完了リストに入れるとクローズ連絡が自動で行われます
作り方
基本的にZapierの機能しか使っていませんが、Starter以上のプランが必要になります(多段Zapである為)。試してませんが、Integromatなら無料プランでも同じことが出来るはずです。実装自体はZapierの有料版トライアル(2週間)を使えば試すことが出来るので、捨て垢を使ってやってみるのが良いでしょう。
Zapは「問い合わせのチケット登録〜返信まで」と「クローズ連絡」の2つのZapが必要になります。
Zapierの登録や1STEPのZapの作り方などはメルカリさんの記事を参考にしてみてください。
このnoteでは弊社のヘルプデスクシステムの実装方法のみ解説します。
問い合わせのチケット登録〜返信まで
Zapの全体像はこんな感じです。1STEPずつテストを実行しながら作りましょう。
STEP1 New Response in Spreadsheet
事前にGoogle Formはつくっておきましょう。弊社で使ってるのはこんな感じのシンプルなものです
Formを作成したら、回答結果をスプレッドシートに保存出来るようにしておきましょう。またメールアドレスも収集出来るようにし、テスト用に一件問い合わせを投稿しておきましょう。
Zapierで新しくZapを作成し、トリガーにGoogle Formsを選択します
作成したFormと回答保存先のスプレッドシートを指定します
STEP2 Find User by Email
次の処理でSlackを選択し「Find User by Email」を選択します。
トリガーにしているGoogle Form(正確には回答先のスプレッドシート)の各列の情報が表示されるので、メールアドレスを選択
STEP3 Send Channel Message
Formの各フィールドの情報とSTEP2で探したID情報を使って良い感じに投稿文面を作り込みます
対応者への通知用のユーザーグループのIDの取得方法は以下参照
テストを行うと問い合わせが投稿されるはずです
STEP4 Create Card
問い合わせを管理するボードや最初にカードが作成されるリスト、カード名などを指定します。
Custom LabelsのところにTs(タイムスタンプ)を入れておきます。もう一つ作る「クローズ連絡」のZapで投稿先のスレッドを判別するために利用します。(Trelloのカード上にスレッドのIDを保持させておくようなものだと考えてください)
URL Attachmentsに「3. Send Channel Message」の「Message Permalink」を指定します(ここにMessage Permalinkを添付しておくと、TrelloのSlack POWER-UPがいい感じに会話内容をカード上に表示してくれます)
テストで正しくカードが作られるか確認します。
STEP5 Send Channel Message
カードのURLをスレッドに返信します
これだけではチャンネルに新規メッセージとして投稿されてしまうので、下の方にあるThreadという設定項目から返信するスレッドを指定します。指定するのはSTEP4で使ったTsと同様です
ここまで正しく設定できていれば、STEP3のテストを実行するとチャンネルに問い合わせおよびスレッドへの返信が行われます。
動作に問題がなければZapをOnにしておきましょう。
クローズ連絡
もう一つZapを作ります
STEP1 Card Moved to List
トリガーとしてTrelloの「Card Moved to List」を選択し、完了したときに移動するリストを選択します(ここでは「完了」というリスト名)
オプションで条件をつけることもできますが、ここではデフォルトの「Any Card」を選択しています。
STEP2 Send Channel Message
投稿文面は何でも構いません
Trelloのラベルに保持しておいたスレッドのタイムスタンプ(Ts)を使って、完了連絡するスレッドを指定します。
Tsを保持する場所として一番ラベルが使い勝手が良さそうだった為ラベルを使っていますが、別のフィールドを使っても良いでしょう。
また、一つ目のZapのSTEP4でもう一つのラベルに問い合わせ者のユーザーIDを保持しておけば、完了連絡時にメンションすることも可能だと思います(問い合わせ者にとってはすでに解決しているので余計な通知を避けるため、敢えてメンションしていません。Slackの設定によってはメンション無しでも通知されることはあります。)
テストすると、クローズ連絡がスレッドに対して行われることが確認できるでしょう。
確認できたら、このZapもOnにしておきましょう。
最終テスト
新しくFormから問い合わせをしてみて、チャンネルへの投稿やカード作成、クローズ連絡がされることを確認できたらOKです。
注意点として、Zapierのプランにもよりますが、即時実行はされません。ユーザーがFormで投稿してから最大で30分くらいかかることもあります。すぐに投稿されないからと言って、Zapを再度いじったりすると処理が止まったりするので気長に待ちましょう。
あとがき
実際のところ今回作ったZapは、GAS, Slack API, Lambda, Trello APIなどを使えば、Zapier無しでも全く同じものを作ることができます。が、1時間くらいあれば作れるという点でZapierはやはり優秀だなと。
いずれコード化することを考えて、あまり複雑なことをしすぎないことや、各サービスのAPIの仕様を見ながら作ると良いでしょう。
「作ってみたけどうまくいかない」などありましたら、DMで連絡ください。
読んで頂いてありがとうございました。