kintoneからSlackに"条件を設けて"通知を行う【ノンコーディング】

kintoneで管理している案件の情報を、特定の条件（ステータス）になった際にSlackのチャネルに通知する連携を実装するぜ。
今回は、連携サービスを上手く使って**ノンコーディング**でやってみる。
![kintoneとslackの連携](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/81ab7fa2-2f29-cb45-6247-bb2096ceb6a7.jpeg "kintoneとslackの連携")


#なぜkintoneとslackを連携させるの？
● **通知漏れの防止**
　kintoneでもメール通知・アプリからのプッシュ通知が来るけど、通知が埋もれてしまう。
　なので、この通知漏れを防ぐために、別ツール（slack）にも通知させ、埋もれるのを回避する。
● **通知時に一緒に内容も確認したい**
　kintoneの通知は、指定した文章でしか通知が送れない。（フィールドの内容まで確認できない）
　よって、独自の通知を作成し、通知時にレコードの内容も確認できるようにする。

#利用するツール
- kintone
- Slack
- [integromat](https://www.integromat.com/org/686919)

###◎integromatとは
サービス間のデータをつなぐコネクタのようなサービス。
似たサービスはZapierやIFTTTが有名だけど、integromatのほうが無料で利用できる範囲が大きいのでこっちをよく使ってます～
（zapierは条件分岐するのは有料プランなんだよね。。）
詳細はこの記事が一番まとまってので、こっちを参照しておくれ。
▼アプリケーションをつなぐIntegromatが素晴らしい
https://qiita.com/makky_tyuyan/items/7802bec3a941c5184034

#実装方法
##①シナリオ作成：kintoneの通知を受け取るwebhookの設定
integromatにログインし、画面にある［Create a new scenario］をクリック。

今回使うパーツは**webhook**と**slack**です。
検索ボックスに「webhook」と入力して、出てきたアイコンをクリック。
同様にslackと入力して、slackアイコンをクリックしたら[Continue]をクリックして次に進む。
![img1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/a698dba6-157d-5cba-d1ad-b5523430689a.png)

シナリオ作成画面が開くので、最初に[Webhook]を選択。
どのwebhookを利用するか選択肢が出てくるので、[Custom webhook]を選択。
![kintoneとslackの連携_integromat設定1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/3e6206bd-1371-8b02-d8ec-d2817fe8f477.png "kintoneとslackの連携_integromat設定1")

webhookの設定が開くので、[Add]をクリック。
【Add a hook】の画面が開くので、"Webhook name"の部分に任意のテキストを入力。
（kintoneからのwebhookを受けるので、kintoneとの名前にしました）
![kintoneとslackの連携_integromat設定2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/f6ff5bdc-bbad-1df5-8879-bab957f0f91a.png "kintoneとslackの連携_integromat設定2")

[Save]ボタンを押すと、webhooks画面に戻ります。
戻った画面にURLが発行されいているので、その**URLをコピー**して[OK]ボタンをクリック。
![kintoneとslackの連携_integromat設定3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/b2cb6445-bc46-f6dc-0228-36887445018d.png "kintoneとslackの連携_integromat設定3")

##kintoneでwebhookの設定を行う
①でwebhookのシナリオを作成したら、kintoneに移動します。
通知を飛ばしたいkintoneアプリから、[アプリ管理画面→設定→webhook]を開く
![kintoneとslackの連携_kintoneの設定1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/cea9e443-4c04-aad7-8d53-74c8e3b43a5c.png "kintoneとslackの連携_kintoneの設定1")

webhook設定画面で[＋]をクリックし、"Webhook URL"部分にさっきintegromatでコピーしたURLを張り付ける。
💡先頭に「https://」が既にあるので、貼り付けしたURLでは「https://」を削除しておくこと

通知を送信する条件を選択。
今回は、レコード追加・編集時にslackに通知を飛ばしたいため、[レコード追加][レコード編集]にチェックを入れる。
![kintoneとslackの連携_kintoneの設定2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/d4734f6b-b7c5-c8c5-5ee0-04869555b7d0.png "kintoneとslackの連携_kintoneの設定2")
💡保存→アプリを更新するのをお忘れなく！


integromatの画面に戻り、[Run once]をクリックし、kintoneからテストレコードを１件追加する。
kintoneからの通知を問題なく受け取れると、webhookにチェックマークがついて成功画面にかわる。
![kintoneとslackの連携_kintoneの確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/309f4876-0704-bca7-d202-5986ad8b8d86.png "kintoneとslackの連携_kintoneの確認")


##②シナリオ作成：受け取った通知をslackに渡す
webhookのマークの右端の半円をクリック。
次のシナリオを選択する画面が出てくるので、[slack]を選択。
![kintoneとslackの連携_integromat設定4](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/a40155c9-c082-d905-22b9-c226a9267dba.png "kintoneとslackの連携_integromat設定4")

webhookで受け取った通知をslackに渡す(通知させる）、というシナリオなので、"Create a Message"を選択
![kintoneとslackの連携_integromat設定5](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/8fc3feeb-5192-6115-9e3d-e2aa3633d9aa.png "kintoneとslackの連携_integromat設定5")

１）連携させるslackアカウントを選択
"Connection"欄で[Add]をクリック。
"Connection name"で分かりやすいタイトルを設定し、[Continue]をクリック。
Slackの認証画面が立ち上がるので、[許可する]を選択します。
![kintoneとslackの連携_integromat設定6](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/0370e8ac-2512-a685-b437-4cbaeecf3a96.png "kintoneとslackの連携_integromat設定6")

２）どのslackのチェンネルに連携させるか選択。
【Enter a channel ID or name】
 "Select form the list"を選択
【Channel type】
今回、プライベート（非公開）チャンネルに連携するので、"Private channel"を選択
※パブリック（公開）チャンネルの場合は"public channel"を選択すべし
【Private channnel】
連携させるチャンネルを選択。今回は”案件通知”というチャンネルに通知したいため、案件通知を選択
![kintoneとslackの連携_integromat設定7](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/49e23bed-a1b4-b254-a834-97488d7e1296.png "kintoneとslackの連携_integromat設定7")

３）どんな内容を通知するか設定
【Text】
slackに通知させる内容を選択します。
今回、案件の概要を記載した通知にしたいため、
・案件の企業名
・案件概要（案件のタイトル）
・開発ST（案件のステータス）
・レコードのURL
を通知するよう設定しました。設定が完了したら[OK]をクリック
💡フィールドの内容を出力するので、”value”を選択すること
![kintoneとslackの連携_integromat設定8](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/f434a90b-03a9-4d7b-dd26-bd0da36666f5.png "kintoneとslackの連携_integromat設定8")


##③シナリオ作成：通知条件を設定する
今の状態だと、レコードの追加・編集を行うとすべてslackに通知される状態です。
今回は
・開発STが"受注確定"のレコード
・「請求書発行日」が入力されていて、開発STが「リリース完了」になったレコード
が登録された際にslackに通知を送りたいので、条件の設定を行います。

webhookとslackのアイコンの間にあるスパナマークをクリックします。
【Set up a filter】画面が立ち上がるので、ここで上記の条件を設定します。
[Condetion]
１）条件判定するフィールドを選択
💡フィールドの内容から判定するので、”value”を選択すること
２）一致条件を選択：今回は指定した文字と一致すればOKなので「Equal to」を選択
３）一致させたい文字列を入力

・「請求書発行日」が入力されていて、開発STが「リリース完了」になったレコード
この場合、複数の条件が発生するので、and条件で複数条件を設定。
”開発ST”　Equal to（一致）　”リリース完了”
AND
”請求書発行日（日付_1）”　Exists(存在する)　
という条件を設定しました。
![kintoneとslackの連携_integromat設定9](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/ec07c223-84d7-a002-666a-204e85e4fd2d.png "kintoneとslackの連携_integromat設定9")



設定を完了すると「OK」をクリックします。

これで設定は完了です。
画面下部の【SCHEDULLING】を「OK」に変更し、シナリオを有効にします。
![kintoneとslackの連携_integromat設定10](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/2a146a23-c4a7-257a-adb6-553df174c39d.png "kintoneとslackの連携_integromat設定10")


##確認してみる
ちゃんと通知がくるか、kintoneからレコード登録して確認してみましょう。
![kintoneとslackの連携_slackで確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/30d29925-25e4-5eca-51d9-818ecfdc6bbb.jpeg "kintoneとslackの連携_slackで確認")
わーい！ちゃんと通知きたー！

通知条件に該当しないものは、こんな感じで通知されないことが確認できました。
![kintoneとslackの連携_integromatで確認](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129605/a8e11695-1d7d-08a4-9715-45a2bedefae2.png "kintoneとslackの連携_integromatで確認")