SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
- 26. Python(RaspberryPi上)でコーディング
> import slackweb
> slack = slackweb.Slack(url="https://hooks.slack.com/services/xxxxxxxxxx")
> slack.notify(text="来週の仮面ライダーゴースト~♪")
$ sudo pip install slackweb
【コーディング】
PythonのCLIで以下のように入力すると簡単にテスト可
【事前準備】
Pythonは便利なライブラリslackwebをインストール
何言ってるのかわからないぐらい簡単に実装ができます。
- 43. PythonでOutgoing Webhooks用サーバを
作成(RaspberryPi python2.7系を使用)
#【続き】
responseValue = ‘テスト'
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
responseData = json.dumps({'text': responseValue})
self.wfile.write(responseData.encode('UTF-8'))
port = 8888
serverAddress = ('', port)
httpd = BaseHTTPServer.HTTPServer(serverAddress, handler)
print('serving at port', port)
httpd.serve_forever()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import SimpleHTTPServer
import BaseHTTPServer
import cgi
import os
import json
class handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_POST(self):
os.environ['REQUEST_METHOD']= 'POST'
datas = cgi.FieldStorage(self.rfile, self.headers)
#【続く】
SimpleHTTPServerの
POSTメソッドをオーバーライド
- 44. PythonでOutgoing Webhooks用サーバを
作成( RaspberryPi python2.7系を使用)
#【続き】
responseValue = ‘テスト'
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
responseData = json.dumps({'text': responseValue})
self.wfile.write(responseData.encode('UTF-8'))
port = 8888
serverAddress = ('', port)
httpd = BaseHTTPServer.HTTPServer(serverAddress, handler)
print('serving at port', port)
httpd.serve_forever()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import SimpleHTTPServer
import BaseHTTPServer
import cgi
import os
import json
class handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_POST(self):
os.environ['REQUEST_METHOD']= 'POST'
datas = cgi.FieldStorage(self.rfile, self.headers)
#【続く】
JSONを生成・Slackへ返信する
- 45. PythonでOutgoing Webhooks用サーバを
作成( RaspberryPi python2.7系を使用)
#【続き】
responseValue = ‘テスト'
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
responseData = json.dumps({'text': responseValue})
self.wfile.write(responseData.encode('UTF-8'))
port = 8888
serverAddress = ('', port)
httpd = BaseHTTPServer.HTTPServer(serverAddress, handler)
print('serving at port', port)
httpd.serve_forever()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import SimpleHTTPServer
import BaseHTTPServer
import cgi
import os
import json
class handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_POST(self):
os.environ['REQUEST_METHOD']= 'POST'
datas = cgi.FieldStorage(self.rfile, self.headers)
#【続く】
ポート番号8888でアクセスを待ち受ける。
- 47. ヨロイ元帥botを作る
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import SimpleHTTPServer
import BaseHTTPServer
import cgi
import os
import RPi.GPIO as GPIO
import time
import json
seconds = 5
class handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_POST(self):
os.environ['REQUEST_METHOD']= 'POST'
datas = cgi.FieldStorage(self.rfile, self.headers)
GPIOを使う設定を追記
- 48. ヨロイ元帥botを作る
token = datas.getvalue('token', '')
service_id = datas.getvalue('service_id', '')
text = datas.getvalue('text', '')
user_name = datas.getvalue('user_name', '')
print token
print service_id
print text
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17, GPIO.HIGH)
time.sleep(seconds)
GPIO.output(17, GPIO.LOW)
GPIO.cleanup()
GPIO 17pinをHI/LOWにする処理
- 49. ヨロイ元帥botを作る
print user_name + ' 裏切り者は殺す。デストロンを代表して。ヨロイ元帥'
responseValue = user_name + ' 裏切り者は殺す。デストロンを代表して。ヨロイ元帥'
self.send_response(200)
self.send_header('Content-type', 'text/json')
self.end_headers()
responseData = json.dumps({'text': responseValue})
self.wfile.write(responseData.encode('UTF-8'))
port = 8888
serverAddress = ('', port)
httpd = BaseHTTPServer.HTTPServer(serverAddress, handler)
print('serving at port', port)
httpd.serve_forever()
JSONデータのレスポンス
書き込んだユーザを取り出して
メッセージを追記