ノーコードで Slackの投稿をkintoneに登録してみた

先日の [Play (No) Codes! #1](https://playnocodes.connpass.com/event/166548/) のイベント中に、IFTTTのようなクラウドサービスをノーコードで繋ぐ [integromat](https://www.integromat.com/) を 参加者の Nakanishiさんから教えてもらったのですが、長いこと悩んでいた **Slackの投稿をkintoneに登録** することがサクッと出来たので、こちらで紹介します。

![スクリーンショット 2020-03-11 10.33.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/16b3d3b8-9075-aa0e-f835-7ecac039a18f.png)

# 準備

* integromat アカウント作成
* kintone アカウント作成
* Slack アカウント作成

# Slackのチャンネル作成

Slackにチャンネルを作成しておきます。
今あるチャンネルでも良いですし、新規に作っても良いです。
今回は以前作成した、to_kintoneチャンネルを使います。to_kintoneチャンネルに新規で投稿があったらその内容をkintoneに登録していきます。

# kintoneで登録用のアプリ作成

Slackの投稿をそのまま登録するだけのアプリにしました。

![スクリーンショット 2020-03-11 11.05.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/ef689bcc-0abc-2f5a-1270-84e42f8c499b.png)

* フィールド名：登録日時/フィールドタイプ：日時/フィールドコード：datetime
* フィールド名：comment/フィールドタイプ：文字列（複数行）/フィールドコード：comment

# integromatでシナリオ作成
integromatでシナリオを作成していきます。テンプレートは使わずに一から作っていきます。

## Slackの設定

[Create new scenario]を押下して、Slackを選択します。

Slackの新規投稿をトリガーにしたいので、[New Message]を選択します。
![スクリーンショット 2020-03-11 11.16.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/f5f63d64-f4ee-5eb8-b222-f2c0638b3b81.png)

Slackメッセージの取得には、Webhookを使います。
Webhookで[Add]ボタンを押下して、[Add a hook]ダイアログで
・name → なんでもOK
・Event type → New channnel message
・Connection → Add を選んで SlackのOAuth認証で認証してください
・Channel → OAuth認証が通るとSlackのチャンネルが選択できるようになるので、今回は to_kintone を選択
最後に Saveボタン を押下します。
![スクリーンショット 2020-03-11 11.23.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/1d9c0aab-e56f-6006-356c-fbfa66005ec4.png)

設定できると下記のように表示されます。
![スクリーンショット 2020-03-11 11.28.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/a9d4e680-eb2e-1322-7a59-c84b12df2d71.png)

## kintoneに登録するモジュールの設定

kintoneに登録するには [HTTP]モジュールを使います。REST API を使っている方ならなんとなく分かると思います。少し設定が複雑ですが落ち着いていきましょう。

モジュール追加は先ほど作ったSlackの左にカーソルを当てるとプラスマークの Add another module が表示されるので、それを押下します。
![スクリーンショット 2020-03-11 11.31.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/d8ab0241-a300-e17b-6fc6-d702b1166f58.png)

HTTPを検索
![スクリーンショット 2020-03-11 11.37.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/d2a10d30-7f75-e774-69fc-b855f7acbea4.png)

[Make a OAuth 2.0 request]を選択
![スクリーンショット 2020-03-11 11.37.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/4135dbd6-e533-9f8d-092a-c3f6928dacc2.png)

ConnectionでAdd
[cybozu developer network]の[OAuthクライアントの使用](https://developer.cybozu.io/hc/ja/articles/360015955171)を参考に設定します。

kintoneにOAuthクライアントを追加した画面です。
<img width="970" alt="スクリーンショット 2020-03-12 8.02.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/0879ad90-bf82-c151-6815-77a6ed2b0a0d.png">


integromat側の設定は下記のようになります。
![スクリーンショット 2020-03-11 13.14.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/f4643ef0-4f4a-b311-991d-ecad0a3d70aa.png)

Show advanced settingsも設定します。
![スクリーンショット 2020-03-11 13.18.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/0e6c08fe-e800-30bf-2eaf-7e589b644fa2.png)

URL以下も下記のように設定します。
![スクリーンショット 2020-03-11 13.20.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/88eee281-3ed5-0e96-331d-7a4502c249c3.png)

Request content の箇所はお馴染みの kintoneのレコード登録APIです。
![スクリーンショット 2020-03-11 13.21.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/935334f5-2a21-fee2-9d54-8f3f67c208a4.png)

# 実行

とりあえず Run once で1回だけ実行します。

Slackのチャンネルで投稿します。
![スクリーンショット 2020-03-11 13.27.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/19cbbae4-6b60-ee41-29a1-18dd70322788.png)

kintoneアプリを確認して登録されていれば成功です。
![スクリーンショット 2020-03-11 13.29.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214523/8d700953-0653-5e17-098c-e3db9454b759.png)

# 参考

* kintone REST APIの共通仕様 https://developer.cybozu.io/hc/ja/articles/201941754
* レコードの登録（POST） https://developer.cybozu.io/hc/ja/articles/202166160
* OAuthクライアントの使用 https://developer.cybozu.io/hc/ja/articles/360015955171
* [How to connect Integromat to any web service that uses OAuth2 authorization](https://support.integromat.com/hc/en-us/articles/115003864294)
* [OAuth 2.0を使ってcybozu.comのREST APIをPostmanで叩く方法
](https://developer.cybozu.io/hc/ja/articles/360018979492)