Slack Appを作成し、Bot Userとして、任意のチャネルに投稿する(Slackの設定 & curlコマンド)
概要
この記事では、以下の2点を扱います:
- プログラムからSlackに投稿するために必要なSlackの設定
-
curl
コマンドでSlackの任意のチャネルに投稿する
動作環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.4
BuildVersion: 18E226
$ curl --version
curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.5 zlib/1.2.11 nghttp2/1.24.1
(以下略)
Slackの設定
slackapi/python-slackclientのドキュメントがわかりやすかったです。
https://github.com/slackapi/python-slackclient/blob/master/tutorial/01-creating-the-slack-app.md
前作業:投稿したいワークスペースにブラウザでログインしておくことで、スムーズに運びました
- https://api.slack.com/apps?new_app=1 にアクセス
- 1で作ったアプリの設定画面が表示されます。左側の Features の Bot User という項目から Bot Userとして追加
- 左側の Settings の Install App という項目から ワークスペースにAppをインストール
curl
で投稿する
Slackのドキュメント https://api.slack.com/web のサンプルにならって、curl
3でSlackに投稿してみます。
- 投稿先チャネル:#experiments(
--data
に指定したJSONのchannel) - 投稿内容:Slack post by curl(
--data
に指定したJSONのtext)
$ curl -X POST -H 'Authorization: Bearer xoxb-1234-56789abcdefghijklmnop' \
-H 'Content-type: application/json' \
--data '{"channel":"experiments","text":"Slack post by curl"}' \
https://slack.com/api/chat.postMessage
※1つ目のヘッダ(-H
)はxoxb-...nop
の部分を、上でインストールしたAppのBot User OAuth Access Tokenに置き換えます
日本語でも投稿できました。
Incoming Webhookと何が違うのか
プログラムからSlackに投稿する仕組みとしては Incoming Webhook も知られています。
設定方法は例えば、以下のドキュメントが参考になります:https://api.slack.com/messaging/webhooks
Incoming Webhookのイメージは、「特定のチャネル に投稿できるURL」です。
そこに投稿内容のJSONをPOSTすることで投稿されます。
この記事で扱ってきたBot Userとの違いは、Bot Userであれば投稿するチャネルを任意に変えられることと考えています。
上記のcurlコマンドで投稿先チャネルの指定を変えることで、簡単に他のチャネルに投稿できます(#generalに変える例を示します)。
$ curl -X POST -H 'Authorization: Bearer xoxb-1234-56789abcdefghijklmnop' \
-H 'Content-type: application/json' \
--data '{"channel":"general","text":"Slack post by curl"}' \
https://slack.com/api/chat.postMessage
ただ、私自身そこまでSlackのAPIを使い込んでいるわけではありませんので、Incoming Webhookでしかできないことがあればコメントなどで教えていただけると嬉しいです。
追伸
Bot Userはどのチャネルにも投稿できる分、広い範囲へのアクセス権限が与えられます。
それに対しIncoming Webhookは、1チャネルだけとアクセス権限が狭められるという利点があるかもしれません(詳しく調べてはいませんが)。
-
トークンの確認や、Slack App の管理は、https://api.slack.com/apps にアクセスすることで行えるようです ↩
-
この記事では使っていない「OAuth Access Token」ですが、Slack Web APIを呼び出す際に使いました(Testerに設定したり、URLのクエリに渡したりします) ↩
-
curlはOSに合わせてインストールしてください。ここでは詳細には立ち入りませんが、macOS環境には
brew
(Homebrew)でインストールしました。例えば、Ubuntuにはapt
でインストールすることになると思います ↩
Author And Source
この問題について(Slack Appを作成し、Bot Userとして、任意のチャネルに投稿する(Slackの設定 & curlコマンド)), 我々は、より多くの情報をここで見つけました https://qiita.com/ftnext/items/9c6a264a85e3be4f4dc4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .