http://qiita.com/kinpira/items/bf1df2c1983ba79ba455
で復習
対話型でslackerがうまく行くか??
■メッセージ
from slacker import Slacker
token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
slacker = Slacker(token)
channel_name = “#” + “general”
message = ‘APIだよ(2017/04/19 22:30)’
slacker.chat.post_message(channel_name, message)
from slacker import Slacker
token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
slacker = Slacker(token)
channel_name = “#” + “general”
message = ‘APIだよ(2017/04/19 22:30)’
slacker.chat.post_message(channel_name, message)
<slacker.Response object at 0x76b2f930>
■画像
from slacker import Slacker
token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
slacker = Slacker(token)
channel_name = “#” + “general”
slacker.files.upload(‘/var/lib/motion/01-20170419214221-00.jpg’)
from slacker import Slacker
token = “xoxp-169850188932-170503111255-169851330916-e8dfbff8d7561bf686f4fc656083ed2f”
slacker = Slacker(token)
channel_name = “#” + “general”
slacker.files.upload(‘/var/lib/motion/01-20170419214221-00.jpg’)
<slacker.Response object at 0x76a84930>
result = slacker.files.upload(‘/var/lib/motion/01-20170419214216-01.jpg’, channels=[‘C50ET3AGP’])
slacker.pins.add(channel=’C50ET3AGP’, file_=result.body[‘file’][‘id’])
slacker.pins.add(channel=’C50ET3AGP’, file_=result.body[‘file’][‘id’])
<slacker.Response object at 0x76c2c9b0>
おーーうまく投稿された!!
(ここまでOKみたい、pinでスマホ画面だと投稿がテキスト表題でされとる・・・・)
motion連携
次にmotionで検知したら、slackに投稿するために、motion側にイベント処理を指定していきます。
どうやって指定するかというと、motionにはイベント時に意図したスクリプトを指定し、実行させる為の下記optionが存在します。
今回はon_picture_saveを利用して、Slackに投稿させる事にします。
次にmotionで検知したら、slackに投稿するために、motion側にイベント処理を指定していきます。
どうやって指定するかというと、motionにはイベント時に意図したスクリプトを指定し、実行させる為の下記optionが存在します。
今回はon_picture_saveを利用して、Slackに投稿させる事にします。
/home/pi/slackbot/slack_bot.py
================================
# -*- coding: utf-8 -*-
import sys
from private import TOKEN
from slacker import Slacker
================================
# -*- coding: utf-8 -*-
import sys
from private import TOKEN
from slacker import Slacker
class Slack(object):
__slacker = None
def __init__(self, token):
self.__slacker = Slacker(token)def get_channnel_list(self):
“””
Slackチーム内のチャンネルID、チャンネル名一覧を取得する。
“””
# bodyで取得することで、[{チャンネル1},{チャンネル2},…,]の形式で取得できる。
raw_data = self.__slacker.channels.list().body
self.__slacker = Slacker(token)def get_channnel_list(self):
“””
Slackチーム内のチャンネルID、チャンネル名一覧を取得する。
“””
# bodyで取得することで、[{チャンネル1},{チャンネル2},…,]の形式で取得できる。
raw_data = self.__slacker.channels.list().body
channnels = []
for data in raw_data[“channels”]:
channnels.append(dict(channel_id=data[“id”], channel_name=data[“name”]))
return channnels
for data in raw_data[“channels”]:
channnels.append(dict(channel_id=data[“id”], channel_name=data[“name”]))
return channnels
def post_to_file(self, file_path, channel):
result = self.__slacker.files.upload(file_path, channels=[channel])
self.__slacker.pins.add(channel=channel, file_=result.body[‘file’][‘id’])
result = self.__slacker.files.upload(file_path, channels=[channel])
self.__slacker.pins.add(channel=channel, file_=result.body[‘file’][‘id’])
if __name__ == “__main__”:
param = sys.argv
file_path = param[1]
file_path = param[1]
slack = Slack(TOKEN)
channnels = slack.get_channnel_list()
slack.post_to_file(file_path, channnels[0][“channel_id”])=================================
channnels = slack.get_channnel_list()
slack.post_to_file(file_path, channnels[0][“channel_id”])=================================
実行権限の付与を忘れずに。
# chmod a+x slackbot/slack_bot.py
# chmod a+x slackbot/slack_bot.py
ではmotionを起動します!
# sudo motion -c /etc/motion/motion.conf
写真がsaveされていく。・・・・いや行かない。。。。ダメか?!!