6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ChatworkのWebhook API を使って kintone にレコードを登録する方法

Last updated at Posted at 2020-04-18

kintone は APIが公開されていることで、外部のクラウドサービスと連携することが可能です。
今回は Chatwork の特定のチャットルームにメッセージを書き込んだ時に kintone のアプリにレコードを登録する方法についてまとめたいと思います。

前提条件

コードは書きませんが、REST API の知識がある事が前提です。もちろんJSONとか。

  • kintoneアプリ作成の知識がある方
  • kintone REST API についての知識がある方
  • kintone のアプリ作成権限があること
  • Chatworkを利用されている方
  • Chatwork API についての知識がある方
  • ChatworkのAPI設定の権限がある方

Chatworkのメッセージを kintone にレコード登録する方法

いくつかのパターンをまとめます。

  1. ChatworkのWebhookを利用して外部のサーバーを経由してkintoneにレコード登録する方法
  2. Chatworkのbotからメッセージの書き込みをトリガーにkintoneにレコード登録する方法
  3. Chatworkとkintoneの連携プラグインを利用する方法
  4. 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です。

赤の囲み部分がルームIDです。
スクリーンショット 2020-04-14 21.30.28.png

Webhookの設定

ChatworkにはWebhookが実装されていて、チャットルームへのメッセージ投稿をトリガーに処理を行うという事が出来ます。

設定画面です。
webhookスクリーンショット 2020-04-14 21.30.42.png

赤囲みにチャットルームのルームIDをセットします。
[Webhook URL]には Webhookを処理するサーバーのURLをセットします。
こちらは後ほど説明する Integromat の Webhook の情報をセットします。
今回のWebhookイベントは、メッセージ作成時に設定しておきます。


Integromat でシナリオの作成

Integromat で処理するフローはシナリオと言います。
今回は、[Webhook]→[HTTP]の流れでシナリオを作成します。

完成するとこんな感じです。
シナリオスクリーンショット 2020-04-14 22.37.40.png

Webhooks

Integormatには、Chatwork用のサービスが登録されてないので、カスタムWebhookを使って設定していきます。
ちょっと長くなりますが、スクリーンショット多めでいきます。

新規シナリオ→サービスから Webhooks を選んで次へ
スクリーンショット 2020-04-17 9.18.25.png

シナリオのスタートを決めます。?マークをクリック
01 スクリーンショット 2020-04-18 8.56.40.png

Webhooksを選んで、今回はトリガーにCustom webhookを選択
03 スクリーンショット 2020-04-18 8.57.11.png

Addボタン押下→Webhook nameは何でも良いので、名前をつけてやりましょう。
Saveを忘れずに。
06 スクリーンショット 2020-04-18 8.57.41.png

Webhooksに戻ると、IntegromatからURLが払い出されるので、Copy address to clipboardを押します。
09 スクリーンショット 2020-04-18 8.58.45.png

ここで、ChatworkのWebhookの設定に戻って、Webhook URLに貼り付けます。
14 スクリーンショット 2020-04-18 9.01.42.png

ここまでの確認

ここまででどうなってるかを確認しましょう。

  1. Chatworkのルームを作成しました。
  2. ChatworkにWebhookを設定しました。
  3. Integromatにシナリオを作成しました。
  4. シナリオにカスタムWebhookを追加しました。
  5. カスタム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]をクリック
25スクリーンショット 2020-04-18 12.15.20.png

作成したChatworkのルームで適当に書き込んでみます。
27スクリーンショット 2020-04-18 12.17.06.png

IntegromatのWebhookを確認します。
[The scenario run was completed.]が出てたらOK。
26スクリーンショット 2020-04-18 12.16.17.png

リクエストを確認します。
29 スクリーンショット 2020-04-18 12.20.59.png

Chatwork API

Chatwork APIのWebhookリクエスト情報とIntegromatのWebhookで受け取った情報を確認してみます。
Chatwork APIのWebhookリクエスト情報

IntegromatのWebhookの受信情報
ChatworkのWebhookのリクエストボディのサンプルと比較すると良いかと思います。
30 スクリーンショット 2020-04-18 12.24.37.png

kintoneにデータ登録

いくつかやり方はありますが、今回はノーコードらしくOAuthでkintoneに認証してレコードを登録していきます。

kintone接続までの流れ

  1. kintoneアプリ作成
  2. kintoneにIntegromatのOAuthクラインアント情報を登録
  3. IntegromatにHTTPのモジュールを追加
  4. IntegromatのHTTPモジュールにOAuthを設定
  5. Integromatにkintoneレコード登録の設定

1. kintoneアプリ作成

下記のように設定しています。

31 スクリーンショット 2020-04-18 13.47.14.png

2. kintoneにIntegromatのOAuthクラインアント情報を登録

下記を参考に設定して下さい。

3. IntegromatにHTTPのモジュールを追加

20 スクリーンショット 2020-04-18 9.03.42.png

4. IntegromatのHTTPモジュールにOAuthを設定

[Make a OAuth 2.0 request]を選択します。

22 スクリーンショット 2020-04-18 9.04.10.png

[Add]を選択してOAuthの接続設定をします。
設定は下記を参照。
OAuthクライアントの使用
kintoneに登録するモジュールの設定

5. Integromatにkintoneレコード登録の設定

kintoneにレコードを登録する設定をします。

下記を参考に設定します。

この辺りは kintone REST API の知識があれば問題なく設定できるかと思います。

33 スクリーンショット 2020-04-18 23.31.44.png

[Run once]を押してから、Chatworkのルームにメッセージを入力します。

Integromatへのリクエスト情報と戻り値を確認。
34 スクリーンショット 2020-04-18 23.39.01.png

kintoneにレコードが登録されていることを確認します。
35 スクリーンショット 2020-04-18 23.43.40.png

後は、Integormatの設定でスケジュールを設定することで、Chatworkのメッセージ入力都度kintoneにレコード登録することが出来ます。


参考

その他サービス連携


あとがき

カスタム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関数を使ってよしなに表示すると良いでしょう。

スクリーンショット 2021-05-20 7.32.56.png

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?