RaspberryPIでSlack APIを利用して通知アプリを作成#1(SlackのAPI登録編）

#今日のゴール
Slackのアカウント登録及びAPI関連設定を行う。
最後はSlackチャネルの一覧を取得するサンプルを実行します。

#事前準備
①SlackのアカウントとWork spaceを作成します。
②Appを作成とScopeを指定します。

##①SlackのアカウントとWork spaceを作成します。
https://slack.com/get-started#/create

###下記の情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/1b4be687-ea6a-1de3-ffc9-5972bd0fd122.png)
###登録したEmailを確認し、その情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/640d8d52-5f95-f0d3-2cc0-75b3ef20d12c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/21f980af-59c3-4a7c-dab9-a1f2496d9d00.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/494ab963-19fe-22d0-d60f-1ce4685635d1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/27044223-2e9d-80f9-5d26-bfef7e7b834b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/471e3f79-4e8b-93c1-8b7f-b5566d000106.png)
※これでWorkSpaceの作成が完了しました。


##②Appを作成とScopeを指定します

###Slackアカウントを作成し、下記のアドレスにアクセスします。
https://api.slack.com/apps?new_app=1

###[Create an App]ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/4ad50d07-2e3f-55b7-b0f2-c6cea9409072.png)

###下記の情報を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/ac80f65c-057d-d672-f241-9e1c48623f62.png)

###APPの作成できました。下記のOff→ONにする必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/e222d9e3-b2f1-a8be-0497-64b29e5677db.png)

###下記のWebhooksをONにします。他のところも必要に応じてOnにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/545c3375-6532-8973-9e46-0eaa1faf5aec.png)

###Basic information画面に戻ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/a9d47f1b-7777-71ea-75c9-99d2636e4288.png)

###自分のWorkspaceにAppをインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/4f465a73-d805-8e37-789a-54105b7a73a0.png)

###チャネルを選択し、Allowボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/40217477-c318-3a52-cdba-4e86c2f57059.png)

###Basic information画面に戻ります。次は「Manage distribution」を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/cf812af3-2472-7e1d-b6c3-96cbbde8e3dc.png)
###「Set Up Redirect URLs」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/961f8d9d-590d-4230-64d1-6c00c045ef4a.png)

###「Add New Redirect URL」ボタンでURLを追加し、「Save URLs」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/924eff92-5752-acf3-0178-b81fe1651366.png)

###apiを使うため、下記の画面でScopeを指定します。
次のURLはScopeの一覧です。沢山ありますが、これは次回に追加しながら確認します。
https://api.slack.com/scopes
Bot Token；これはSlackのBotから実行されるScope指定です。
User Token：これはAppの管理者のアカウントで実行されるScopeです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/3e902d86-8075-2118-ebff-1a4db794fc27.png)

###Slackアプリの機能と権限は、名前付きスコープとそれらがサポートするトークンによって管理されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/93cfd5aa-7a5b-f0a8-c123-a35df49da7ff.png)

##③Appで使えるScopeを追加します。
次のScopeを追加します。「Add an OAuth Scope」ボタンを押下して下記のScope名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/feef2f28-8fca-37d2-ee1d-fe4a217f2370.png)
###★Scopeを追加した後は、「Reinstall App」ボタンでAPPに再インストールします。★
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/8e29d1d0-ce24-3153-5079-51c922168fbb.png)
###チャネルを選択し、「Allow」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/866a707b-1766-f875-ee55-341b0cb0c7d2.png)

###Manage distributionが終わってないので、下記のボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/1ba6da06-0945-64ae-e0f0-9d6c53dd2db4.png)

###下記のチェックを入れます。そして「Update Redirect URIs」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/2ff1ecf6-1538-2cfd-ad29-084d0d153d06.png)

###


#サンプルを実行

##次の画面でbotのTokenを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/162336/6968e175-d953-8cbe-5b16-41e7322358e8.png)

##下記のサンプルコードに上記のBotのTokenを設定し、実行します。
現在のチャネル一覧が表示されます。

```bash
import requests
import json

url = "https://slack.com/api/channels.list"
token = "token key"

def main():
    userlist = {}
    payload = {"token":token }
    response = requests.get(url,params=payload)
    user_json = response.json()
    for i in user_json["channels"]:
        userlist[i["id"]] = i["name"]
        print("id=" + i["id"] + " name=" + i["name"])

if __name__ == '__main__':
    main()
```

##実行結果
```bash
pi@raspberry:~ $ python ch.list.py
id=C014JP6MNPR name=welcome
id=C014JP8GC3Z name=team
id=C015PAVGRT2 name=project
pi@raspberry:~ $
```

#終わりに
SlackのAPIを試すため、このような手順を行わないとできないのが大変ですね。
私の手順も間違えている可能性もあるかもしれないですが、
一応Slackのチャネル一覧を取得することはできました。
Qiitaに残すために０からアカウントを作成し、手順を作成しましたので、
興味ある方はこの手順通りに実施して問題があれば教えていただけますでしょうか。
よろしくお願いいたします。