ソモサン

私rohkiによる活動や読書の記録をつらつらと書くページです

Swagger を使って ChatWork といろんなサービスをつなげてる (条件付き)

ChatWork とほかのサービスを連携させようとする場合、選択肢は Zapier か自前実装かと思ってます。
で、そこでタイトルにある第3の選択。Swagger があればどうにかなる。MS Flow のカスタムコネクタで。

MS Flow

MS Flow は IFTTT や Zapier と同じように、トリガーとアクションを組み合わせて自動化を行うサービスです。
MS らしくどちらかというと企業向けです。

んで、このサービスには カスタムコネクタ というものがあって、なんとサービスの Swagger をくわせるとほかのサービスと同じような使用感でフローに組み込めるようになります。

やったこと

ChatWork 公式での API 定義は RAML でしたが、先人が Swagger をかいてくれていました。
これが Version 1 だったので、今回フォークして Version 2 に更新してます。
やったことは以下

  • message_id の型を string に
  • 認証情報を全体部分としてくくりだして集約
  • form 形式の部分にきちんと入力を定義

ものはこちらです。縦長なのでリンク先の Gist にてご確認をば。
招待系はまだです。ゆるして。

この Swagger の json の方をカスタムコネクタとして組み込むと、MS Flow のほかのサービスと同じように ChatWork を扱えるようになります。
ので、Google カレンダーから予定の通知をするとか、One Drive のファイル変更を受け取って通知をするとかが楽にできます。
あとAPI キーは初回のときだけ入力して、あとで使うときには省略できます。

ホントは手順も書きたかったんですが、Free アカウントだとできませんでした…
1つは行けるって書いてあるのに!

f:id:rohki:20171120233851p:plain

プラン | Microsoft Flow

組織アカウントで読み込んだカスタムコネクタは、共有することができます。
なので、開発知識をもってない方にも使いやすくなります。
あと共有するのはあくまで定義で、例えば今回の場合入力した API キーは共有されません。
そういう意味では一番最初の導入とかは必要かもです。

おわりに

おとなしく Zapier つかえ、ってところもありますが、お金の話とか認証の話とか日本語の話とかいろいろあるので…
今回、ChatWork を例にしましたが、別段 Swagger が定義されていればほかのサービスでもいけます。
入力として WebHook とか HTTP リクエストの受付、中間処理として翻訳やら感情判定もあるのでちょっと遊んでみるとよいかもです。