アプリ作成
ここからCreate an app > From scratch を選択し、アプリ名とslackのどのワークスペースを使うか選択する。
スコープ
App Manifestに
oauth_config:
scopes:
bot:
- channels:history
- groups:history
- im:history
- mpim:history
を追加して
以下に変える
_metadata:
major_version: 1
minor_version: 1
display_information:
name: APP_NAME
features:
bot_user:
display_name: APP_NAME
always_online: false
oauth_config:
scopes:
bot:
- channels:history
- groups:history
- im:history
- mpim:history
settings:
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
※ OAuth & Permissions > Scope > User Token Scopes > Add an OAuth Scopeから追加することもできる
トークン作成
OAuth & Permissions > OAuth Tokens for Your Workspace から Install to Workspace を押して
トークンを発行する。
コード
import requests
SLACK_CHANNEL_ID = 'SLACK_CHANNEL_ID'
SLACK_URL = "https://slack.com/api/conversations.history"
TOKEN = "TOKEN"
def main():
payload = {
"channel": SLACK_CHANNEL_ID
}
headersAuth = {
'Authorization': 'Bearer '+ str(TOKEN),
}
response = requests.get(SLACK_URL, headers=headersAuth, params=payload)
json_data = response.json()
msgs=[]
for i in range(len(response.json()['messages'])):
msgs.append(json_data['messages'][i]["text"])
msgs.reverse()
return print(msgs)
if __name__ == "__main__":
main()
-
slackの該当チャンネルまで行ってURLを確認すると
https: //app.slack.com/client/T0123456789/C0123456789
といった感じになっており、
SLACK_CHANNEL_IDは 一番最後にある、ここで言う "C0123456789"である。 -
TOKENは先ほど発行したものであり、xoxbからスタートしている。
-
msgs.reverse()はmsgsでslackでのテキストメッセージを最新のものから取得するため、リスト内を時系列順に戻すためである。
メッセージの取得
ターミナルで このファイルを実行すると
{'ok': False, 'error': 'not_in_channel'}
とでた。
Slack api conversations.history returns error: not_in_channel
によるとSlackの該当チャンネルにAPPを追加する必要があるようだったので、
slackの該当チャンネルの右上の人のマークを押し、インテグレーション>APPからアプリ追加を選択し、先ほど作ったアプリ名を追加し、再度ファイルを実行すると
メッセージをリストで取得することができた。
展望
このコードでは返信をしたときのメッセージを取得することができないので、次は試みたい。