いやあ、やっと LINE Messaging API を使った「オウム返し bot」がちゃんと動いた。
試しに Perl でテストプログラムを作ってみようと昨夜手をつけたんだけど、これがなかなかうまく行かなくて(^^;
公式 API リファレンスに載ってるスクリプト例が PSGI(Perl Web Server Gateway Interface)前提になってるんで、CGI 形式になおしてもよかったんだけど、まあ、せっかくなんで PSGI 使ってみようかなっと。その分よけいに時間がかかってしまった(^^;
やることは、
- CPAN から Perl モジュールを簡単にインストールするための cpanm のインストール
- Plack インストールの前準備(openssl-devel、expat-devel などを yum で入れておく)
- Plack(PSGI サーバソフトウェア)のインストール(cpanm で、Task::Plack、XMLRPC::Transport::HTTP::Plack をインストール)
- LINE API 関係のモジュールをインストール(cpanm で、LINE::Bot::API をインストール)
- Apache に PSGI サーバへのリバースプロキシ設定を追加(https://www.hoge.jp/line_api/ にアクセスがあったら、http://localhost:5000/ に転送・・・みたいな)
- API を使うチャンネルを LINE Developersコンソールで作成
- チャンネルの設定(基本設定、Webhook やチャネルアクセストークンなど Messaging API の設定)
- プログラム作成(GitHub 上の「LINE::Bot::API - SDK of the LINE Messaging API for Perl」にサンプルプログラムあり)
- Apache Web サーバ起動
- PSGI サーバ起動(例:plackup --max-workers 30 --port 5000 -a bot.psgi&)
- LINE でこのチャンネルと友達になる
- トーク画面で話しかけて、同じ言葉をチャンネル側が返してくるか確認
って感じ。けっこう色々あるっしょ?
これがなかなか大変。Task::Plack のインストールはかなりの数のモジュールがインストールされるので時間がかかるし、「チャンネルの設定」って一行でさらっと書いているけど、アイコンとかチャンネル名とかの基本情報は LINE Official Account Manager で設定するし、Webhook やチャネルアクセストークンの発行などは LINE Developers で行う。どっちで何を設定できるのかよくわからんし、飛んだ先のページからの戻りリンクが無かったり、なんか手間取った。
結局、うまく行かなかったのも、チャネルアクセストークンの発行が正しく行われてなかったからのようだ。ずっとうまく行かなくて悩んでいたのだが、トークンを再発行してプログラムに設定したら、あっけなく上手く行った。
PSGI も初めてだったので、その仕組から調べたので時間がかかった。素直に PSGI のソースを CGI に書き直した方が早かっただろう(笑)
ググっても、ngrok を利用する記事が多くて、最初は PSGI のこともよくわからなかったので、何が何やら(^^;・・・
まあ、そのうち、ルータの内側の PSGI サーバへ外部から直接アクセスするために ngrok というトンネリングサービスを使っていることや、つまりは PSGI サーバは Java の Tomacat みたいなアプリケーションサーバ(のようなもの)なのか・・・とかそういうことがわかってきたので、「うちのテストサーバはグローバルIPアドレス空間にいるので ngrok なんか使わずに、Apache で Reverse Proxy 設定してやればいいだけじゃん」と。そこまで考えが至るにもけっこう時間がかかった(^^;
疲れた(^^;
具体的な設定やプログラムについては追々書いていこう(笑)
コメントする