Slack bot ターミナル上から指定したメッセージを指定チャンネルに送信するチュートリアル(Slack既存アプリ使用)

# 目的

- slackのチャンネルにMacのターミナル上からメッセージを送信するbotの作成をまとめる

# 実施環境

- ハードウェア環境

| 項目 | 情報 |
| --- | --- |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook  Air (11-inch ,2012) |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 |
| メモリ | 8 GB 1600 MHz DDR3 |
| グラフィックス | Intel HD Graphics 4000 1536 MB |

# すいません

- もっとやりやすい方法や簡単な方法、無駄な手順が含まれている可能性がある。
- まとめている途中で余分な記載に気がついたが一旦今回はこのまま記事とする。

# 概要

1. 新規ワークスペース作成
1. ワークスペースに追加するbotの作成と設定
1. 送信テスト

# 詳細

1. 新規ワークスペース作成
    1. 下記のリンク先にアクセスする。
        - [https://slack.com/create](https://slack.com/create)
    1. 下記の様な画面が開く。
    
        ![ワークスペースを作成する___Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/466f6716-a88f-d3cd-986a-9cf603f53234.png)

    1. 自分のメールアドレスを入力して「次へ」をクリックする。
    1. 先に入力したメールアドレスの受信ボックスに下記の様なメールが届いていることを確認する。

        ![Slack_の確認コード___377-178_-_miriwo0517_gmail_com_-_Gmail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/ad2d0bc2-3c03-67c6-d1a1-fbafab509739.png)

    1. メールに記載されている6桁の数字を自分のメールアドレスを入力して「次へ」をクリックしたブラウザ画面に表示されているコード入力欄に記載する。

        ![ワークスペースを作成する___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/89733ee7-f476-e3df-a886-0b6ab5579397.png)

    1. ワークスペース名の指定で「TESTS」を入力して「次へ」をクリックする。(※今回はチュートリアルのためTESTSと言う名前にしたが慣れたら任意のものでOK)

        ![ワークスペースを作成する___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/1aded81f-933e-01f8-6c27-9da96e603056.png)

    1. チャンネル名の指定で「test」を入力して「次へ」をクリックする。(※今回はチュートリアルのためtestと言う名前にしたが慣れたら任意のものでOK)

        ![ワークスペースを作成する___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/99539a8a-9b70-c678-fb58-b5c52d3495bb.png)

    1. 下記の情報入力画面では「後で」をクリックする。

        ![ワークスペースを作成する___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/bf6cf567-3a22-d77d-4561-2ea245fcd53b.png)

    1. 下記の画面で「Slackでチャンネルを表示する」をクリックする。

        ![ワークスペースを作成する___Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/2d837915-c15a-7130-00af-6410229ae9b7.png)

    1. 下記の様にブラウザにて作成したワークスペースが表示される。(Slackのデスクトップアプリを入れている方はブラウザではなくSlackのデスクトップアプリでワークスペースが起動する可能性がある。)このページは消さないと後で確認が楽である。

        ![Slack___Slack_を始める___TESTS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/5eb49d8b-271d-3e46-59ca-29885fc807ae.png)

1. ワークスペースに追加するbotの作成と設定
    1. 下記のリンクにアクセスする。
        - [Slack API](https://api.slack.com/)
    1. 下記のサイトが開く。

        ![Slack_API___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/1c57c597-fd2d-fe5b-dc7f-4a2d8eb0a857.png)

    1. 「Start Building」をクリックする。

        ![Slack_API___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/d8edcd5d-d3b2-9d1b-9a1b-a55e32d61552.png)

    1. 下記の情報入力画面が開く。

        ![Slack_API__Applications___Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/1d0c2070-2b6d-047b-aa6d-1ad60bc051ec.png)

    1. App Nameには「send string test」と入力する。(※今回はチュートリアルのためsend string testと言う名前にしたが慣れたら任意のものでOK)

        ![Slack_API__Applications___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/f6f4f042-37f2-49eb-8180-908697e7b9b5.png)

    1. Development Slack Workspace は先に作成したワークスペースである「TESTS」を選択する。

        ![Slack_API__Applications___Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/2d4be89f-0a51-b4f7-9781-b5b994dfda3a.png)

    1. 下記の様になっていることを確認して「Create app」をクリックする。ここまででアプリの作成が完了した。

        ![Slack_API__Applications___Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/91fd3697-401e-3a45-7c50-1409f0742fda.png)

    1. 下記の様な画面が表示されたことを確認する。

        ![Slack_API__Applications___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/d4709445-d58e-d3ad-0a05-f6027fea6d76.png)

    1. 先の画面を少し下にスクロールし「Permissions」と書かれている部分をクリックする。

        ![Slack_API__Applications___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/dc52b6fc-d907-85f8-b918-10e2e7133718.png)

    1. 下記の様な画面が表示されたことを確認する。

        ![Slack_API__Applications___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/c13b51c6-e0e9-ce14-3961-0f681cc181c2.png)

    1. 先の画面を少し下にスクロールし「Scopes」と書かれている部分を探す。

        ![Slack_API__Applications___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/4c0c42fe-f409-f430-c967-cf8725f1e9db.png)

    1. 「Bot Token Scopes」の「Add an OAuth Scope」をクリックする。

        ![Slack_API__Applications___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/b20f0cae-6f1b-2a50-3e5d-73f2d87b8659.png)

    1. プルダウンメニューの中から「chat:write」を選択する。

        ![Slack_API__Applications___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/e75f509c-88fd-e46b-788a-5342bbf13f42.png)

    1. 下記の様に記載されたことを確認する。

        ![Slack_API__Applications___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/94d197a2-85d3-a4e9-e6ef-44b1bfbc86f5.png)

    1. 同ページの上部にスクロールで移動する。

        ![Slack_API__Applications___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/d2c510d3-facc-14ae-b77b-f249f5497b1d.png)

    1. 同ページ上部の「Install App to Workspace」をクリックする。

        ![Slack_API__Applications___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/4508f2b2-1966-ba38-9440-f815ca42b9dc.png)

    1. 下記ページでは「許可する」をクリックする。

        ![send_string_test_が_TESTS_Slack_ワークスペースにアクセスする権限をリクエストしています___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/3dad1718-97c5-3c0a-4ba8-48fdec0dfcdb.png)

    1. 下記の様なページが開いたことを確認する。

        ![Slack_API__Applications___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/b32834fa-1136-86b5-8e87-56e5d004a4b4.png)

    1. 下記のリンク先にアクセスする。
        - [https://miriwo-hq.slack.com/apps/new/A0F7XDUAZ--incoming-webhook-](https://miriwo-hq.slack.com/apps/new/A0F7XDUAZ--incoming-webhook-)

    1. 下記の様なページが開いたことを確認する。

        ![Incoming_Webhook___miriwo_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/4b6dc440-a41f-842c-5094-2c66a719d833.png)

    1. ページ右上のワークスペースの指定で「TESTS」が指定されていない場合、プルダウンから指定する。

        ![Incoming_Webhook___miriwo_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/797c89bb-7f25-dc19-d8ae-336b48df9743.png)  
        ![Incoming_Webhook___miriwo_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/e2f4a643-2990-b1cd-5f55-0ab711a9f03c.png)

    1. 下記の様にワークスペースが「TESTS」が選択されていることを確認する。

        ![Incoming_Webhook___TESTS_Slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/0e9b5d3f-b228-ec86-5aaf-9c4f216ddadd.png)

    1. 「チャンネルへの投稿」にて「#test」を選択してメッセージを送信するチャンネルを指定する。

        ![Incoming_Webhook___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/64c8dbdb-f290-983c-f573-34268abc70cc.png)

    1. チャンネル名を確認して「Incoming Webhook インテグレーションの追加」をクリックする。

        ![Incoming_Webhook___TESTS_Slack_と_Slack___test___miriwo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/ec086480-fa00-8b74-a68d-d3b8dc6542e7.png)

    1. ページ遷移後Webhook URLをコピーする。

        ![Incoming_Webhook___Slack_App_ディレクトリ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/88f0a1b7-392d-da6a-6ab6-de767c3ed7e4.png)
1. 送信テスト
    1. 下記の内容をMacのterminalで実行する。(全てをコピーして実行しないで一行づつ実行する、実行後に「ok」と出力されることを確認する。)("text": "test",のtestを任意の文字列に変えることによりお好みの文字列をチャンネルに投稿することが可能である。)

        ```terminal
        $ curl -X POST "先にコピーしたWebhook URL" -d 'payload={
          "channel": "#test",
          "username": "test_user",
          "text": "test",
        }'
        ```
    1. ブラウザかデスクトップアプリで序盤の手順で作成した「TESTS」ワークスペースを開く。

        ![Slack___Slack_を始める___TESTS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/24dd4837-93db-4a8d-8a79-4328e397a648.png)

    1. 「test」チャンネルをクリックする。

        ![Slack___Slack_を始める___TESTS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/a5288e4d-0055-f6fe-17b5-482440183c38.png)

    1. 下記の様にターミナルから送信された文字列がチャンネル上に表示されていれば完了である。

        ![Slack___test___TESTS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/801ecc48-633b-9634-468c-bde09c2b651d.png)

# 参考文献

- [Slack Web APIを使ってアカウントに直接メッセージを送る](https://reffect.co.jp/php/slack-web-api-php-curl)
- [SlackのWebhook URL取得手順](https://qiita.com/vmmhypervisor/items/18c99624a84df8b31008)
- [slack api](https://api.slack.com/)