Slackの絵文字でリアクションすることでスレッドに定型文を送るzapierを作ってみた

## はじめに
Slackの絵文字を押してリアクションするだけで自分の代わりに投稿してくれるBotがあれば良いなと思って作成しました。
初めてzapierを使ったのですが、Slackのスレッドに投稿させる方法も手探りだったので、他の人も参考になるかなと思って作成しました。

（ちなみに、Slackは便利でイケてるチャットツールでzapierは色々なアプリをノーコードで連携して自動化できるイケてるツールです！連携できるアプリの1つはSlackですね。 Slackは知っててもzapierを知らない人そこのあなた！この記事でちょっと触れるようになるかもしれませんよ！　ちなみに私は知りませんでした！）

https://slack.com/intl/ja-jp/

https://zapier.com/

## 書かないこと
Slack, zapierの登録方法は解説しません。既にどちらもアカウント登録済みという前提で進めます。

## 完成形のイメージ
テーマは残業申請です。投稿されたコメントに対して「残業します」とスレッドにコメントできるようにします。
完成形は次のようになります。
21:40分にリマインダーが設定されているのはとてつもないブラック臭がプンプンしますね。一体定時は何時なんでしょうか。
![スクリーンショット 2022-04-16 22.42.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/1f2db8da-6698-7e28-b725-30d1d3f50729.png)


## やること
大きく以下の3つを行います。
Slackのスレッドに自動で投稿させるだけなら、Zapierだけで設定できるので1と2はSKIPしても大丈夫です。
1. リマインダーの登録
2. Slackで利用するカスタム絵文字の作成・登録
3. Zapierの設定

## リマインダーの登録
以下のリンクを参考に登録してください。

https://slack.com/intl/ja-jp/help/articles/208423427-%E3%83%AA%E3%83%9E%E3%82%A4%E3%83%B3%E3%83%80%E3%83%BC%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B

## Slackで利用するカスタム絵文字の作成・登録
Slackで利用するカスタム絵文字の作成には以下のサイトを利用しました。

https://emoji-gen.ninja/

今回は以下の設定で作成してみました。
> テキスト
> 残業 申請
> フォント
> Noto Sans Mono CJK JP Bold
> カラー
>  #EC71A1

作成したものをダウンロードします。
次のようなアイコンが作成できました。
![残業_申請.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/ac2d1472-fa3d-e8d3-f090-1a37bd7da61b.png)


登録方法は以下のリンクを参照ください。

https://slack.com/intl/ja-jp/help/articles/206870177-%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E7%B5%B5%E6%96%87%E5%AD%97%E3%81%A8%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B

## Zapierの設定
こちらも完成形は次のリンクになりますが、せっかくなのでどういう設定をしたのか記載します。

https://zapier.com/shared/f3972b003dcdc3b68d422dc20e2c247723cf62e7

また、公式のリンクもぜひ参考にしてください。

https://zapier.com/blog/format-slack-message-in-zapier/

では、登録方法について解説します。

1. zapierを開いて、Create Zapをクリックします。![スクリーンショット 2022-04-16 21.39.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/c5522a13-ba7d-a010-6dbe-0a7cf9de38bc.png)
1. Triggerと言われる起点となるアクションの設定を行います。ここではSlackをクリックします。![スクリーンショット 2022-04-16 21.39.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/f8f1708e-dfee-d20a-8cc2-3a5ad3028c7e.png)
1. Trigger EventでNew Reaction Addedを選択します。![スクリーンショット 2022-04-17 8.28.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/accd5ad6-9ed0-825b-7512-a8e7875a5244.png)
1. 一番上のTriggerが1.Slackから1.New Reaction Added in Slack に変わりました。Continueを選択してください。（以降も作業が完了したらContinueを選択して次に進んでください。次から説明は割愛します）![スクリーンショット 2022-04-16 21.40.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/67e074b7-d4ed-5153-90e8-3df6ff2917f3.png)
1. Slackのワークスペースを選択します。![スクリーンショット 2022-04-16 21.40.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/96d269d3-375d-32cc-940e-b8c3b37d796f.png)

1. Set up triggerで起点となるReaction（Slackの絵文字）を選択してください。
    1. Reaction: 今回は上で作成した残業申請（登録名:zangyoshinsei）の絵文字をTriggerとします。Reactionに文字を打ち込むと候補が出てきます。![スクリーンショット 2022-04-16 21.44.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/dac3a72e-fb5a-9b37-7dc6-df41830680fb.png)
    1. Channel: 適応させたいチャンネルを選んでください。今回はzapier-testチャンネルに投稿させます。
    1. User: 全員に反応させたいので、空のままにしておきましょう。![スクリーンショット 2022-04-16 21.44.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/db6eb139-66aa-8c51-ff07-956d9cf81ee2.png)
1. テストを行います。Slackを開いて上で設定した絵文字を押しましょう。（まだTest triggerは押しちゃ駄目ですよ！反応しないはずです！）![スクリーンショット 2022-04-16 21.44.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/1285177d-9ce6-dbe5-879b-ddfba4c8393a.png)
1. 事前に設定したリマインダーに残業申請の絵文字を押しています。![スクリーンショット 2022-04-16 21.49.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/3d787602-f86e-b93d-19bb-540d14e096fa.png)
1. zapierに戻ってTest triggerを押しましょう。無事検知できたら次のような画面になります。![スクリーンショット 2022-04-16 21.50.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/f5c9e703-2803-6d4e-c83e-0d387699bdb5.png)

はい！ここまでで一旦Triggerの設定は完了です。
次はActionと呼ばれる、実際に行う操作を設定していきます。

1. Triggerと同じような画面が出るのでここでもSlackをクリックします。![スクリーンショット 2022-04-16 21.50.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/41193236-dc06-61fc-1e32-e4719f88d43d.png)
1. Action EventでSend Channel Message を選択します。![スクリーンショット 2022-04-17 8.48.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/c4793f1c-a5ca-750c-b0fc-b1f6e9576ebd.png)
1. Triggerの時と同じく表記も変わりました。![スクリーンショット 2022-04-16 21.50.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/1f631926-be08-7714-3b7b-c56bc6e65460.png)
1. ここでもTriggerと同様に送信先のワークスペースを選択します。![スクリーンショット 2022-04-16 21.51.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/f659cfe5-2e5a-2ab8-3af0-129491238e93.png)

1. 送信先の設定や内容を選択します。![スクリーンショット 2022-04-17 9.14.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/0bfc9d03-1b72-74ce-47e5-fbd8df51a696.png)
![スクリーンショット 2022-04-17 9.09.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/c72324ae-57fc-edc4-9785-7f5fee638581.png)

    1. Channel: zapier-test　というチャンネルにします。（通知先チャンネル）
    1. Message **Text User profile fisrt name**: XXXXさんが残業を申請しました。としました。(実際のユーザーネーム。XXXXは画像だとYumihiki)　
    1. Send as a bot: Yes Botから送信したように見せるかどうか、です。
    1. Bot Name: 残業申請くん Botの名前です。
    1. Bot Icon: **User profile medium image url** こちらを選択することでBotのアイコンが絵文字をつけた人になりすませるようになります。視認性のためにはアイコンを一緒にさせた方が良いですよね！（Slackの絵文字を選択することも可能です）
    1. Include a link to this Zap?: No 今回作成したZapへのリンクを表示させるかどうか。
    1. Auto-Expand Links?: yes メッセージのリンクを自動展開するかどうか。（デフォルトのyesのままにしています）
    1. Link Usernames and Channel Names?: yes ユーザー名とチャンネル名をリンクさせるかどうか。（デフォルトのyesのままにしています）
    1. Thread: **Message ts** この設定が重要です！クリックしてCustomタブから選んでください。 メッセージのタイムスタンプを指定することでスレッドに投稿できるようになります。（タイムスタンプで判別させるような仕組みみたいです）
    1. Broadcast To Channel?: no スレッドに投稿している場合のみに適用されるかどうか。（デフォルトのnoのままにしています）
1. テストをします。このような画面になったらSlackを確認してみます。（仮に届いていない場合は設定ミスが考えられます）![スクリーンショット 2022-04-16 21.56.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/ebb5a08c-52d0-c371-4cf2-73ab32f33790.png)
1. メッセージが投稿されていることを確認できました！![スクリーンショット 2022-04-16 22.02.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/ee27e3a2-b2c0-fc62-a75c-c653cb09e49d.png)


1. あとは左上の「Untitled Zap」から名前を「残業申請くん」と変更して、Publish Zapを選択します。![スクリーンショット 2022-04-16 22.03.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/1724a3dc-4c67-9a1f-720f-532eb51fee66.png)
1. Publish & Turn Onを選択します。![スクリーンショット 2022-04-16 22.03.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/02cda473-e4e9-97ad-77d8-37e34faffe95.png)
1. これで公開できました！Copy linkでリンクをコピーしてぜひ共有しましょう！![スクリーンショット 2022-04-16 22.03.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/8a906ece-d6ed-a1e0-4700-ba0bd3aed680.png)
1. Slackに戻り最後の動作確認です。他の人が押しても同じようになることが確認できました。![スクリーンショット 2022-04-16 22.05.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/42151e8a-2091-cd27-6d61-4c841573246b.png)

以上で作業は完了です！

## 終わりに
いかがでしたか？
毎回同じ定型文を入力するようなことがあれば、作業を省力化できるのではないでしょうか。問い合わせ対応で「これを確認してね」というメッセージを投稿したり、後で確認します、というコメントを投稿したりなど他にも可能性は無限大なのでぜひみなさん試してみてください！


## 補足
メンションってどうやるんだろうと、ふと調べてみました。
メンションをさせたい場合は```<@ User id>``` となるようにUser id を選択してやると良いみたいです！ 
![スクリーンショット 2022-04-17 9.23.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277999/38256d2f-b71d-099c-d6ec-d946d0530f82.png)

参考文献
https://blog.pirox.dev/2020/04/27/071145#%E3%83%A1%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3