slack に投稿された文章を解析して、次のアクションにつなげる部分を作成する。
以下の図の赤枠の部分。

slack には、Bolt という便利なボットツールがあるので、それを活用させてもらいます。
今回もサーバに合わせて、pythonで処理を作成するため、Slack Bolt for Python を使います。
slack Bolt のインストールと基本設定
インストールと基本の設定については、オフィシャルページがかなり詳しいので、そちらを確認ください。
ラズパイ(Rapsberry Pi)に、必要なインストールを行います。
Boltでのデータ取得とアクション操作
基本的には、slackへの投稿を正規表現でチェックして、該当する指示を割出して、それに対するアクション(赤外線リモコンへの指示やwifiでの特定コマンドの送信 など)を呼出す処理を作成する。
<main.py>
import os
from time import sleep
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import bravia1
import raspi_remocon2
########
# 定義 #
########
app = App(token=os.environ.get( "SLACK_BOT_TOKEN" ))
###############
## 電気関連
###############
##/ 電気をつける
@app.message(re.compile("電気.*つけ.*"))
def message_lightON(message, say):
data = "irdata/light-power.data"
raspi_remocon.trans( data )
say(f"light-ON")
##/ 電気を消す
@app.message(re.compile("電気.*消.*"))
def message_lightOFF(message, say):
# 電気のタイプに応じて処理を変える必要あり
# 電気は、点灯→常夜灯→OFF→点灯 を1ボタンでサイクリック制御のため
data = "irdata/light-power.data"
raspi_remocon.trans( data )
sleep(0.5)
raspi_remocon.trans( data )
say(f"light-OFF")
##############
# テレビ関係
##############
##/ テレビをつける 消す
@app.message(re.compile("テレビ.*(つけ).*"))
def message_TVON(message, say):
bravia.send("TV-POWER-ON")
say("TV-ON")
##/ テレビを 消す
@app.message(re.compile("テレビ.*(消し).*"))
def message_TVOFF(message, say):
bravia.send("TV-POWER-OFF")
say("TV-OFF")
##/ チャンネルを変える
@app.message(re.compile("チャンネル.*(して|変|し て).*"))
def message_TVch(message, say):
ch = 0
sch = re.sub( r"\D", "", message["text"] ) # メッセージから数字を抽出してint に変換
if ( sch != "" ):
ch = int( sch )
raspi_remocon.trans(f"irdata/tv-{ch}ch.data")
say(f"TV-CH-{sch}")
else:
raspi_remocon.trans("irdata/tv-ch-up.data")
say("TV-CH-CHANGE")
#-----------------------------------------------------------#
#アプリ起動
if __name__ == "__main__":
SocketModeHandler( app, os.environ["SLACK_APP_TOKEN"]).start()
これで、slack に「テレビをつけて」と書き込めば、テレビを操作する呼出しが出来るようになりました。
動作確認としては、コマンドの部分をコメントアウトして、slack上で、指示と応答(TV-ON)などのやり取りが出来るところまで確認できたらこのパートはOKです。
目次ページに戻る
コメント