LINEのMessage APIを使って、Slackへの書き込みを通知させる(前編)
LINEのMessage APIを使って、Slackへの書き込みを通知させる(中編)
前回までSlackからデータを受け取りLINEのAPIを叩くPythonスクリプトを書いたわけですが、重要なパラメータが一つ残っています。line_bot_api.push_messageの送信先です。
ここの指定はLINEメッセージの送り先(個人またはグループ)の「送信先識別子」というものが必要で、LINEのIDとは別物。これはLINEのWebhook経由で確認するしかないようですが、POSTされた値を取り出すだけのPHPスクリプトをWebhookに仕掛けて呼び出しても、何故か値が取れないので調べていたら、以下のサイトに正解が。
POSTで来るのですが$_POSTには入って来ず、以下のようにphp://inputを見るのが正解とのこと。
<?php |
ob_start(); |
$raw = file_get_contents ( 'php://input' ); |
var_dump(json_decode( $raw ,1)); |
$raw = ob_get_clean(); |
file_put_contents ( '/tmp/dump.txt' , $raw . "\n=====================================\n" , FILE_APPEND); |
echo "OK" ; |
メッセージを複数人に送りたい場合、各ユーザーの送信先識別子宛てに送ってもいいのですが、今回は送りたい(受け取りたい)メンバーが参加するグループを作りそこに流すことにしました。よってGroupIDを送信先に指定します。
とりあえずこれで「/line 送りたいテキスト」のようにSlackで書き込むととLINEの指定グループにBOTが書き込みをする所までできました。あとはSlackのグループ内に書き込まれる情報を調整します。
【Slack】Custom slash commandsを使う – Qiita
http://qiita.com/nyata/items/d2f4f648103ef41abbe5
以上を参考に、Pythonでは
return jsonify(text = " ", response_type=" in_channel") |
これでシステムはほぼ完成。あとはこのPythonをgunicornでdaemonとして起動しておきます。例としてslack2line.pyという名前にした場合、
gunicorn slack2line:app -b 0.0.0.0:5000 --daemon --keyfile /etc/letsencrypt/live/example.com/privkey.pem --certfile /etc/letsencrypt/live/example.com/fullchain.pem |