20160128SlackのOut GoingAPIを用いた自動処理

はじめに

Slackが流行っている。各種連携のために、SlackAPIを活用する。

APIについての詳細は https://api.slack.com/ をみること。

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))