make SaaS

make 基本操作編 機能紹介:Webhooks

この記事は「make Advent Calendar 2024」6日目の記事です。

このアドベントカレンダーについて

このアドベントカレンダーは25日間でIPaaS製品の「make」について使い方や、実践を学べる連続ブログ企画です。

おかしん」「ばるす」「たにあん」の3名がリレー形式でお届けします。

25日間のスケジュールは以下の通りです。

日付内容担当
12/1話題のIPaaS製品「make」とはおかしん
12/2makeで作ってみたScenario紹介ばるす
12/3make 基本操作編 機能紹介:Organizationたにあん
12/4make 基本操作編 機能紹介:Scenario、Templateおかしん
12/5make 基本操作編 機能紹介:Connectionsばるす
12/6make 基本操作編 機能紹介:Webhooksたにあん
12/7make 基本操作編 機能紹介:DataStores、DataStructuresおかしん
12/8make 基本操作編 機能紹介:Devicesばるす
12/9make 基本操作編 機能紹介:Functionsたにあん
12/10make 基本操作編 機能紹介:CustomAppsおかしん
12/11make 基本操作編 機能紹介:Flow Control,Tools,Text parserばるす
12/12make ドキュメント動線の話:ResourceHubたにあん
12/13make 検証:Make Bridgeおかしん
12/14make 検証:Make REST APIばるす
12/15make 検証:AI Searchたにあん
12/16make Community Hub:Overviewおかしん
12/17make Community Hub:Academy Courses,Blog Articlesばるす
12/18make Community Hub:Showcase,CustomAppsたにあん
12/19makeの管理運用の話:Github連携おかしん
12/20makeの管理運用の話:実行ログと再実行と停止中リクエスト滞留ばるす
12/21makeの管理運用の話:Connection権限管理たにあん
12/22makeで作ってみた事例:(未定)おかしん
12/23makeで作ってみた事例:(未定)ばるす
12/24makeで作ってみた事例:(未定)たにあん
12/25makeの総論を語るばるす

そもそもWebhookってなに?

はじめに、4日目の記事Scenariosとの関連性が高いため、先にご覧いただければと思います。

さて、Webhookとは、Webアプリケーションから他のサービスへリアルタイムで情報を送信するイベント駆動型の機能で、HTTP経由でサービスに対してデータを送信することができます。

例えば、ユーザーが特定のアプリケーションに新しいファイルをアップロードした時、その情報をWebhookを通じて他のアプリケーションへ即座に送信できます。Webhookを受信したアプリケーションは、その情報に基づいて自動的に処理を実行します。このように、Webhookを活用することで、異なるサービス間の連携がスムーズになります。

とりあえずWebhook触ってみた

今回はWebhookに注目したいのでとってもシンプルな構成でいきます。

流れとしては以下のような動作をするよう作成しています。

  1. NotionのデータベースオートメーションによってWebhookを送信(makeではなくNotionで設定が必要)
  2. 「Webhook」Moduleで受信
  3. 取得したページの情報を元に、Google Workspaceにユーザーを作成

また、今回はNotionのデータベースに入社予定の方の「氏名」と「メールアドレス」が記載されている想定で作成しました。

操作と画面の説明

Webhook Moduleの追加

ここから具体的な設定内容を見ていきます。

新しいScenarioを作成し、「Custom Webhook」を選択します。追加されたModuleを選択すると以下のような画面になるので、「Create a webhook」を選択します。

「Show advanced settings」を有効化し、「Webhook name」を入力、「Get request headers」「Get request HTTP method」をYesに変更します。「Save」を選択し保存します。

以下の画面が表示されたら、「Copy address to clipboard」を選択します。次項のNotion上の設定で使用します。

Notionとの接続

Notionに移動し、データベース及びデータベースオートメーションのWebhookを設定します。詳細についてはNotionのドキュメントをご覧ください。

今回使用したNotionデータベース。

設定したデータベースオートメーション(makeでコピーしたURLを使います)。

Webhookの接続確認

ここまで設定できたらNotionのデータベースにページを追加し諸々の値を入力してみます。上述の設定では簡易的にWebhookを使うことを目指しているため、実用性に欠けますがemailAddress以外を入力し、最後にemailAddressを入力するとWebhookが送信されます。

正常に送信され、makeがWebhookを受信できると「Successfully determined」と表示されますので、「OK」を選択します。

さらに「Run once」を選択してから、再度NotionのデータベースにてWebhookが送信されるように更新します。すると、以下のように受信したデータが表示されます。OUTPUTを開いていくとどのような構造で受信しているか確認できます。

Google Workspace Modulesの追加

作成したCustom Webhooksの先にGoogle Workspaceの「Create a User」Moduleを追加します。

Google Workspaceの管理者アカウントでサインインして認証し、アカウント作成に必要な情報を入力します。Webhookで取得されたデータの構造を参照して、ドラッグ&ドロップで設定できます。Webhookの接続確認までの操作順に多少の癖を感じますが、Webhookさえ受信できてしまえば、あとは視覚的にも分かりやすいと思います。

入力できたら「OK」を選択します。

実行タイミングの設定

「Immediately as data arrives」をONにして、「OK」を選択します。もし画面左上にキューに関する表示がされたら、今回は「Delete old data」で削除して大丈夫です。設定できたらScenarioを保存します。

左上の「←」から画面を1つ戻り、Scenarioを有効化します。

実行結果の確認

Scenarioが有効化できたらNotionのデータベースにWebhookが発火されるように値を入力します。

makeの画面に戻り、左側メニューのWebhooksから作成したWebhookを選択し、「Logs」タブから実行された履歴を確認できます。

対象のLogのDetailsを選択するとWebhookで受信した

また、実際にGoogle Workspaceのログからも確認できます。

その他仕様

実行タイミング

Scenarioを実行する場合、即時実行(Instant)と定期実行(Scheduling)があり、Webhookは前者に該当します。つまり、Webhookを受信したら即実行になります。

今回作成したScenarioでは即時実行で作動しています。

Schedulingで設定している場合は、Webhook Modulesの設定で「Maximum number of results」が定期実行の際にいくつのデータを実行させるか、上限として機能します。

Webhookの受信

makeが受け取るWebhookは、外部のアプリケーションからはもちろんのこと、make内の別のシナリオを呼び出すこともできます。

また、makeにはWebhookを受信してから呼び出しが実行されない場合、キューに処理が保存されます。Enterpriseの場合、10,000件まで保存できます。画面はこんな感じです。Detailsの画面ではWebhookで送信されたデータを確認できます。こちらの内容はまた別の機会に取り上げたいと思います。

ちなみに、WebhookのRate Limitは「30回/s」です。

ログの保存期間

Enterpriseプラン以外は3日間、Enterpriseプランは30日間です。

Webhookの設定

設定説明
IP restrictionsホワイトリストでWebhookリクエストを受け取るIPアドレスを制限できます。
Data Structure新規で作成したData Structureもしくは、既存のData Structureのいずれかを用いて、データ構造を検証できます。
Get request headersWebhookのリクエストヘッダーを取得できます。詳細は後述します。
Get request HTTP methodWebhookのリクエストからHTTPメソッドを抽出して、Scenario内で利用することができます。
JSON pass-throughJSON Payloadをparseせずに、後続のModuleにそのまま渡します。

今回の設定の中では「Get request headers」を有効化していましたが、その場合、Headers[]の中から特定の値をget()map()関数で抽出することができます。関数の説明はmakeのScenarioの作成画面上で表示されるのでご安心を。

エラー時の処理

エラーが発生した場合、Scenarioのトリガーによって挙動が異なります。

  1. トリガーが「Instant」の場合、すぐに停止されて実行されなくなります。
  2. トリガーが「Scheduled」の場合、3回失敗したのちに自動で停止され、実行されなくなります。

停止された場合、キューに保存されていた処理も実行されなくなります。他のiPaaS製品でも失敗すれば停止されることがほとんどだと思いますが、いずれにしても失敗した場合は通知され迅速に対応できる仕組みをmake上で作っておけば問題ないと思います。

なお、実行結果のログはScenariosから対象のScenarioを選択し、「HISTORY」タブから確認できます。

ErrorのDetails画面。

Custom Mailhook

この機能は「Custom Mailhook」というModuleを作成することで発行されるメールアドレスに対してメールを送ることでScenarioを発火することができます。

詳細については以下のドキュメントをご覧ください。GIF付きでわかりやすくまとめられています。

おわり

makeのWebhookのページは他の機能と比較しても充実しており、ドキュメントを読むだけでも十分に理解が進むと思います。結構な分量があり、本記事でも取り上げられていない仕様もありますので気になる方はぜひ一度目を通してみてください。

その上で実際に触ってみていただけると、Scenario作成の操作感や設定方法の勘所みたいなものを掴めると思います。

参考ページ

たにあん

2024年12月運用支援サービス(仮)のメンバーとして入社。
とりあえずやってみるをモットーにおしごとをしています。
好きなものは甘いもの。
嫌いなものは甘いものを食べていない時間。