LINE BOT「親切なDおじさん」を開発したよ〜
LINEのBOT APIがTrialとして無料で個人で使えるようになったので、さっそく試してみました。
つくったもの
某テーマパークのアトラクションの名前をつぶやくと、その待ち時間や運転状況を教えてくれるBOTを作りました。 その名も「親切なDおじさん」! 検索用IDは公開していませんが、一部の友人には教えています。 完全にネタで、実用性があるかと言われると...なさそう。
このBOTよりももっと便利な「夢と魔法の待ち時間」というAndroidアプリを趣味で作っているので、 実際にパークで活用したいなら、そちらをぜひ。
最初の構成
さくらのVPSを利用しているので、そこに載せるつもりでした。 Let's Encryptという、無料でSSLサーバ証明書を発行できるサービスを使えば上手くいくものだと思っていました。 が、他の多くの方々と同じように、Let's EncryptがLINE APIで使えないことがわかり、自分のサーバでやることを諦めました。
アプリ側は、Kotlin + wasabiで開発するつもりでした。 wasabiは、Kotlinで記述されたKotlinのための、Sinatraインスパイア系Webフレームワークです。 まだ開発途上にあって、生のリクエストボディを取得できない問題があって(調査不足かも。ご存知の方教えて><)使うのを断念。。 次にSpark(Apache Sparkじゃないよ)という、これまたマイクロなフレームワークを使おうとしました。 実際使ったのは今回が初めてでしたが、素直で使い易い印象を受けました。
結局
Herokuを使いました。 これでSSLはクリア。
次に、サーバのIPアドレスをホワイトリストとして、LINE APIのダッシュボード上に登録する必要があります。 すなわちIPアドレスが固定である必要があります。 どうやらHerokuはIPアドレスが変わってしまうことがあるらしいので、Fixieというアドオン?というかサービスを経由してAPIを叩くことにしました。
で、次に問題になったのが、Java(Kotlin)でのSSL対応プロキシ。 面倒だし難しいしで、結局Javaからは離れることにしました。 最終的に、生JavaScriptとExpressに落ち着きました。
雑感
SSL証明書と固定IPアドレスさえ乗り越えれば、API使うだけなので簡単でした。
現状、TrialのLINE BOT APIには制限があるし、マネタイズとか難しそうでオモチャの域は超えないから、Herokuやらに課金するモチベーションにはならないかもです。
個人的には、通常ユーザとBOTが対等じゃないのが好きじゃないですね。 Twitterみたいに、通常ユーザとしてアカウント作って、そいつが自動で動く、みたいな方が面白いし、何かと融通効きそう。
あと、グループトークにBOTって追加できるんですかねぇ?