LINE BOT API TRIAL とは
LINE のボットを開発できる Web API が公開された。現時点ではトライアル版という位置づけ。
- 10,000名まで先行申し込み受付中
- 料金: 無料
- 友だち数上限: 50人まで (トライアルのため友だち数を制限)
BOT APIは、LINEサーバを介して、あなたのサーバとLINEアプリ間で情報の送受信を行うしくみです。 リクエスト通信はJSON形式のAPIを活用して行われます。
(中略)
あなたのアカウントに対して友だちになってくれたユーザーにメッセージを送受信することができます。 メッセージのやり取りはすべてAPIベースとなっています。
BOT API Trial Accountのご紹介 | LINE BUSINESS CENTER
ユーザーからのメッセージは、自前で設定した Callback URL で受信できる。
ユーザーにメッセージを送信するには、LINE API をコールする (Callback URL へのリクエストに対してメッセージのレスポンスを返す、という形式ではない)。
環境の条件
LINE BOT API 自体は難しくないのでわりと使いやすいが、環境の条件がホビープログラマにとってはけっこうきつい。
- 外部からアクセス可能で https + SSL サーバー証明書がある Web サーバが必要 (LINE developers で https な Callback URL を登録)
- 固定IPアドレスからのAPIコールしか受け付けない (LINE developers で Server IP Whitelist を登録)
時間があればこのへんの環境を構築したい
固定IPアドレスで、SSLサーバー証明書がある Web サーバを構築するなら、さくらVPS + RapidSSL がお安くてホビープログラマ的には良さそう。サーバ構築の時間が許すならこちらを選択したい。
一番お手軽だと思われる環境
Heroku + Heroku Fixie Add-on + PHP (ファイル1枚で対応) の組み合わせが速くてお手軽。今回はこれを選択した。
Heroku を使うことで、 http + SSL サーバー証明書の条件については解決できる。
Fixie - Add-ons を使うと、固定IPアドレスのプロキシサーバを通して、 LINE API にアクセスすることができるようになる。これで、Server IP Whitelist の条件を解決できる。
LINEサイトにログインしてやること
- LINE BUSINESS Center で BOT API Trial Account を登録
- LINE developers で Callback URL を登録 (今回は Heroku で構築した環境の URL を使用)
- LINE developers で Server IP Whitelist を登録 (今回は Heroku Fixie の Outbound IPs を登録)
LINE BUSINESS Center で BOT API Trial Account を登録
まずは LINE アカウントが必要。
LINE アカウントがあるなら、 BOT API Trial Account は、このへんから登録できる
⇒ BOT API Trial Accountのご紹介 | LINE BUSINESS CENTER
登録したら、Channel ID、Channel Secret、MID の3項目の値をメモしておく。LINE BOT API をコールする際に必要になる。
また、LINE BOT 登録用の QR コードも表示されるので、これもどこかに保存しておくなりしておくと、LINE アプリで 自作 BOT を追加するときに便利。
Heroku + PHP 環境の構築
このページがすごく参考になった。PHPファイル1つだけの環境まで構築できる。
⇒ 初心者でも15分で公開できるHerokuのはじめかた — Mobage Developers Blog
とりあえず、これで PHP のコードが動作する環境が作れる。
Callback URL の設定
LINE Developers にて、 Callback URL に Heroku で構築したサーバのURLを設定する。LINE BOT にメッセージが来ると、この Callback URL にアクセスが来る。
Callback URL に設定する URL は
https://xxxx-xxxx-xxxxx.herokuapp.com:443/
というように、https ではじまり、ポート番号 443 を明示的に指定すること。
ここはわりとハマりポイントらしい。
Heroku Fixie Add-on の導入
Heroku Fixie Add-on を Heroku の環境にセットアップする。
⇒ Fixie - Add-ons - Heroku Elements
Tricycle Free という無料プランが使える。しかし、無料だけどHeroku にクレジットカード情報を登録する必要がある。これにはちょっと抵抗があるが、しょうがない。
導入したら Fixie の Account Details に書いてある Outbound IPs の値をメモしておく。
Server IP Whitelist の設定
LINE Developers にて、LINE BOT API をコールするアクセス元のIPアドレスを登録する。
今回は Heroku Fixie Add-on を使うので、Fixie の Account Details に書いてある Outbound IPs の値を設定する。最後のスラッシュのところは「xxx.xxx.xxx.xxx/24」のように「24」を指定。
LINE BOT API TRIAL を使うサンプルコード
ここのコードをほぼそのまま使えばOK
⇒ LINE BOT API Trialでできる全ての事を試してみた - Qiita
メモしておいた Channel ID、Channel Secret、MID をこのコードに埋め込めば動作する。
リソースURL設定の箇所はそのままでもとりあえず動作はするので放置でOK (指定してもいいけど)。
// リソースURL設定
$original_content_url_for_image = "[画像URL]";
$preview_image_url_for_image = "[サムネイル画像URL]";
$original_content_url_for_video = "[動画URL]";
$preview_image_url_for_video = "[動画のサムネイル画像URL]";
$original_content_url_for_audio = "[音声URL]";
$download_url_for_rich = "[リッチ画像URL]";
今回は Heroku Fixie の固定IPプロキシサーバ経由で LINE BOT API をコールするので、 PHP のコード内にある curl を利用している箇所 (3箇所ほど) でプロキシURLの指定をする。
Heroku Fixie アドオンのプロキシURLを環境変数 FIXIE_URL から取得できるので、 getenv 関数で取得して curl のオプションで指定。これで LINE BOT API にリクエストするIPアドレスを固定できる。
curl_setopt($curl, CURLOPT_PROXY, getenv("FIXIE_URL"));
curl をコールしている箇所 (3箇所ほど) にこのコードを追加する。
完成したソースコードを index.php などのファイル名で保存して、 Heroku にデプロイすれば動作する。
LINE BOT と友達になる
LINE Developers で BOT を友達追加するためのQRコードが表示されるのでそれをスマートフォンなどで読み込んで友達登録。
Heroku でのデバッグ
$ heroku logs -t
で Heroku でのログが見れる。
今回使ったサンプルコードでは Server IP Whitelist に登録していない IP アドレスからのアクセスなどで、わかりやすいエラーメッセージが表示されて助かった。
ローカルで$ heroku logs -tしながら、必要に応じてerror_log()とかでプリントデバッグしながら開発するのがお手軽です
PHP+HerokuでLINE BOT作ってみた - Qiita
参考資料: LINE BOT API ドキュメント・リファレンス
-
ref.
- LINE Developers - BOT API - Overview
- LINE Developers - BOT API - Getting started with BOT API Trial
- LINE Developers - BOT API - API reference
tags: heroku line
Posted by NI-Lab. (@nilab)