スポンサーリンク

【Raspberry Pi】ラズパイでSlackに投稿する方法

Tool

Raspberry PiでSlackにテキストや画像を投稿する方法を紹介します。Slack APIを使うことで簡単にテキストや画像を投稿することができるで実践してみます。

Raspberry PiからSlackに投稿するためにはPythonを使ってプログラムを行います。そのためにSlackのワークスペースのIDAppのTokenが必要になります。こちらの取得方法も併せて紹介します。

チャットツールを使うことで簡単にラズパイで撮影した写真を送れるので色んなことへ応用することがでるのでチャレンジしてみてください!

Slackに投稿する手順

・Slackのワークスペースの作成
・Slack APIからAppの作成 –> Tokenの取得
・チャンネルIDの取得
・Pythonで投稿する

Rakuten

ワークスペースの作成

h2_0

新しくSlackのワークスペースを作成するからワークスペースを作成します。既にワークスペースがある方はそちらを使っても問題ありませんので、「Slack APIからAPPの作成」へ進んでください。

Slackアカウントをお持ちでない方はアカウント登録から行う必要があります。

Slack APIからAppの作成

ワークスペースの作成が完了したら、Slack APIにアクセスをしてAppを作成しましょう。Appを作成することでTokenの発行をすることができます。

それではappの作成手順を紹介します。

Slack APIのトップページからCreate an app をクリック

https://api.slack.com/

From scratch をクリック

Appの名前とワークスペースを選択し Create App をクリック
App Nameを任意に設定(今回はtestと命名)
Pick a workspace to develop your app in:にワークスペースを選択

Feature > OAuth&Permissions をクリック
作成したAppの権限の追加を行います。

スコープを設定する
Slack APIではスコープを追加することで様々なことができるようになります。作成したAppにSlack上で行えるアクションの権限を付与するものです。今回はテキストのチャット投稿画像投稿できる機能を追加します。

ScopesBot 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



テキストメッセージをチャット投稿

下記のプログラムに先ほど取得したtokenchannelを記載します。それぞれ文字列として記載してください。今回送信するテキストメッセージはHello World!としていますが、お好きに変更して構いません。

tokenchannelを記載したら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をコメントアウトしていただければ良いです。

先ほどと同じようにtokenchannelを記載したら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へテキストと画像を投稿することができました!

まとめ

h2_4

今回はラズパイからSlackにテキストメッセージの投稿や画像投稿を実践する方法を紹介しました。

Python環境があればラズパイからじゃなくても投稿することができるので是非チャレンジしてください。

カメラモジュールと組み合わせて監視カメラの投稿ようにSlackを活用してみようと思います!

コメント

タイトルとURLをコピーしました