ChatworkのWebhook API を使って kintone にレコードを登録する方法
kintone は APIが公開されていることで、外部のクラウドサービスと連携することが可能です。
今回は Chatwork の特定のチャットルームにメッセージを書き込んだ時に kintone のアプリにレコードを登録する方法についてまとめたいと思います。
前提条件
コードは書きませんが、REST API の知識がある事が前提です。もちろんJSONとか。
- kintoneアプリ作成の知識がある方
- kintone REST API についての知識がある方
- kintone のアプリ作成権限があること
- Chatworkを利用されている方
- Chatwork API についての知識がある方
- ChatworkのAPI設定の権限がある方
Chatworkのメッセージを kintone にレコード登録する方法
いくつかのパターンをまとめます。
- ChatworkのWebhookを利用して外部のサーバーを経由してkintoneにレコード登録する方法
- Chatworkのbotからメッセージの書き込みをトリガーにkintoneにレコード登録する方法
- Chatworkとkintoneの連携プラグインを利用する方法
- IFTTT,Zapier等の自動化サービスを利用する方法
1.〜3.についてはたくさんの事例がありますので、各自調べていただくとして今回は4.の自動化ツールに Integromat を使う方法を説明したいと思います。
データの流れのイメージは、
[Chatworkのルームを表示] → [Chatworkにメッセージ登録] → [Chatwork Webhook(トリガー)発火] →
[Integromat Webhookでメッセージデータ受信] → [Integromat HTTP でkintoneレコード登録のAPIを叩く] → [kintoneレコード登録]
です。
準備
事前準備です。
- Chatworkを開いておきます
- kintoneにログインしておきます
Chatworkの設定
チャットルームの作成
Chatworkにテスト用のルームを作成することにします。
ルーム名は何でもOKです。Webhookの登録にルームIDが必要となりますのでメモっておきます。
もちろん既存のルームでもOKです。
Webhookの設定
ChatworkにはWebhookが実装されていて、チャットルームへのメッセージ投稿をトリガーに処理を行うという事が出来ます。
赤囲みにチャットルームのルームIDをセットします。
[Webhook URL]には Webhookを処理するサーバーのURLをセットします。
こちらは後ほど説明する Integromat の Webhook の情報をセットします。
今回のWebhookイベントは、メッセージ作成時に設定しておきます。
Integromat でシナリオの作成
Integromat で処理するフローはシナリオと言います。
今回は、[Webhook]→[HTTP]の流れでシナリオを作成します。
Webhooks
Integormatには、Chatwork用のサービスが登録されてないので、カスタムWebhookを使って設定していきます。
ちょっと長くなりますが、スクリーンショット多めでいきます。
Webhooksを選んで、今回はトリガーにCustom webhookを選択
Addボタン押下→Webhook nameは何でも良いので、名前をつけてやりましょう。
Saveを忘れずに。
Webhooksに戻ると、IntegromatからURLが払い出されるので、Copy address to clipboardを押します。
ここで、ChatworkのWebhookの設定に戻って、Webhook URLに貼り付けます。
ここまでの確認
ここまででどうなってるかを確認しましょう。
- Chatworkのルームを作成しました。
- ChatworkにWebhookを設定しました。
- Integromatにシナリオを作成しました。
- シナリオにカスタムWebhookを追加しました。
- カスタムWebhookから払い出されたURLをChatworkのWebhookに設定しました。
流れでいうと、1.〜4.まで設定できました。
[1.Chatworkのルームを表示] → [2.Chatworkにメッセージ登録] → [3.Chatwork Webhook(トリガー)発火] →
[4.Integromat Webhookでメッセージデータ受信] → [5.Integormat HTTP でkintoneレコード登録のAPIを叩く] → [6.kintoneレコード登録]
Chatwork投稿 → Integromat Webhookデータ受信テスト
ここまでをテストしてみます。
問題無ければIntegromatのカスタムWebhookログで投稿内容が確認できると思います。
作成したIntegromatのシナリオの左下[Run once]をクリック
IntegromatのWebhookを確認します。
[The scenario run was completed.]が出てたらOK。
Chatwork API
Chatwork APIのWebhookリクエスト情報とIntegromatのWebhookで受け取った情報を確認してみます。
Chatwork APIのWebhookリクエスト情報
IntegromatのWebhookの受信情報
ChatworkのWebhookのリクエストボディのサンプルと比較すると良いかと思います。
kintoneにデータ登録
いくつかやり方はありますが、今回はノーコードらしくOAuthでkintoneに認証してレコードを登録していきます。
kintone接続までの流れ
- kintoneアプリ作成
- kintoneにIntegromatのOAuthクラインアント情報を登録
- IntegromatにHTTPのモジュールを追加
- IntegromatのHTTPモジュールにOAuthを設定
- Integromatにkintoneレコード登録の設定
1. kintoneアプリ作成
下記のように設定しています。
2. kintoneにIntegromatのOAuthクラインアント情報を登録
下記を参考に設定して下さい。
3. IntegromatにHTTPのモジュールを追加
4. IntegromatのHTTPモジュールにOAuthを設定
[Make a OAuth 2.0 request]を選択します。
[Add]を選択してOAuthの接続設定をします。
設定は下記を参照。
OAuthクライアントの使用
kintoneに登録するモジュールの設定
5. Integromatにkintoneレコード登録の設定
kintoneにレコードを登録する設定をします。
下記を参考に設定します。
* https://support.integromat.com/hc/en-us/articles/360006249313-Webhooks
* https://developer.cybozu.io/hc/ja/articles/202166160#step1
* https://developer.cybozu.io/hc/ja/articles/201941754
この辺りは kintone REST API の知識があれば問題なく設定できるかと思います。
[Run once]を押してから、Chatworkのルームにメッセージを入力します。
後は、Integormatの設定でスケジュールを設定することで、Chatworkのメッセージ入力都度kintoneにレコード登録することが出来ます。
参考
- https://developer.chatwork.com/ja/
- https://developer.chatwork.com/ja/webhook.html
- https://developer.cybozu.io/hc/ja/articles/202166160#step1
- https://developer.cybozu.io/hc/ja/articles/360015955171
- https://support.integromat.com/hc/en-us/articles/360006249313-Webhooks
- https://developer.cybozu.io/hc/ja/articles/201941754
その他サービス連携
- https://go.chatwork.com/ja/integrate/ifttt.html
- https://help.chatwork.com/hc/ja/articles/215843117--Chatwork%E3%83%96%E3%83%AD%E3%82%B0-Zapier%E9%80%A3%E6%90%BA%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8
- https://blog-ja.chatwork.com/2015/09/8zapier.html
あとがき
- https://go.chatwork.com/ja/integrate/ifttt.html
- https://help.chatwork.com/hc/ja/articles/215843117--Chatwork%E3%83%96%E3%83%AD%E3%82%B0-Zapier%E9%80%A3%E6%90%BA%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8
- https://blog-ja.chatwork.com/2015/09/8zapier.html
あとがき
カスタムWebhook最強。設定を理解すれば他にも色々なサービスと繋げられると思います。
後、Qiitaへの投稿が99本まで来ました。意外と時間が掛かった。
追記
2021-05-20
Chatworkの日時データの変換
ChatworkのWebhookで送信されるWebhookイベントオブジェクトにある、例えば"send_time"(メッセージの送信時刻(エポック秒))のような日時情報を取り扱う方法は2つあります。
- Chatwork APIで利用される日時データ形式は、エポック秒(UNIXタイム)になっています。
1 Integromatで変換する
parceDate関数やformatDate関数を利用してUNIXタイムを変換することができます。
{
"app": "67",
"record": {
"title": {
"value": "{{1.webhook_event.room_id}} {{formatDate(parseDate(1.webhook_event.send_time; "X"); "YYYY-MM-DD HH:mm:ss"; "Japan")}}"
},
"subject": {
"value": "{{1.webhook_event.body}}"
},
"send_time": {
"value": {{1.webhook_event.send_time}}
}
}
}
2 kintoneで変換する
kintone側では数値フィールドで受け取って、計算フィールドを使って変換します。
計算式のフォーマットに日時を設定したり、DATE_FORMAT関数を使ってよしなに表示すると良いでしょう。
Author And Source
この問題について(ChatworkのWebhook API を使って kintone にレコードを登録する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/sy250f/items/31d3591c4d0e180bcc7f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .