ノーコードでSlack Eventを使う

# はじめに
slackのAPIで応答するbotを作ろうとした時に、サーバがないと始まらなかったので
integromat.com を使用してノーコードで応答するようにします。
https://www.integromat.com/
botでメッセージ応答するところまで記載する予定でしたが、長くなってしまったので次回に。
（messageの実装でユーザとbotの区別をしないとループしました）
ここの記事はVerifyできるところまでです。

##始める前の注意
integromatはoperationsという実行数の上限がFree版だと、それほど多くなくて
実行して、取得したパラメータをintegromatが解析してパラメータをセットする形式の実装方法から
Operationを消費しがちです。
長く開発するには有料版（1,000円程度）で使うことも検討しておくことをお勧めします。
https://www.integromat.com/en/pricing
![スクリーンショット 2020-10-12 7.54.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/0c312be4-fc38-dd63-1ce2-459958978f0e.png)
# slack - 新しいアプリを作る
https://api.slack.com/apps
## OAuth & Permissions
botに必要なPermissionをいくつか追加する
![スクリーンショット 2020-10-12 7.59.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/4ff68c0d-f812-addf-53fa-e71d22083331.png)
## App Home
アプリを追加した時に表示名に`日本語など`を設定すると設定されないことがあるので
確認する。@で始まるbot名にあたる`Default Name`の設定ができないからだと思われます。
![スクリーンショット 2020-10-12 8.00.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/67392461-2308-de62-ce87-9b61b50ba7c4.png)
## ワークスペースにアプリをインストール
![スクリーンショット 2020-10-12 7.59.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/e46aebed-e35f-4791-670e-34c01e8c332a.png)
## Bot User OAuth Access Token を取得
![スクリーンショット 2020-10-12 8.07.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/5477eb71-be85-023a-ad7d-ea34ecb7de44.png)
# integromat - シナリオを作成
![スクリーンショット 2020-10-13 4.38.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/3075c38f-a2e8-6f81-0bfb-9b5dbca047d1.png)
## Webhookを設定
Webhooksを探し、選択して`Continue`を選びます。
![スクリーンショット 2020-10-13 4.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/bd50122e-3bdf-95ad-67eb-2a7154ae6a08.png)
![スクリーンショット 2020-10-13 4.45.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/bc503f19-f869-817c-24cc-024c40b8cd1a.png)
WebhooksのTriggerを`Custom webhook`にする
![スクリーンショット 2020-10-13 4.46.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/d44eaf6f-b0c4-0e54-398d-08806b296fa8.png)
![スクリーンショット 2020-10-13 4.46.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/5837a6db-a75b-81b3-ba3d-137c1565a266.png)
Webhook用のURLをintegromatで作成
![スクリーンショット 2020-10-13 4.47.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/df7ff4ca-1876-5dd8-43d4-df97066c7020.png)
URLを作成するとintegromatでURLにリクエストが送信されるのを待ちます(Stopが表示されてる)。
横の`Copy address to clipboard`を押します（クリップボードにURLをコピペ）。
![スクリーンショット 2020-10-13 4.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/1679761a-a268-1400-1ef9-83d6f0bb2058.png)
# slack - Event Subscription
Enable Eventsを`ON`にして
Request URLにクリップボードにあるを貼り付けます。
![スクリーンショット 2020-10-13 4.51.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/cece121d-49d6-096d-4cab-0fd32b30134c.png)
# integromat - シナリオを更新
## WebhookにResponseを返す
Webhooksモジュールの右丸にマウスを合わせると別のモジュールを追加できます。
![スクリーンショット 2020-10-13 4.52.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/85c3df3d-ed04-9d5c-a00c-8209006b8020.png)
![スクリーンショット 2020-10-13 4.53.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/5ebf33f8-0763-2af6-f31c-1bea8cc5beb8.png)
`ACTIONS`Webhook responseだけ選べる状態で表示されます。
![スクリーンショット 2020-10-13 4.53.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/db13a13d-8da0-a516-9cc2-13bd393fcd1d.png)
Statusは`200`、Bodyに`challenge`を設定します。
![スクリーンショット 2020-10-13 4.54.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/d856a189-322f-0f63-556d-99c1fe4f890f.png)
![スクリーンショット 2020-10-13 4.54.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/fc58f37f-3548-fdb3-e6a7-544094e58df7.png)
URLのVerify後の分岐のためにrouterを追加します。
![スクリーンショット 2020-10-13 4.53.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/ad150238-8d5b-b6ac-04d9-f8642bf35c62.png)
Routerにfilterを設定して、リクエストの分岐を作っておきます
![スクリーンショット 2020-10-13 4.55.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/37ca0f34-49a0-e093-3103-acb49e1c7945.png)
![スクリーンショット 2020-10-13 4.59.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/0c0074b8-2463-2892-f42c-1479beeaf40c.png)
セーブします。
![スクリーンショット 2020-10-13 4.56.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/cc77526e-0c5a-e242-1d27-95ac094e8f94.png)
`Run once`を実行します。
![スクリーンショット 2020-10-13 5.06.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/989e61b0-27f8-0cce-ac5e-731c742bee2f.png)
# slack - Event Subscription
slackのRequestURLで`Retry`ボタンを押します
![スクリーンショット 2020-10-13 5.08.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/6f36d23c-6921-6cd0-6591-e495e38db26a.png)

#他のサービスとの比較
他のサービス、IFTTTとZapierで同様のことをした場合、次の点で検討が必要でした。

- Webhookが有料プランから使用可能
- slackへ各サービスのアプリを追加する必要がある

他のサービス同様slackへintegromatのアプリを追加する方法もありましたが、
追加しなくてもWebAPI、EventAPIの実装はできます。

#さいごに

運用では始まったばかりのサービスでなく
運用に必要なステータスも見えます。
https://status.integromat.com/
しばらく使って様子見したいなと思っています。