LINEのbotのAPIが、1万人先着でTrial版が始まりましたね。
僕はサーバ系はperl好きなのでperlでbot作りました。
まだTrialなので、まずはhello worldします。
作り込みは別途。
LINE bot登録まで
ggrksってください。
キーワード "line bot"
LINE Developers(英語アレルギーですが英語です)
https://developers.line.me/
まあ順に追って行けばなんとか成ると思います。
各種調達まで
- PC - 持ってた(ちなみに、2年前のMacBookAirです。)
- サーバ(さくらのVPS) - 持ってた(月1000円ぐらいの安い奴)
- SSL証明書 - 無かった。1年1000円ぐらいのrapidssl買った。
- エディタ - (vim最強)
主な手順
処理の流れとしては、
「LINEbotにスタンプ/メッセージを打つ」
↓
「LINE側でcallbackURLにJSONをPOSTする」
↓
「サーバ側でJSON拾って何か打ち返す」
↓
「おk、ならユーザに返事が返る」
です。
僕は、以下の手順で作りました。
1.「LINE bot登録まで」で、LINE devにユーザ登録する
2.「各種調達まで」で、必要なものを揃える。無料のSSL証明書では弾かれるという話が他で見られたので、安いと噂のrapidsslとかいうの買いました。
3.買ったSSL証明書を、さくらのVPSのマシンに仕込む。一つ苦戦しました。ただ、間違っていた箇所は単純なケアレスミスの積み重ねだったので、googleで検索しまくればなんとかなると思います。
4.callback.cgi(perl)を作って、そこでJSONの修正とか行う
useしたものだけ書いときますね。
use JSON;
use LWP::UserAgent;
use HTTP::Request;
.
.
.
$text = {
'contentType'=>1,
"toType"=>1,
"text"=>"helloworld"
};
#あと、この辺固定値ですね。
$post_data = {
"to"=>[$to],
"toChannel"=>"1383378250",
"eventType"=>"138311608800106203",
"content"=>$text
};
$head=[
"Content-Type" => "application/json",
"charser" => "UTF-8",
"X-Line-ChannelID" => $cid,
"X-Line-ChannelSecret" => $csec,
"X-Line-Trusted-User-With-ACL" => $mid
];
まず、POSTの中身を拾いました。
APIの仕様書に書かれてるようなデータがあったので、その中で、
「"from":こちらから打つときに返す用」
だけ拾って、送信データの"to"に入れました。
あと、今回はユーザのメッセージを解析とかしてないのですが、要る場合は、"content"とか、他のも見ないとダメですね。
で、なんかperlでPOSTするときに、「httpsだと無理ー」とか言われたので、「Crypt::SSLeay」とかいうのを別途インストールすると、行けました。
簡単ですね。
おもしろい使い道が考えられると良いですね。