この記事では、CData Arc のWebhook コネクタでkintone からのWebhook を受信する方法についてご紹介します。
CData Arc とは
ファイル転送(MFT)と SaaS データ連携をノーコードで実現できるデータ連携ツールです。ファイル・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。
arc.cdata.com
Webhook コネクタとは
Webhook とは SaaS 等のWeb アプリケーションで何か特定のイベントが実行された際、外部サービスへHTTP で通知する仕組みです。現在では、多くのSaaS でWebhook の機能が提供されています。
CData Arc のWebhook コネクタを利用すると、外部からのメッセージを受け付ける受信用URL(エンドポイント)を生成することができます。このCData Arc の受信用URL(エンドポイント)に向けて、SaaS からメッセージを通知することでSaaS 起動の連携フローをCData Arc で実現することができます。SaaS から通知されるメッセージに含まれるリクエストBODY のJSON/XML データを活用した連携フローもノーコードで作成することができるので、SaaS 側でイベントが発生したタイミングでニアタイムに実行したい連携フローがある場合に効果を発揮します。
なお、メッセージの通知をセキュアに実現する必要があるので、Webhook で送信する機能を提供する多くのSaaS では、通知を受ける側(この記事ではCData Arc)に対して、HTTPSでの通信(待ち受け)を求めています。
Webhook コネクトの詳しい使い方についてはヘルプもあわせてご覧ください。
cdn.arcesb.com
この記事のシナリオ
この記事では「kintone の顧客リストアプリにWebhook を設定して、顧客レコードが追加されたらCData Arc で通知を受信してMySQL へ連携する」シナリオを実現します。
事前準備
kintone のWebhook からリクエストを受信するためには、kintone からHTTPS でアクセスできる必要があります。CData Arc をkintone から接続できる環境に構成してください。
CData Arc のインストール、SSL/TLS 構成についてはこちらの記事を参考にしてください。この記事で用意した環境では、8080番ポートでCData Arc のHTTPS 接続を構成しています。
www.cdatablog.jp
もし検証に利用できるドメインや証明書をお持ちでない方は、こちらの記事も参考にしてください。AWS のサービスだけでCData Arc やその他のCData 製品をHTTPS 化して公開することができます。
https://www.cdata.com/jp/blog/2020-06-04-161713
必要な設定と連携フローの作成
シナリオに必要な設定と連携フローを作成していきます。
CData Arc Webhook コネクタの設定
最初にkintone からの通知を受け取るためのWebhook コネクタをフローキャンバスに配置します。
コネクタをクリックするとコネクタの詳細を設定・確認することができます。Webhook エンドポイント:
として生成されたURL と、サンプルリクエスト
のリクエスト形式をJSON に変更して、サンプルのJSON を手元に控えておきます。
続いて「ユーザー」タブを開きます。「+追加」ボタンでPOST/PUT 権限を付与したユーザーを作成します。認証トークン:
の値はkintone からの通知設定で利用しますので、控えておいてください。「変更を保存」で保存します。
次に「サーバー」タブを開きます。規定では、localhostからのアクセスのみが許可されています。「+追加」をクリックして、IP アドレス:
にSaaS(kintone)のIP アドレスを指定します。*
であらゆるIP アドレスからの接続を許可することも可能です。
kintone(cybozu.com)から接続されるIP アドレスは以下のページを参考にしてください。
/general/ja/admin/outbound_ipaddress.html
CData Arc のWebhook コネクタでは認証が必要です。今回のkintone からの通知では、認証情報をURL に埋め込んで通知するようにしますので、「サーバー」タブの高度な設定に含まれるURL の認証トークンを許可
を有効にします。これにより、「[Webhook エンドポイント:]として生成されたURL
?@authtoken=[認証トークン]」のようにリクエストパラメータに認証トークンを含んだ形でリクエストすることが可能となります。
Webhook コネクタのテスト(Postman からのテスト)
kintone 側の設定に移る前に、WebAPI 開発ツールのPostman を使って、ここまでの設定でCData Arc のWebhook コネクタが正しく受信できるように構成されているかを確認してみます。
www.postman.com
Postman に以下の通り設定してリクエストを送ります。
- Method : POST
- URL : 認証トークン付きのWebhook URL(
[Webhook エンドポイント:]として生成されたURL
?@authtoken=認証トークン
)
- Body : 設定タブ内のサンプルJSON
CData Arc のWebhook コネクタの「アウトプット」タブで送ったJSON データが受信できていれば成功です。
kintone 側の設定
今回のシナリオでは、アプリストアの「顧客リスト」にレコードが追加されたタイミングで追加された顧客情報をWebhook で送信する設定を行います。「アプリの設定」にて「設定」タブ内の「カスタマイズ/サービス連携」から「Webhook」を開きます。
Webhookの設定画面が開きますので、「+」ボタンをクリックします。
Webhook URL にリクエストURL(「https://」を除く)をセットします。
- URL : 認証トークン付きのWebhook URL(
[Webhook エンドポイント:]として生成されたURL
?@authtoken=認証トークン
)
- 「通知を送信する条件」に「レコードの追加」をオンにします。「有効化」にチェックがついていることを確認して保存します。
Webhook が追加されたことを確認して、アプリ設定に戻り、アプリを更新(保存)してください。
Webhook の受信確認
それでは、実際にkintone の顧客リストに顧客レコードを追加してWebhook 経由でCData Arc が受信できるか確認してみます。
顧客リストに顧客を追加します。
CData Arc のWebhook コネクタの「アウトプット」タブでレコードが増えていればWebhoook の受信は成功です。
受信したファイル名をクリックしてkintone から通知されたJSON データを確認してみます。
以下のようにtype=ADD_RECORD
の顧客データが格納されていることを確認できます。
{
"id": "01ed5a45-9e7e-4443-8c1d-a760f024b584",
"type": "ADD_RECORD",
"app": {
"id": "5",
"name": "顧客リスト"
},
"record": {
"備考": {
"type": "MULTI_LINE_TEXT",
"value": ""
},
... snip ...
"部署名": {
"type": "SINGLE_LINE_TEXT",
"value": "□□部"
},
"担当者名": {
"type": "SINGLE_LINE_TEXT",
"value": "△△"
},
"メールアドレス": {
"type": "SINGLE_LINE_TEXT",
"value": "[email protected]"
},
... snip ...
},
"recordTitle": "〇〇株式会社",
"url": "https://[********].cybozu.com/k/5/show#record=2"
}
なお、kintone のWebhook 設定画面ではWebhook の呼び出しのログを参照することができます。
Webhook で受信したJSON データをMySQL に連携する
あとは、Webhook で受信したJSON データをXML に変換して、MySQL へ連携するフローを作成していきます。
MySQL に連携する(MySQL コネクタ)
CData Arc ではフローの起点と終点の設定から開始するのが簡単です。起点となる Webhook コネクタは設定したので、終点となるMySQL コネクタを設定します。MySQL への接続情報をセットして「接続テスト」で確認します。
MySQL への入力となるので、受信した顧客データを追加する「インプットマッピング」を設定します。今回はシンプルにid
をキーに会社名と部署名をUPSERT する設定にしました。
受信したJSON データをXML に変換(JSON コネクタ)
次に、JSON コネクタで、Webhook で受信したJSON データをXML にフォーマット変換をするための設定をします。コネクタの設定は規定のままで、Webhook コネクタからフローをつないでください。
変換結果を確認するために、JSON コネクタの「インプット」タブから「ファイルをアップロード」で先ほどWebhook コネクタで取得したJSON ファイルをアップロードします。
変換結果を「アウトプット」タブからダウンロードします。
JSON コネクタにより、先ほどのJSON データが以下のようなXML に変換されます。
xml version="1.0" encoding="utf-8"
xmlnsjson="http://arc.cdata.com/ns/jsonconnector"
xmlnsxsi="http://www.w3.org/2001/XMLSchema-instance">
01ed5a45-9e7e-4443-8c1d-a760f024b584
ADD_RECORD
5
顧客リスト
<備考>
MULTI_LINE_TEXT
備考>
... snip ...
<部署名>
SINGLE_LINE_TEXT
□□部
部署名>
<担当者名>
SINGLE_LINE_TEXT
△△
担当者名>
<メールアドレス>
SINGLE_LINE_TEXT
[email protected]
メールアドレス>
... snip ...
〇〇株式会社
https://********.cybozu.com/k/5/show#record=2
受信したデータをMySQL へマッピングする(XMLMap コネクタ)
最後に「XMLMap」コンポーネントで、kintone から受信してJSON から変換したXML ファイルと、MySQL の登録するテーブル情報とのマッピングを作成します。JSON コネクタからXMLMap コネクタ、XMLMap コネクタからMySQL コネクタへとフローをつないでください。つないだらワークスペースを保存してください。これでXMLMap コネクタではMySQL へ連携するフォーマットが認識されます。
XMLMap コネクタを開き、JSON コネクタで変換されるXML フォーマットを読み込ませます。
マッピングエディタに、JSON コネクタで変換されるXML フォーマットがソース
に。MySQL コネクタへ連携するフォーマットが宛先
として表示されます。Id と会社名・部署名をマッピングします。
これで「kintone の顧客リストにWebhook を設定して、顧客レコードが追加された時にCData Arc で通知を受信してMySQL へ連携する」ために必要な手順が完了しました。
シナリオの動作を確認する
あらためてkintone の顧客リストから顧客を追加してみます。
MySQL コネクタの「インプット」タブでレコードが追加されれば、作成したフローを通してMySQL へデータが届いたことを確認できます。
実際にMySQL のテーブルをMySQL WorkBench などで確認してみてください。kintone に追加した顧客データが格納されていれば成功です。
さいごに
kintone からWebhook を受信できるようにするまでの環境設定で少し手間が掛かる部分もありますが、CData Arc でWebhook を受信したり、受信したデータを活用すること自体はとても簡単です。Webhook のような仕組みを利用すると連携の自由度が大きく広がります。是非お試しください。
arc.cdata.com
この記事では CData Arc™ 2021 - 21.0.7964
を利用しています。
関連コンテンツ