LoginSignup
6
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-04-09

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

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6