
slack API 入門 (2) - Pythonによるメッセージ受信
「slack API」で「Python」によるメッセージ受信を行う方法をまとめました。
前回
1. slackアプリの権限の設定
(1) slackのアプリサイトの「OAuth & Permissions → Scopes」で以下の権限を追加。
・channels:history : パブリックチャンネルのメッセージの取得。
・channels:read : パブリックチャンネルの基本情報の取得。
・groups:history : プライベートチャンネルのメッセージの取得。
・groups:read : プライベートチャンネルの基本情報の取得。
2. チャンネルのConversation IDの確認
slackのテスターサイトの「conversations.list」で、チャンネルの「Conversation ID」を確認します。
(1) slackのテスターサイトの「conversations.list」を開く。
(2) 「token」に「トークン」、「types」に「public_channel」または「private_channel」を指定し、「Test Method」をクリック。
ここで表示される「id」が「Conversation ID」になります。
3. conversations.historyの動作確認
「conversations.history」は、メッセージを取得するAPIです。slackのテスターサイトで動作確認します。
(1) slackのテスターサイトの「conversations.history」を開く。
(2) 「token」に「トークン」、「channel」に「Conversation ID」を指定し、「Test Method」をクリック。
4. conversations.repliesの動作確認
「conversations.replies」は、特定のスレッドのメッセージを取得するAPIです。slackのテスターサイトで動作確認します。
(1) slackのテスターサイトの「conversations.replies」を開く。
(2) 「token」に「トークン」、「channel」に「Conversation ID」、「ts」にスレッドの「ts」を指定し、「Test Method」をクリック。
5. Pythonによるメッセージ受信
Pythonによるメッセージ受信を行います。
(1) 「pip」で「requests」をインストール。
$ pip install requests
(2) 以下のPythonスクリプトを作成して実行。
<トークン>と<Conversation ID>に自身のものを指定してください。
import requests
from datetime import datetime
TOKEN = '<トークン>'
CHANNEL = '<Conversation ID>'
url = "https://slack.com/api/conversations.history"
headers = {"Authorization": "Bearer "+TOKEN}
params = {
"channel": CHANNEL,
"limit": 10
}
r = requests.get(url, headers=headers, params=params)
print("return ", r.json())
パラメータは、次のとおりです。
・token : トークン
・channel : Conversation ID
・cursor : カーソル
・inclusive : タイムスタンプ指定時に最新または最古のメッセージを含める
・latest : メッセージの時間範囲の終了(now: Unix Timestamp)
・limit : メッセージの最大数
・oldest : メッセージの時間範囲の開始(0: Unix Timestamp)
「Unity Timestamp」のnowは、datetime.now().timestamp()で取得できます。