Raspberry PiでSlackにテキストや画像を投稿する方法を紹介します。Slack APIを使うことで簡単にテキストや画像を投稿することができるで実践してみます。
Raspberry PiからSlackに投稿するためにはPythonを使ってプログラムを行います。そのためにSlackのワークスペースのIDとAppのTokenが必要になります。こちらの取得方法も併せて紹介します。
チャットツールを使うことで簡単にラズパイで撮影した写真を送れるので色んなことへ応用することがでるのでチャレンジしてみてください!
ワークスペースの作成
新しくSlackのワークスペースを作成するからワークスペースを作成します。既にワークスペースがある方はそちらを使っても問題ありませんので、「Slack APIからAPPの作成」へ進んでください。
Slackアカウントをお持ちでない方はアカウント登録から行う必要があります。
Slack APIからAppの作成
ワークスペースの作成が完了したら、Slack APIにアクセスをしてAppを作成しましょう。Appを作成することでTokenの発行をすることができます。
それではappの作成手順を紹介します。
Slack APIのトップページからCreate an app
をクリック
From scratch
をクリック
Appの名前とワークスペースを選択し Create App
をクリック
・App Name
を任意に設定(今回はtestと命名)
・Pick a workspace to develop your app in:
にワークスペースを選択
Feature
> OAuth&Permissions
をクリック
作成したAppの権限の追加を行います。
スコープを設定する
Slack APIではスコープを追加することで様々なことができるようになります。作成したAppにSlack上で行えるアクションの権限を付与するものです。今回はテキストのチャット投稿と画像投稿できる機能を追加します。
Scopes
のBot Token Scopes
まで下にスクロールし、Add an OAuth Scope
から下記を選択して追加してください。
・channels:read
・chat:write
・files:write
これでAppの作成は完了となります。最後にインストールとTokenの発行を行います。
AppのインストールとTokenの発行Install App
からInstall App to Your Team
を開き、Install to Workspace
をクリック
「許可する」をクリック
自動的に画面が遷移します。
これでTokenを取得することができます。Bot User OAuth Token
に表示されているTokenをこの後使用します。使用の際はCopy
をクリックすることでコピーできます。
チャンネルIDの取得
ラズパイからPythonでSlackに投稿するためにIDの取得をします。こちらで取得したチャンネルへラズパイから投稿を送信することになります。
Slackのワークスペースを開くと先ほど追加したAppが表示されていると思います。
投稿を送信したいチャンネルまたは追加したAppを選択してリンクをコピー
します
コピーしたリンクは下記のような形になっており、最後の部分がチャンネルIDとなります。
https://workspace.slack.com/archives/[チャンネル名ID]
今回は追加したAppのリンクをコピーしましたが、チャンネルのgeneralや任意の追加したチャンネルのリンクからチャンネルIDを取得しても構いません。
取得したチャンネルIDのチャンネルへラズパイからチャットメッセージを送ることになります。
Pythonで投稿する
これで準備は整いましたので、さっそくPythonを使ってラズパイからSlackに投稿をしてみます!
テキストをチャット投稿する場合と画像投稿する場合で少しプログラムが異なるのでそれぞれ紹介します。紹介するプログラムなどのディレクトリ階層は下記のような状態で今回は実行します。
$ ls # ディレクトリ階層
send_message.py test.jpg send_image.py
テキストメッセージをチャット投稿
下記のプログラムに先ほど取得したtoken
とchannel
を記載します。それぞれ文字列として記載してください。今回送信するテキストメッセージはHello World!
としていますが、お好きに変更して構いません。
token
とchannel
を記載したらsend_message.py
として保存します。
import requests
token = 'AppのToken'
channel = 'チャンネルID'
text = 'Hello World!'
url = "https://slack.com/api/chat.postMessage"
data = {
"token": token,
"channel": channel,
"text": text
}
requests.post(url, data=data)
ターミナルを起動し、コマンドラインに下記を入力します。
$ python3 send_message.py
Slackにテキストメッセージが投稿されていたら成功です!
画像をチャット投稿
画像投稿では投稿する画像のファイルパスを指定します。また、textには画像投稿の際にメッセージをつけて投稿することができます。画像のみを投稿したい場合はinitial_comment
をコメントアウトしていただければ良いです。
先ほどと同じようにtoken
とchannel
を記載したらsend_image.py
として保存します。
import requests
token = 'AppのToken'
channel = 'チャンネルID'
text = 'Hello World!'
filepath = 'test.jpg'
url = "https://slack.com/api/files.upload"
data = {
"token": token,
"channels": channel,
"initial_comment": text
}
files = {'file': open(filepath, 'rb')}
requests.post(url, data=data, files=files)
ターミナルを起動し、コマンドラインに下記を入力します。
$ python3 send_message.py
Slackに画像が投稿されていたら成功です!
無事にラズパイからSlackへテキストと画像を投稿することができました!
まとめ
今回はラズパイからSlackにテキストメッセージの投稿や画像投稿を実践する方法を紹介しました。
Python環境があればラズパイからじゃなくても投稿することができるので是非チャレンジしてください。
カメラモジュールと組み合わせて監視カメラの投稿ようにSlackを活用してみようと思います!
コメント