Webhook コネクタを利用して公開エンドポイントを作成する方法


CData Arc は、Web リクエストを介して関連データを送信するシステムと統合するための柔軟なWebhook トリガーをサポートしています。Webhook コネクタは、認証された特定のグループのユーザーのみにアクセス可能なパブリックエンドポイントを公開します。


Webhook エンドポイント

Arc フロー内の各Webhook コネクタは、コネクタID(コネクタの名称)に基づいて個別のエンドポイントを公開します。Webhook コネクタのエンドポイントは、次の構文規則に従います:

http[s]://:/connector/[workspace]//webhook.rsb

Note:デフォルトのワークスペース内のWebhook は、エンドポイントURL の「[workspace]」要素を含みません。

このエンドポイントにPOST されたデータは、Webhook コネクタをトリガーし、Web リクエストの内容に基づいて出力ファイルを生成します。構成されたフローの一部にWebhook コネクタが含まれる場合、出力ファイルはフローを通して渡され、続くコネクタがほかのファイルと同様にデータを処理します。

Webhook URL へのPOST は、Arc フローの他の要素を呼び出すための単純なトリガーとして使用されます(そのため、Web リクエスト自体には関連データが含まれない可能性があります)。もしくは、アプリケーションによって処理される特定のデータのエントリポイントとして使用することも可能です。

認証

それぞれのWebhook コネクタは、固有の認証されたユーザーのリストをコネクタ設定パネルの「ユーザー」タブに保持します。Note:このユーザーリストは、「管理API」またはアプリケーションで公開されているその他のエンドポイントへのアクセスを許可されているユーザーとは別のものです。

各ユーザーには認証トークンが付与されます。認証トークンは、Basic、またはDigest 認証のパスワードとして使用することも、Web リクエスト内の次のヘッダーの値として設定することもできます。

x-arcesb-authtoken:myAuthTokenValue

Web リクエストコンテンツ

Webhook コネクタは、アプリケーションが受信するWeb リクエストに対して厳密なコンテンツ制限を課しません。これにより、Arc は、Web リクエストを介して実行をトリガーする任意のシステムと確実に統合することができます。

Webhook コネクタを介して受信したリクエストは通常、二つのカテゴリに分類されます。

  • Webhook が、独立したフローの実行をトリガーするために呼び出される場合。
  • Webhook が、処理とフローへの統合が必要なデータを受信する場合。

トリガーとしてのWebhook

Webhook コネクタは、Web リクエストを受信するたびに対応する出力ファイルを書き込み、そのファイルをArc フローにプッシュします。受信リクエスト内のコンテンツに関係なく、すべての受信メッセージは、Webhook コネクタが接続されているフローのトリガーとして機能します。

Webhook コネクタは、受信Web リクエストのcontent-type を、設定タブのサンプルリクエスト設定(XML またはJSON)に照らして検証します。Web リクエストのトリガーは、適切なcontent-type ヘッダー(application/xml またはapplication/json)を使用する必要があります。

Webhook コネクタが、content-type以外で受信するWeb リクエストのコンテンツの検証を強制することはありません。そのため、受信データの処理や別部分への統合が必要ない場合には、サンプルリクエストセクションの残りの部分を無視しても問題ありません。

受信データの処理

Webhook コネクタ設定のサンプルリクエストセクションを使用して、受信するWeb リクエストデータの構造をモデル化できます。前のセクションで説明したように、Webhook コネクタはこのサンプルリクエストに対して厳密な検証を実行しませんが、このサンプルリクエスト構造によって、Arc フローにデータを受信した後で、それを簡単に処理することができます。

Web リクエストデータをフローに統合するには、サンプルリクエストは、XML Map コネクタと組み合わせて使用してください。ロジックは以下の通りです。

  • サンプルリクエストは、Webhook を介して受信するデータを表すJSON またはXML 構造をモデル化します。
  • Arc フローの残りの部分と統合するには、このデータをほかの構造に変換する必要があります。
  • XML Map コネクタは、高機能なビジュアルデザイナを介してこの構造マッピングを実行します。
  • XML Map コネクタは、サンプルリクエスト構造を読みとり、マッピングの開始点(つまりソースファイル)として使用することができます。
  • 任意のXML ファイルをターゲットXML 構造(つまりデスティネーションファイル)としてアップロードできます。
  • 次にXML Map コネクタは、Webhook リクエストのフォーマットをArc に必要なフォーマットにマッピングします。

つまりサンプルリクエストは、受信データをフローに合わせたフォーマットにマッピングする方法を、Arc が認識するのに役立ちます。

サンプルリクエストフォーマットがJSON に設定されている場合、Webhook コネクタがリクエストの内部モデルを生成する際、フォーマットをXML に自動変換することに注意してください。したがって、リクエストがJSON で送られる時もXML Map コネクタでWebhook コネクタを使用するために追加の手順は必要ありません。

データベースへの統合

例えば、HubSpot のようなバックエンドシステムがレコードの追加やアップデートに際してリアルタイムで通知を送信するとします。これらの通知は、Webhook を介して受信する必要があり、この通知のデータはMySQL データベースにプッシュする必要があります。データベースへのINSERT / UPDATE(UPSERT)は、Arc 内でXML としてモデル化されているため、受信リクエストの構造をUPSERT のXML 構造に変換する必要があります。

これを実現するArc フローは、Webhook -> XML Map -> MySQL というフローになります。

MySQL データベースへのUPSERT は、(MySQL コネクタで)適切なデータベーステーブルの入力マッピングを作成することにより、XML としてモデル化されます。Webhook 構造は、Webhook コネクタのサンプルリクエストフィールドに例となるリクエストを指定することにより、XML としてモデル化されます。XML Map コネクタは、これらのモデルを読み取り、ソースファイルデスティネーションファイルのテンプレート候補として公開します。

そしてXML Map コネクタのビジュアルデザイナには、両方の構造が表示され、要素をソースからデスティネーションにドラッグアンドドロップしてマッピング関係を確立することができます。

完了すると、Webhook を介して受信したデータは自動的にUPSERT にマッピングされ、MySQL データベースは、通知を送信するバックエンドシステムとの同期を維持します。




Ready to get started?

Use CData Arc's free 30-day trial to start building your own custom workflows today:

Download Now