uzullaがブログ

uzullaがブログです。

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アカウントではなく、過去につかったBOTAPIがでてきて混乱します。

たとえば、以下URLの右上のchannnelsをひらいても「昔のbotのアカウント」がでてきて「今のMessaging APIをつかうBotアカウント」にいけないことがあります。

https://developers.line.me/

その場合、以下URLを開いてヘッダーのアカウントリストひらいて、そこのアカウント一覧から、LINE DEVELOPERSをえらぶとよいです。

https://business.line.me/ja/

初見では非常に分かりづらいですが、一度やればおぼえます*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を受け入れるようです。

続く

あとは以下をみてうまいことやっていきたいとおもいます。

https://devdocs.line.me/ja/

多分つづきます。

俺用メモリンク

*1:メッセージ配信数上限はある

*2:いまはCP中で2万

*3:新しくメッセージがとどけばまたTokenは発行されます

*4:LINEに認証用の4桁トークンがとんでこない時が希にありました、その場合は一回閉じてやりなおして、LINEアプリをひらきなおしましょう

*5:毎回やるので多少うんざりしますけど