メモ程度にまとめます.
以下python3を用いた.
#目次
#参考にしたサイト
- https://github.com/slackapi/python-slackclient
- https://api.slack.com/
- https://realpython.com/blog/python/getting-started-with-the-slack-api-using-python-and-flask/
#環境
- pyenv 3.6.3
#初期設定
python-slackclient
https://github.com/slackapi/python-slackclient
$ pip install slackclient
slack APIを使用するにはslackのトーケンが必要になってくる.
$ export SLACK_TOKEN='your token'
チャンネルリスト取得
slack APIを使ってメッセージやファイルを送るのにはIDが必要になってくるのでとりあえず初めにチャンネルIDを取得するためにチャンネルリストを返すプログラムを作った.
import os
from slackclient import SlackClient
slack_token = os.getenv("SLACK_TOKEN")
client = SlackClient(slack_token)
これでslack APIが使用できる環境ができた.
そこでチャンネルリストを返す関数を作って見た.
def channel_list(client):
channels = client.api_call("channels.list")
if channels['ok']:
return channels['channels']
else:
return None
これでうまくいけばJSON形式で以下のようになる
[{'id':'channel id', 'name':'channel name', 'is_group':True, ...,}]
ただし上記はpublicチャンネルだけであるので、privateチャンネルのidを得るためにはchannels.list
ではなくgroups.list
を使用するべき.
メッセージを送る
idを取得できたので早速メッセージを送る関数を作ってみた
def send_message(client, channel_id, message):
client.api_call(
"chat.postMessage",
channel=channel_id,
text=message
他にも色々条件をつけることができるらしいが、とりあえず一番簡単な形式がこれだと思う.
でも文章長すぎたりするとあれかなって思ったのでsnippetも試してみた.
def send_file(client, channel_id, content, title):
client.api_call(
"files.upload",
channels=channel_id,
content=content,
title=title
デフォルトだとtextファイルになるらしいけど、filetype
でいじれるらしい.
あと、content
の代わりにfile
を設定すればファイルをアップロードできるらしい.
最後に
一通りやってみたところ結構簡単で色々できるんだなって感じです.