LINEのMessaging APIを使うメモ:事前知識と登録編
雑に行きます。
DISCLAIMER
この記事の情報は、一切の保証も補償もしません。
ただ、間違っているところがございましたら、是非ご指摘下さい。
前提知識
LINE の Messaging API は平たく言えば BOT を作るための API です。Web API経由で自分のアプリケーションサーバとLINEのAPIでやりとりできます。
そのBOTアカウントと友だちになったLINEユーザーはメッセージのやりとりができます。そのメッセージのやりとりと、自分のアプリケーションをつなぎこむ為のAPIです。
(Messaging APIはLINE@とよばれるビジネス向けLINE機能の一部とおもえばよいはずなのですが、LINE@から後付けでこの機能を有効にできたり、いまいちサービスメニューが整理されてるとは言えないのでウッカリ嘘を書きそうです。公式をみましょう。 https://business.line.me/ja/ )
(過去にBOT Trialやってる人は結構混乱すると思います(後述))
お金はかかるの?
LINE@には色々な機能があるのですが、BOTに関係ある点は以下です。
- BOTからユーザーにメッセージを送る仕組みは、PushとReply二種類がある
- 自由なタイミングでユーザーに通知できるPushはお金がかかる
- 例外として、Developer TrialのBOTアカウントは、友だち数上限50人の代わりにPushが無料
- Replyは(実質的に)無料*1。しかしユーザーがメッセージを送ってきた直後しかレスできない
とりあえずこれだけで十分でしょう。
Pushについて
Pushは相手にいつでもウェブアプリ側の任意のイベントでメッセージを送れるもので、キャンペーン通知とかDMとかで万人が使いたいやつです。
万人が使いたいのはお見通しなので、ここがLINEが課金する重要ポイントのようです。使うなら毎月3万以上*2払う必要があります。ビジネスならいいですけど個人では敷居が高いですね。
とはいえ、前述の通り、50人までの友だち範囲なら開発アカウントでPushは無料でつかえます。
※ここでのPushはMessaging APIの話であり、先日書いたNotification APIとは別のものです、ご注意ください
Replyについて
ユーザーがBOTにメッセージをおくると、即座にLINEから登録したWebhook URLにJSONがとどきます。JSON内にReply用Tokenがあり、それを30秒以内につかうと一度だけメッセージ返信できます。*3
このReplyはPushと違って無料でつかえますが、ユーザーアクションから30秒以内に1度だけなので、サービス設計としてなかなか考えないといけないですね。
ということで、前提終わり。
アカウント作成
すでにLINEやってる人は不要ですが、まずはスマホにLINEをいれてアカウントをつくり、ID/PASSを設定しておきましょう。
Developer Trialに登録する
登録の流れは以下URLにあります。英語ですが、動画なので比較すればわかると思います。
https://developers.line.me/messaging-api/getting-started
兎に角以下のURLをひらいて、「Developer Trialを始める」をクリック。
https://business.line.me/ja/services/bot
LINEアカウントでログインして所定の情報を入力しましょう。*4
動画にもありますが、Developer Trialに登録すると、LINE@のBOT(?)アカウントを開設できます。適当につくりましょう。
その後、BOTアカウントの設定にて、「APIを利用」を押すと、なんか「1:1トーク」とか「LINE@アプリ」とかが色々つかえなくなるぞ!っていわれますけど、別にそういった機能はBOTではいらないとおもいますので了承しましょう。これでこのアカウントはBOTのアカウントになります。
会社事業者などを登録する
動画にはでてきませんが、LINE@は一応法人向け(?)のサービスなので、初回は色々聞かれます。(道義的にも)本名をいれないといけないのですが、この本名は友だち登録時に表示される事を認識しておきましょう。
プルダウンなどには「個人」ともあるので、法人向けのサービスではありますが、個人でも問題はないようです。(特に法人格を確認される事もないし…)
過去にBOT APIを触った人向けの情報
過去のBOT APIトライアルをやったことがある人は、しばしば今回つくったBOTアカウントではなく、過去につかったBOTのAPIがでてきて混乱します。
たとえば、以下URLの右上のchannnelsをひらいても「昔のbotのアカウント」がでてきて「今のMessaging APIをつかうBotアカウント」にいけないことがあります。
その場合、以下URLを開いてヘッダーのアカウントリストひらいて、そこのアカウント一覧から、LINE DEVELOPERSをえらぶとよいです。
初見では非常に分かりづらいですが、一度やればおぼえます*5。
この昔のBotアカウントをけしたいのですが、現在は消す方法なさげです。
https://devdocs.line.me/ja/?php#common-spec
話を戻して、とりあえず自分のLINEからBOTを登録します
QRコードからボットを登録しておきましょう。
ここで、(QRコードから追加する友だちが)アプリであること、アプリ(というよりアカウント)の名前、事業者の名前などが表示されます(自分の名前を登録したら、ここに自分の名前がでます)。
ためしにはなしかけてみると…
アプリを実装しなくても友だち登録はできるし、BOTにも話しかけられます。
BOTにメッセージを送ると「レスができないよ!」みたいな事を返してきますが、これはLINE@のオートリプライ機能です。BOTでオートリプライされると不便なので、オフにしましょう。
これはLINE@の機能なので以下のURLから設定していきます。
https://admin-official.line.me/
アカウント一覧から、BOTアカウントを選び、
左メニューから、アカウント設定>Bot設定。詳細設定のところに、「自動応答メッセージ」と「友だち追加時あいさつ」の設定をかえて保存しましょう。
Webhook URLを登録する
適当な公開サーバーにコールされるAPIを用意しましょう。とりあえず様子見で以下のようなPHPを作成しました。
これはLINE APIが送信してくるJSONをファイルにかきだしているだけです。
<?php ob_start(); $raw = file_get_contents('php://input'); var_dump(json_decode($raw,1)); $raw = ob_get_clean(); file_put_contents('/tmp/dump.txt', $raw."\n=====================================\n", FILE_APPEND); echo "OK";
※PHPer向け注意:POSTで来る、といってもapplication/x-www-form-urlencodedじゃないんで、$_POSTとかにははいってきません。php://input
で、リクエストボディをみましょう
これを仮に https://hoge.example.com/callback.php
として作成したらそれをwebhook URLに登録します。ここはhttps必須です。
ボットに向かってメッセージを送ってみましょう。
すると上のコードでは /tmp/dump.txt
におくられてきたJSONが保存されていきます、なるほどな、と言いましょう。
上のファイルはちょっとした動作確認をしたら捨てます(。もっとちゃんとしたライブラリがありますので。
この時、(オートリプライを切っていれば)はなしかけた側のLINEにはなんの返事もありません。上でOKとかechoしてますが、これは意味ないです。ステータス200をおくればOKもいらないようです。 返事をするのは、別途ちゃんとMessaging APIをつかう必要があります。
管理画面をちゃんと見た人向け情報
IPのWhite listがありますが、ここは「設定しなければ」、あらゆるIPを受け入れるようです。
続く
あとは以下をみてうまいことやっていきたいとおもいます。
多分つづきます。