SPIRALでWebhook

8月15日にリリースされたスパイラル 最新バージョン1.12.5。新機能「スパイラルPHP管理」のリリースをはじめ、28件の機能改善と38件の不具合改修が行われました。

今回はこの機能改善のうちの一つ「JSON形式のデータ受取」についてご紹介したいと思います。外部サービスとスパイラルの連携をお考えの方にはきっとお役立ていただけると思います。是非ご覧ください。

JSON形式データを受け取れるようになりました

今回ご紹介する機能改善は、以下「カスタムプログラム」に関する改善です。

【カスタムプログラム】
オープンAPIでJSON形式のデータを受け取ることができるよう改善いたします。
これにより、JSON形式のパラメータをリクエストできるWebhook機能を備えた外部サービス上で、イベント発生と同時にスパイラルへ登録することができます。
SPIRAL アップデート情報サイト ver1.12.5 機能改善紹介ページより抜粋)

わかる人にはわかる、わからない人には「なんのこっちゃ?」の内容かもしれません(筆者は後者でした…)。この改善、どうやら以下のようなイメージになるようです。

以前はスパイラルを起点として、外部サービスへJSON形式のデータをAPI経由で渡して連携することは可能でしたが、外部サービスを起点とした場合に、スパイラルへJSON形式のデータを送ることができませんでした。例えばチャットツール「Slack」との連携で考えてみます。

上図のように、スパイラルのカスタムプログラムで1日1回、問合せDBを参照して、未対応の問合せがあった場合にはその問合せIDをSlackへ通知する、という仕組みは今までも実現できました。

Slackのプラグイン「Incoming WebHooks」を利用することで、スパイラルでイベントが発生(この場合3日経過した未対応の問合せがあったとき)することをトリガにして、Slackに通知を飛ばします。その際、問合せIDというデータをJSON形式で渡すことで、Slackのメッセージに表示することができます。

しかしこの逆、つまりSlack上で誰かが何かメッセージを発信したとして、その内容をもとにスパイラル内のカスタムプログラムを動作させることはできませんでした。
(JSON形式のデータを必要としない、単純にプログラムを動かすだけならオープンAPIを利用することで可能でしたが。)

上図のように、例えば山田愛子さんがSlackから問合せをしたいと言っても、スパイラルでは誰が何を言っているのか、解釈することができませんでした。

これがスパイラルver1.12.5では、外部サービスからJSON形式のデータを受け取れるようになったのです。

つまり、スパイラルから外部サービスへはもちろん、外部サービスからスパイラルへJSON形式のデータの受け渡しが可能になったのです。

Slackの場合はプラグイン「Outgoing WebHooks」を利用することで、問合せした人の名前、日時をJSON形式のデータにしてスパイラルのカスタムプログラムに送信、スパイラルは受け取ったデータを問合せDBに登録する、という仕組みを構築することができるようになりました。

ここではSlackを例にしましたが、もちろん他のさまざまなサービスとの連携が可能です。

このように、イベントが発生したアプリケーションから、別のアプリケーションにリアルタイムで情報を提供し処理を実行する仕組みがWebhookと呼ばれるものです。今まで一方通行(スパイラルから別アプリケーション)でしかできなかったものが、今回の改善によって双方向に連携できるようになったということですね。

いかがでしたでしょうか。

なんだかまたさらに、スパイラルでできることが大きく広がるような、そんな機能改善をご紹介しました。

筆者もまだまだ勉強中の身でありますので、また良い連携事例など習得次第、今後もどんどんご紹介していきたいと思います。