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 ドキュメント・リファレンス

tags: heroku line

Posted by NI-Lab. (@nilab)