pythonのslackclientでmessage buttonを作る
はじめに
チームで共有出来るTodoリスト的なものを目指してMessage Buttonの出し方を調べてみた
結構Jsonで直にAPIを叩く記事は見つかるけどslackclientを使ったものは見かけないのでメモ
slackclient
PythonからslackのAPIが叩けるライブラリ
予めアクセストークンを用意しておく必要がある
投稿
1from slackclient import SlackClient
2
3slack_token = os.environ["SLACK_API_TOKEN"]
4sc = SlackClient(slack_token)
5
6sc.api_call(
7 "chat.postMessage",
8 channel="#python",
9 text="Hello from Python! :tada:"
10)
シンプル
ボタン付き投稿
ボタンの作り方自体は
に書いてある これを参考に作る
1import json
2from slackclient import SlackClient
3
4slack_token = os.environ["SLACK_API_TOKEN"]
5sc = SlackClient(slack_token)
6
7attachments = [{
8 "fallback": "",
9 "text": u"ボタンの説明",
10 "callback_id": "",
11 "color": "#008000",
12 "attachment_type": "default",
13 "actions": [
14 {
15 "name": "done",
16 "text": "ボタン1",
17 "type": "button"
18 }
19 ]
20}]
21
22sd.api_call(
23 "chat.postMessage",
24 channel="チャンネル名",
25 text="ボタン付き投稿です",
26 attachments=json.dumps(attachments)
27)
とりあえずこれでボタン付き投稿できる
詰まったポイントはjson.dumpsしておかないと行けない点
あとそもそもapi_callの引数がどういう扱いなのか知らなかった
結局可変長引数でpostデータに入れてくれるみたいなのでこんな感じになった
ボタンの動作
ボタン付き投稿はHTTPS認証が出来るWebサーバーがないとボタンの動作が作れないらしいのでその辺調査中
アプリを作成してOauth2認証で得られるTokenだとRTMが利用出来ないんだけど…?
とりあえず今回はチームにBotを追加してそのTokenを利用してRTMでメッセージが来たら返事をするようにしてみた
そのためボタンを押しても無反応