Movable Type DataAPIを利用したSlackボットを作ってみてコケた話

Screen Shot 2018-12-22 at 23.17.40.png

「過去に同じようなこと行って記事にしたけど、あの記事、どこだっけ…」ということ、ないでしょうか。どこに書いてあるかわからなくて、結果としてブログにアクセスして、検索…というパターンが多いと思います。

個人だと、それでも良いのですが、規模が大きくなるに連れて、知識(Knowledge)として、残しているパターンが多くなると思います。

Microsoft Azure Logic AppsとMovable TypeのDataAPIを利用してボットを作ってみた感想をざっくり忘れないうちに記載します。

Microsoft Azure Logic Appsとは

簡単に言うと、業務フローを効率化するためのツール、という認識で大丈夫だと思います。類似のものには、ZapierやIFTTTなどが挙げられます。MovableType.netでは、IFTTT連携などもありますよね。

どのような流れで構築したのか

  • Slackから特定のグループ(ORユーザ)宛にメッセージを投稿
  • メッセージ投稿後、Logic Appsに対してHTTPリクエストをSlackから実行。投稿内容を元にMovable TypeのDataAPIに対して、検索のリクエストを実行(HTTPコネクタ)
  • 返答内容を元にSlackに返答を行う

なんとなく簡単そうですね!こういうフローを考えるのが一番むずかしい…というのはあるかもしれませんが。。。

実際に構築してみて

Slackの取得など、全体的な流れは以下の記事を参考にしました。

てすとぶろぐ: Slack Event API を利用した Bot を LogicFlow で作成する

こんな感じのフローをサクッと構築してみました。(※ 条件分岐など本来はまだやらないといけない模様)

Screen Shot 2018-12-22 at 23.28.54.png

このフローで実際に発生した問題を以下に記載します。

  • Slack側からURLの信憑性などを求められるため、チェックするための動作を含める必要がある
  • Slackボットが発言した内容かどうか条件を分けるのが難しい(最初はbotかどうかで判別しようとしてた)
  • Slack側でメッセージをどうするか、ということを判別することが意外と面倒だった

また、検索を行ったときのDataAPIの返答が配列で返答されることもあり、配列で返答された内容をテキスト形式で変換する処理を入れるのが意外と大変で、冒頭にもあったように、1件の取得で止めているというのが現状です。

Screen Shot 2018-12-22 at 23.17.40.png

まとめ

ノンプログラミングで簡単にサクッと構築できると思って、このネタにしてみました。が、意外とフローを考える他にも、Slack側の仕様など下調べをしていないこともあり、結果としてはコケた話になってしまいました。

年末年始にみかんを片手に今回の問題を解決したいと思います。ちなみに、この記事はMovable Type Advent Calendar 22日目の記事です。