こんにちは。製品開発部の荒木です。
突然ですが、みなさんは社内のコミニュケーションはどのようなツールで行っていますか?
メールだけで充分だ!というストイックな方もいるかも知れませんが、多くの方はなにかしらのチャットサービスを使用しているのではないでしょうか?
このようなエンタープライズ向けのチャットサービスは数多く存在しますが、中でも注目を集めているのは "Slack" ではないかと思います。
そこで、今回は SkyOnDemand を使って Slack の bot 作成にチャレンジしてみました。
Slack って?
Slack(スラック)は、2013年に公開されたチームコミニュケーションツールです。Slack の特徴は、なんといってもインテグレーションのし易さではないでしょうか?
例えば、Dropbox や GoogleDrive とファイルを共有したり、GitHub や Jenkins とコラボレートしたりすることができます。しかも、このようなインテグレーションが Slack の設定メニューに用意されているため、簡単に導入することができるようです。(執筆時点で70種類以上ありました)
また、API も豊富に用意されているため、既存の設定メニューにないインテグレーションも実現できそうです。
インテグレーション方法の選定
今回、SkyOnDemand から Slack へコメントを投稿する bot を作成しようとしていましたが、インテグレーションの豊富なメニューがゆえに、どの方法を選択するか非常に迷いました・・・
悩んだ結果、おそらく一番簡単な手順になるであろう "Incoming WebHooks" を使用することにしました。
Slack のマニュアル(英語)の内容を要約すると 「この機能は外部からのメッセージ投稿のための WebHook であり、予め Slack に設定を行っておくことで、とてもシンプルなJSONパラメータでリクエストを受け付けることができるよ!試してみよう!」ということのようです。
(他にも Bots ユーザを作成して Slack API の chat.postMessage メソッドをコールするという方法もありますね。こちらも同じくらい簡単かもしれません。)
Step 1 : Slack で Incoming WebHooks を設定をする
Slack のメニューから「Integrations」画面を開きます。「All Services」 - 「DIY Integrations & Customizations」カテゴリにある「Incoming WebHooks」から「Add」を選択します。
次の画面では、投稿したい Channel を選択します。(Channel は部屋とかグループのようなものです) 「Add Incoming WebHooks Integration」をクリックして設定は完了です。
これでフックが作成されました。フックの詳細画面が表示されるので、 WebhookURL をコピーしておきましょう。また、表示名やアイコンなどカスタマイズできるので変更しておきます。
Step 2 : SkyOnDemand で グローバルリソースを作成する
Incoming Webhooks には HTTP witth JSON でリクエストすることになるため、SkyOnDemand の "RESTアダプタ" を使用します。RESTアダプタとは名前の通り、REST形式のHTTPリクエストを送信するためのアダプタです。
まず、RESTアダプタのグローバルリソースを作成します。グローバルリソースには、WebhookURL のホストURLを登録します。
Step 3 : POST実行のアイコンを設定する
いよいよスクリプトの設定です。
フローキャンパスに "POST実行" アイコンを配置します。アイコンプロパティの設定箇所は4つです。簡単ですね。
- 「接続先」に先ほど作成したグローバルリソースを選択
- 「パス」に WebhookURL のホスト以降のパスを入力
- 「リクエスト設定」の「データ形式」に "JSON" を選択
- 「レスポンス設定」の「データ形式」に "その他のデータ形式" を選択
Step 4 : マッパーで入力データを設定する
Incoming Webhooks のリクエストボディ(JSON)はとてもシンプルで、 "text" をキーとし値にコメントテキストを持つオブジェクトがひとつだけです。
{ "text" : "テストです。\nうまくコメントできるかな?" }
では SkyOnDemand で設定していきましょう。
"マッピング" アイコンを配置して、先ほど設定した POST実行アイコンの入力データに指定します。
マッピング画面では次のように出力スキーマを作成し、文字列定数のロジックアイコンを使用してコメントテキストを入力します。("type" には各JSONオブジェクトの属性を指定します。指定した内容に従ってアダプタがJSONの要素を構築してくれます。)
実行して結果を確認してみる
では、完成したスクリプトを実行して Slack にコメントされるか確認してみましょう。
おお! 成功していますね!
Slack の環境を構築するところからはじめて、30分ほどで出来てしまいました。(ほぼ Slack の英語のマニュアルに苦戦した時間です)
SkyOnDemand では今回のようにチャットサービスとの連携も行うことができます。例えば、次のようなシーンでの用途があるでしょう。
- バッチ処理によって更新されたデータの結果をコメントする
- 商談やケースなどのデータを監視し、特定の条件にマッチするときにアラートをコメントする
- 重要なスケジュールやToDoについて監視し、リマインドをコメントする
- 予実や目標値などのレポーティングをして結果をコメントする
- ユーザがコメントした指示内容を取得して連携処理を実行する
- ユーザのコメントを集積してレポートする
SkyOnDemand で連携できるのはデータだけではありません。このようなコミニュケーションツールとの連携によって、業務の効率化に繋がると思います。
ブログでは、今後も様々なアプリケーションやツールとの連携に挑戦していきたいと思います。