はじめに
コラボフローには3つのカスタマイズ手法があります。
今回は、コラボフローに用意されている”Webhook”の使い方について書いていこうと思います。
Webhookとは
webhookとREST APIの違いについて
- REST APIとWebhookは共通の目的を持っています。
- 両者は異なるシステム間で情報を共有し、同期させるために使用されます。
- Webhookは特定のイベントが発生した際に実行されます。
- 一方、REST APIはリクエストを送信し、その後応答を受け取る方式です。
REST APIの例
- 特定の商品を購入したい場合、毎回店舗に電話して在庫状況を確認する。
毎回電話することは、お互いの時間を無駄に浪費してしまい、効率が悪いですね。
webhookの例
- 商品が店舗に到着したら、店舗からあなたに通知の電話をもらう。
REST APIと異なり、業務が効率的に行えます。
webhookはアクションごとにデータを飛ばす機能!
Webhookはコラボフローで何かのアクションが発生する度に、指定の宛先にデータを飛ばす機能です。
コラボフローで発生したイベントに応じて処理を実行
認証の通過&データを加工が必要
ただし相手にもセキュリティチェックがあり、受け入れるデータ形式も決まっているので、多くの場合はそのままでは投げたデータを受け付けてもらえません。
Webhookと“中継サービス“
便利な中継サービス
そのため多くの場合は「中継サービス」を利用したり「中継プログラム」を作る事で、相手に合わせた認証処理やデータ形式の変換を行ってシステム間の連携を実現します。
中継サービスにはさまざまな種類があります。クラウド運用できる中継サービスは「iPaaS」と呼ばれており、代表的なものとして次のようなサービスがあります。
- Microsoft Power Automate(Microsoft Corporation)
- DataSpider Cloud(セゾン情報システムズ)
- Asteria Warp(アステリア株式会社)
- Claris Connect(Claris International Inc.)
- Zapier(Zapier Inc.)
- Yoom
利用例
なぜWebhookが必要なのか?
- JavaScript APIを使って承認、却下、差し戻しなどのアクションごとに何らかの処理を行う方法も考えられます。
- ただしJavaScriptは「操作者のPCで動く」ものなので、承認ボタンを押した後、完了するまでにブラウザーを閉じると動かないといった“不安定さ”があります。
- また、接続先の認証情報をブラウザー側で利用せざるを得ず、セキュリティ面での課題が残ることも多々あります。
- Webhookであればユーザーの環境による不安定さを回避し、安定して外部サービスにデータを送ることができます。
Webhook連携例
Sharepoint連携
経路のWebhook通知を利用することで、外部のサービスと連携することができます。
今回は、コラボフローの稟議書の情報をPower Automateで中継して、Sharepointのリストに登録してみたいと思います。
- コラボフローで稟議書が決裁される
- コラボフローからPower AutomateにWebhook通知される
- Power Automateがコラボフローの稟議情報データをSharepointのリストに登録する。
実装してみる
コラボフローのフォームを作成
連携にあたり、あらかじめ次のような稟議書フォームを作成しました。同様に経路もシンプルなものを作成済みです。この稟議書がコラボフローで決裁されると、稟議情報データがSharepointのリストに表示されるように設定していきます。
Power Automateの設定
次にPower Automateの設定を行います。設定の大まかな流れは次の通りです。
- コラボフローのWebhookで送られたデータをPower Automateが受信
- コラボフローの稟議情報データをPower Automateが取得
- Power Automateが取得した稟議情報データをSharepointのリストに登録
Power Automateにログインし、左メニューの「作成」をクリックすると、フローを作成するための方法を選択する画面が表示されますので「インスタントクラウドフロー」を選択します。
「このフローをトリガーする方法を選択します」から「HTTP要求の受信時」を選択し、「作成」をクリックします。
フロー作成の画面が表示されますので「新しいステップ」をクリックします。
アクションを選択する画面が表示されるので、SharePointの「項目の作成」アクションを選択します。
「項目の作成」アクションでは、コラボフローのWebhookデータに含まれる、申請書の基本情報やフォームの入力情報をPower AutomateのtriggerBody()関数を使って取得しています。
@{triggerBody()['contents']['fidxxxx']['value']}
※パーツのfidを「fidxxxx」としています。この部分は連携させたいパーツの実際のfidに読み替えてください。
※今回は指定したキーが存在しない場合はエラーとしたいので、疑問符演算子は使用していません。
以上を踏まえて設定値を入力した「項目の作成」アクションが下記となります。
- サイトとリストを選択すると、リスト内のフィールドが表示されるので、登録したいデータをセットするだけの簡単な設定です。
- 選択可能なサイトやリストはログイン情報を元に自動的に呼び出されます。
最後に、コラボフローからのWebhook送信先となる「HTTP 要求の受信時」アイコンを開いて、「HTTP POSTのURL」をコピーし、記録しておきます。
これでPower Automateの設定は完了です。
コラボフローWebhookの設定
次にコラボフロー側のWebhook設定を行います。
- あらかじめ用意しておいた「稟議書」の経路を開き「Webhook」タブを選択します。
- 「新規登録」ボタンをクリックします。
- Webhookの設定画面が表示されますので、(1)Webhook名に任意の名前を入力し、(2)通知先のWebhook URLにPower Automateで控えておいた「HTTP POSTのURL」を入力します。通知条件には「申請書の経路終了時」を指定して、最後に「保存」ボタンをクリックして設定を保存します。
以上で、全ての設定が完了しました。
参考:経路のWebhook設定
実際の動作
それでは稟議書を申請してみます。
稟議書にデータを入力して申請を行い、承認を行って稟議書を「決裁」の状態にします。
決裁後にSharePointを確認すると、この通り指定したリストに稟議情報が登録されている事を確認できました。
補足
- Webhookはクラウド版のみご利用いただけます。
- コラボフローはWebhook通知の実行操作をログで確認することができます。Webhook通知の実行で記録される監査ログから詳細をご確認ください。
ログの例
※Webhookを使用してサービス間の連携を行う場合、コラボフローからのWebhook通知が成功している場合でも、中継するプログラムやサービス(iPaaSなど)でエラーが発生している可能性があります。
また、連携先のアプリケーションに問題があるかもしれません。
エラーを追跡する際には、具体的にエラーがどこで発生しているのかを特定し、問題の原因を詳細に切り分ける必要がありますので、ご注意ください。
さいごに
以上のようにWebhookを利用する事で、簡単なステップでSharePointに決裁情報を登録する事ができました。
今回はSharePointとの連携を行いましたが、Webhookを応用すると他のさまざまなサービスと連携を行うことができるので、興味のある方は、ぜひ他の連携記事もチェックしてみてください。