20160128SlackのOut GoingAPIを用いた自動処理¶
Contents:
Contents
Incoming WebHooks¶
Browse apps > Custom Integrations > Incoming WebHooks > Config > Add Config
からRequestする。
Outgoing WebHooks¶
これが本ページの主題となる。 Outgoing Webhookでは、予め指定したキーワードが含まれる文字列を受けたときに 外のAPIをたたくことができる。
いくつかのオプションを設定できる Channelはそのキーワードをひっかけるチャンネル。 Trigger Wordはキーワードとすべき文字列。これにマッチしたものがAPIで呼ばれる。 URLが呼ぶWeb API。 Tokenは本文に入る文字列。APIはこのキーワードを確認して本物かどうかを区別する。
サーバ側のスクリプト¶
pythonのスクリプトで処理をする。 wsgiを用いる。
/etc/apache2/sites-enabled/001-wsgi-testに
WSGIDaemonProcess user=nobody group=nogroup threads=10
WSGIScriptReloading On
WSGIScriptAlias /as /home/kanai/json_as.wsgi
のように記載し、 https://github.com/recuraki/PythonJunkTest/blob/master/Flask/json_as.py のようなプログラムを書く。
スクリプトの詳細¶
FlaskではPOSTメソッドで来てかつform[“text”]でテキストを取得できる。すなわち、
from flask import Flask, request
@app.route('/', methods=['POST'])
def index():
stText = request.form["text"]
でstTextに入力された全文が乗ってくる。
# 返信を作ります
diRet = {}
# ここでaslookupする
diRet['text'] = aslook(liText[1])
diRet['username'] = "asbot"
return(json.dumps(diRet, indent = 2))
といういうように、してあげればOK。
Incoming WebHooks¶
URL宛てにJSONを書くだけでよいので非常に簡単。
import requests, json
url = "<imcommingのURL>"
d = {
"text":"hoge",
"username":'kanai-test',
"icon_emoji":':grin:',
"channel":'#bottest',
}
r = requests.post(url, data=json.dumps(d))