LINE bot apiをperlでやる場合の手順と環境整備について(さくらのVPS+rapidSSL)

  • 7
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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したものだけ書いときますね。

callback.cgi
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」とかいうのを別途インストールすると、行けました。

で、メッセージを打つと以下です。
IMG_0660.PNG

簡単ですね。
おもしろい使い道が考えられると良いですね。

あ、宣伝ですが僕のLINEスタンプです。
スクリーンショット 2016-04-10 1.44.52.png

https://store.line.me/stickershop/product/1017470/ja