LINE WORKS のトーク情報については「監査APIを利用して過去のトークログを連携する」シナリオを、こちら でご紹介しました。この記事ではトークをやりとりした時点でkintone へ連携するように、LINE WORKS のトークBot からのCallback メッセージをCData Arc で受信してkintone にノーコードで連携する方法をご紹介します。
この記事は LINE WORKS Advent Calendar 2021、7日目の記事です。
qiita.com
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
この記事のシナリオ
この記事では「LINE WORKS のトークBot からのCallback メッセージをCData Arc で受信してkintone に連携する」シナリオを実現します。
処理の流れは以下のようになります。
LINE WORKS のトークBot からのCallback をCData Arc のWebhook で受信する
Webhook で受信したトーク内容を取得する
CData(kintone)コネクタで受信したLINE WORKS のトーク内容をkintoneへ登録する
事前準備
製品のインストール
このシナリオを試すには、以下の製品が必要です。いずれも30日の評価ライセンスをご提供していますので、お気軽に試してみてください。
トークBot からのCallback メッセージを受信するためには、LINEWORKS のサーバーからHTTPS でアクセスできる必要があります。CData Arc をインターネットから接続できる環境に構成してください。
CData Arc とCData Driver のインストール、SSL/TLS 構成についてはこちらの記事を参考にしてください。この記事ではWindows 環境を対象に記載しています。この記事で用意した環境では、8080番ポートでCData Arc のHTTPS 接続を構成しています。
www.cdatablog.jp
もし検証に利用できるドメインや証明書をお持ちでない方は、こちらの記事も参考にしてください。AWS のサービスだけでCData Arc やその他のCData 製品をHTTPS 化して公開することができます。
https://www.cdata.com/jp/blog/2020-06-04-161713
kintone の構成
今回は、kintone にトーク内容を保存する以下のようなアプリを作成しました。
フィールド名(項目名)
フィールドタイプ
送信者ID
文字列(1行)
トークルームID
文字列(1行)
トークメッセージ
文字列(複数行)
作成日時
作成日時
必要な設定と連携フローの作成
シナリオに必要な設定と連携フローを作成していきます。
CData Arc Webhook コネクタの設定
最初にLINE WORKS からのCallback メッセージを受け取るためのWebhook コネクタをフローキャンバスに配置します。
コネクタをクリックするとコネクタの詳細を設定・確認することができます。Webhook エンドポイント:
として生成されたURL と、サンプルリクエスト
のリクエスト形式をJSON に変更して、サンプルのJSON を手元に控えておきます。
続いて「ユーザー」タブを開きます。「+追加」ボタンでPOST/PUT 権限を付与したユーザーを作成します。認証トークン:
の値はLINE WORKS トークBot のCallback URL 設定で利用しますので、控えておいてください。「変更を保存」で保存します。
次に「サーバー」タブを開きます。規定では、localhostからのアクセスのみが許可されています。「+追加」をクリックして、IP アドレス:
にSaaS(LINE WORKS)のIP アドレスを指定します。*
であらゆるIP アドレスからの接続を許可することも可能です。LINE WORKS ではメッセージ送信サーバーのIP アドレスは固定されていませんので、今回は *
で設定しました。
CData Arc のWebhook コネクタでは認証が必要です。今回のLINE WORKS からCallback メッセージでリクエストするときは、認証情報をURL に埋め込んで通知するようにしますので、「サーバー」タブの高度な設定に含まれるURL の認証トークンを許可
を有効にします。これにより、「[Webhook エンドポイント:]として生成されたURL
?@authtoken=[認証トークン] 」のようにリクエストパラメータに認証トークンを含んだ形でリクエストすることが可能となります。
Webhook コネクタのテスト(Postman からのテスト)
LINE WORKS 側の設定に移る前に、WebAPI 開発ツールのPostman を使って、ここまでの設定でCData Arc のWebhook コネクタが正しく受信できるように構成されているかを確認してみます。
www.postman.com
Postman に以下の通り設定してリクエストを送ります。
Method : POST
URL : 認証トークン付きのWebhook URL([Webhook エンドポイント:]として生成されたURL
?@authtoken=認証トークン
)
Body : 設定タブ内のサンプルJSON
CData Arc のWebhook コネクタの「アウトプット」タブで送ったJSON データが受信できていれば成功です。
LINE WORKS でのトークBot 作成
次にLINE WORKS 側でトークBot を作成します。
LINE WORKS Developer Console を管理者アカウントで開き、「Bot」から「登録」を選択して「Bot 登録」に進みます。
「Bot 名」「説明」を入力して「Callback URL」を「On」にして [Webhook エンドポイント:]として生成されたURL
?@authtoken=認証トークン
を設定します。今回は「複数人のトークルームに招待可」として、どのトークルームでもこのBot を利用可能としました。
管理者アカウントでLINE WORKS Admin 画面を開き、「サービス」「Bot」から「Bot 追加」を選択します。
作成したBot を選択して「追加」します。
追加したBot を選択し「公開設定」にして保存します。これでトークBot の準備は完了です。
Webhook の受信確認
それでは、実際にトークBot を招待したルームでトークして、トークBot からのCallback メッセージをCData Arc が受信できるか確認してみます。
LINE WORKSのトークルームに作成したBot を招待して、トークします。
CData Arc のWebhook コネクタの「アウトプット」タブでレコードが増えていればWebhoook の受信は成功です。
受信したファイル名をクリックしてトークBot からCallback 通知されたJSON データを確認してみます。
以下のように編集したデータが格納されていることを確認できます。
{
"type ": "message ",
"source ": {
"accountId ": "demo.taro@****** ",
"roomId ": "120956074 "
} ,
"createdTime ": 1638097095916 ,
"content ": {
"type ": "text ",
"text ": "テストメッセージ "
}
}
LINE WORKS のCallback でのメッセージ受信について、詳しくは(こちら)https://developers.worksmobile.com/jp/document/1005009?lang=ja を参照してください。
Webhook で受信したJSON データをkintone に連携する
あとは、トークBot からのCallback メッセージで受信したJSON データをXML に変換して、kintone へ連携するフローを作成していきます。
kintone に連携する(CData(kintone)コネクタ)
CData Arc ではフローの起点と終点の設定から開始するのが簡単です。起点となる Webhook コネクタは設定したので、終点となるCData(kintone)コネクタを設定します。
コネクタをクリックしてコネクタの詳細を開き、kintone を選択して、kintone への接続と認証を進めてください。
kintone へデータ入力(インプット)するために、インプットマッピングを設定します。
このシナリオでは、シンプルに受信したトーク内容をINSERT していきます。
受信したJSON データをXML に変換(JSON コネクタ)
次に、JSON コネクタで、Webhook で受信したJSON データをXML にフォーマット変換をするための設定をします。コネクタの設定は規定のままで、Webhook コネクタからフローをつないでください。
変換結果を確認するために、JSON コネクタの「インプット」タブから「ファイルをアップロード」で先ほどWebhook コネクタで取得したJSON ファイルをアップロードします。
変換結果を「アウトプット」タブからダウンロードします。
JSON コネクタにより、先ほどのJSON データが以下のようなXML に変換されます。
xml version ="1.0" encoding ="utf-8"
xmlns json ="http://arc.cdata.com/ns/jsonconnector"
xmlns xsi ="http://www.w3.org/2001/XMLSchema-instance" >
message
demo.taro@******
120956074
1638097095916
text
テストメッセージ
受信したデータをMySQL へマッピングする(XMLMap コネクタ)
最後に「XMLMap」コンポーネントで、トークBot からのCallback メッセージで受信してJSON から変換したXML ファイルと、kintone へ登録する情報とのマッピングを作成します。JSON コネクタからXMLMap コネクタ、XMLMap コネクタからCData(kintone)コネクタへとフローをつないでください。つないだらワークスペースを保存してください。これでXMLMap コネクタではkintone へ連携するフォーマットが認識されます。
XMLMap コネクタを開き、JSON コネクタで変換されるXML フォーマットを読み込ませます。
マッピングエディタに、JSON コネクタで変換されるXML フォーマットがソース
に。kintone コネクタへ連携するフォーマットが宛先
として表示されます。それぞれの項目をマッピングします。
これで「LINE WORKS のトークBot からのCallback メッセージをCData Arc で受信してkintone に連携する」ために必要な手順が完了しました。
シナリオの動作を確認する
トークBot を招待したルームでトークします。
CData(kintone)コネクタの「インプット」タブでレコードが追加されれば、作成したフローを通してkintone へデータが届いたことを確認できます。
実際にkintone の情報を確認してみてください。トーク内容が格納されていれば成功です。
さいごに
LINE WORKS からのCallback メッセージを通知できるようにするまでの環境設定で少し手間が掛かる部分もありますが、CData Arc でWebhook を受信したり、受信したデータを活用すること自体はとても簡単です。Webhook のような仕組みを利用すると連携の自由度が大きく広がります。是非お試しください。
arc.cdata.com
この記事では CData Arc™ 2021 - 21.0.7964
を利用しています。
関連コンテンツ