Slack API 作成と python でSlack SDKを利用してチャンネルにメッセージを投稿


# Slack Bot 作成
①　Slack API のアプリケーション管理ページにアクセスします。
    https://api.slack.com/apps

②　「Create an App」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/668137cd-342d-f22a-20aa-190ba19ee394.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/cd93ec5b-b089-dc4b-2cfc-b79cf204149e.png)

③「App Name」に任意のアプリ名を入力し、「Development Slack Workspace」で対象となるワークスペースを選択して、「Create App」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/3c30eb2c-938d-b07e-0a9a-a91094e229a2.png)

④　左側のメニューで「OAuth & Permissions」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/13754772-cb3a-c3e3-bb3c-f9d444eef0ce.png)

⑤「Scopes」の下の「Bot Token Scopes」の「Add an OAuth Scope」ボタンをクリックし、必要な権限を追加します。本例では、chat:write（メッセージの送信）を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/2ba09354-fe6e-7f33-c5ef-983559e28609.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/240eefc1-0c3c-6ef6-8d87-0a27e10584c0.png)

⑥　左側のメニューで「App Home」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/72927e08-5426-02f8-56e5-10ba8d25eea8.png)

⑦「App Home」ページ内の「Your App’s Presence in Slack」の下にある「Edit」ボタンをクリックし、「Display Name」および「Default Username」に任意の名前を入力して保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/908e8669-d98d-9ba1-5568-e1125ff33b13.png)

⑧「OAuth & Permissions」ページに戻り、「Install to Workspace」をクリックし、アプリをインストールします。この時点で Bot Token が生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/48d7d3c0-c6d5-cabd-ccfe-c5688a3f1e1a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/8e52f275-2be2-3926-7f4a-c8b915c53c50.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/056ef46b-af45-69b7-af0c-9bc11efb7ee8.png)

#  Slack API トークンの取得

①　作成した Bot の設定ページにアクセスします。
②　「OAuth & Permissions」のページを開き、「Bot Token」欄に表示されている API トークンをコピーします。このトークンは、「xoxb-」で始まります。
③　API トークンを環境変数の設定で使用するために、.env ファイルに以下の形式で追加します。

```py
SLACK_API_BOT_TOKEN=slack_api_bot_token # Slack API トークン
```
これで Slack 側で Bot が作成され、API トークンも取得できました。



# Slack Python SDK でチャンネルにメッセージを投稿
 # 1 必要なライブラリのインストール
①  slack_sdk ：Slack SDK
　　詳細はPython Slack SDK 公式サイトから確認させてください。
　　https://slack.dev/python-slack-sdk/installation/index.html
②  python-dotenv: .env ファイルから環境変数を読み込むためのライブラリ
```py
 pip install slack_sdk 
 pip install python-dotenv
```
 # 2 環境変数の設定
プロジェクトのルートディレクトリに .env という名前のファイルを作成し、以下のように環境変数を記述。
①　SLACK_API_BOT_TOKEN: Slack API トークン
②　SLACK_CHANNEL: Slack 通知を送信するチャンネル名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/7e0b8e82-d5cf-e79e-3d81-8041da84ced5.png)

 # 3 実行スクリプト
```py
import os
import logging
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from dotenv import load_dotenv

# デバッグレベルのログを出力します
logging.basicConfig(level=logging.DEBUG)

load_dotenv(verbose=True)
slack_token = os.getenv("SLACK_API_BOT_TOKEN")
slack_channel = os.getenv("SLACK_CHANNEL")
client = WebClient(token=slack_token)

try:
    
    blocks = [
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": ":wave: 連携成功かな :bow:",
            },
        },
    ]
    response = client.chat_postMessage(
        channel=slack_channel,
        text="はじめまして :wave: pythonからSlackへ通知テスト:bow:",
        blocks=blocks
    )
except SlackApiError as e:
    # You will get a SlackApiError if "ok" is False
    # str like 'invalid_auth', 'channel_not_found'
    assert e.response["error"]   
```

実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/222e2131-82ed-f2ea-41ae-1396d09a9f40.png)

# 補足／権限追加について
　①　権限追加
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/eb256317-8519-e531-aaba-b9540a98cff5.png)
　② 「Reinstall to Workspace」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/2c7b7f43-3645-95d3-9cd5-0f3a0720b99a.png)
　③「許可」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592268/6422ebca-0ab9-4fed-dd52-5d8cdfd02a9d.png)


# Webhoot 機能よりメッセージ投稿については以下記事を参考してください。
https://qiita.com/taidong5588/items/48e6d1ab1fbfcd34929f