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:毎回やるので多少うんざりしますけど

LINE DEVELOPER DAY 2016良かったですね!特にタンブラー良いですね!

linedevday.linecorp.com

昨日開催されたLINE DEV DAYの引き出物(ではなくて、お土産)、中身が異常に豪華で各方面において話題になっております。

話題の中心はあきらかにBTのなにやらなのですが、もうね、このタンブラーに注目しないといけないわけですよ。

カッコイイタンブラー

うむ、かっこいいですね。そしてカッコイイロゴを生かし、テキストを配置しない、この余裕、この自信。

結構大容量なのも良い感じです。

f:id:uzulla:20160930144458p:plain

口の所がとがってないので、さわりがよいタイプです。ぼくもこのタイプ好き。

f:id:uzulla:20160930144548p:plain

しかしぬかりない

ここですよね、僕が一番びっくりしたのは。底に加工がしてある!!なにこれ!くやしい!これはくやしい!(このくやしがりポイントは何なんだ)

f:id:uzulla:20160930144516p:plain

ベタッとテキストを側面においたらダサイ、しかしやはりテキストはいれないといけない、そこでこの解決策ですよね…。

これをみつけてしまったので、このエントリを書きました。

よってここで言いたい事は終わりです、有り難うございました。

これをやった人は何41さんなんだ…。

以下は蛇足です。

永く使いましょう

ぐうぜんにも、私も2015年にこういった似たノベルティを作成にかかわっておりまして、非常に長くつかえることを確認しております。

f:id:uzulla:20160930144623p:plain

やはり、レーザー刻印されたロゴは見込み通りかすれにくく、金属製のボディは何度落としても割れないので最高ですね。

f:id:uzulla:20160930144633p:plain

なお、我が家においてはこれは奥さん用となっているので、今後はこのLINE DEV DAYのタンブラーを私は活用していきたいと思います。

タンブラー以外のLINE DEV DAY 2016の感想

一言で言って、すごいすごさを感じた。

「ココがすごかった!」

  • 「発表内容が勿論良い」
    • 色々な新規機能の発表があって飽きない
    • 現実でつかっている事例・設計の発表が多くて為になる
    • わりとカジュアルに具体的なサーバー台数とかもはなしていて興味深い
    • 登壇者のみなさまの、いままでになくプロっぽいしゃべり
      • スポットライトだし、ハンズフリーマイクだし、PCの向こう側じゃないし
    • 勿論社内紹介もへーってなる
  • 「クオリティ」
    • 当日だけの消え物に手をぬかない行き届いたクオリティ
    • 会場装飾にコダワリがすごくて、聞かないとわからないレベル
    • 「これ設備レンタルでいくらするんや…」とクラクラする
      • 同時通訳系色々
      • つり下げディスプレイ
      • 多カメラ、スイッチング
      • プロのカメラマン、そしてプロの映像カメラマンの派遣
      • 11Fカフェ貸し切り
    • 専用ノベルティ?のビール、お菓子など
    • LINEを用いた総合的なシステム(受付、通知、アンケート、タイムテーブルへのリンク…等々、具体的なデモになっていて大変に参考になる)
    • 冒頭のタンブラーを含めたお土産
      • お土産のハコ、これがやばい(真顔)ハコがカッコイイとテンションあがるよね。*1
    • (下世話ですけど)お食事券すごい…、ごちそう様でした
  • 「コミュニケーション感」
    • 懇親会でLINE社員はTシャツをきており、見分けができるので色々話かけられる。
    • 「こんなにLINE社員っているんだ…」と思った
    • 懇親会がちょっとだけ長くてゆっくりしゃべれた(気がしたw)
    • 参加者は日本人だけではないので、同時通訳で日本語→英語もちゃんとやられていた

f:id:uzulla:20160930145552p:plain

プレートかっこいいですね。

f:id:uzulla:20160930145633p:plain

かわいい。

f:id:uzulla:20160930145658p:plain

あの大物エンジニアもくつろぐ11F貸し切りカフェ

カロリーもすごい()

f:id:uzulla:20160930145016p:plain

(コダワリのある受付(の天井装飾)の様子)

f:id:uzulla:20160930150405p:plain

技術デモも兼ねたのであろうLINEをつかった受付システムもなかなかカッコイイ

f:id:uzulla:20160930150330p:plain

話題のビーコンがはいった?オブジェ、こういうのもちゃんと立体で作っちゃうのすごいぞ…。

f:id:uzulla:20160930145331p:plain

レイヤー?をイメージした壁の装飾も、つり下げLEDモニタも、奥の壁の超ワイドスクリーン(壁一面)もすごい。*2

f:id:uzulla:20160930145103p:plain

広い会場が満員の懇親会

まとめ

すごくよかった。

また来年もいっちゃおうかなー。

関連記事

uzulla.hateblo.jp

*1:ハコがださくて5日落ち込んだ俺が言うから間違いない(?)

*2:ワイドスクリーンに色々やるには、それだけでも色々な専用機材が必要だろうし、すごいってなった…

LINE DEV DAYに参加し、ヒャッ!っとLine Notifyを試した

本日LINE DEVELOPER DAY 2016に参加しまして、その中でLINE Notifyという機能が発表されていました。

notify-bot.line.me

IFTTTやGitHub、MackerelなどのLINEとは違う外部からの通知をLINE受け取る事ができるものと紹介されていますが、自前のウェブアプリ等でも同様に外部アプリとして登録することでLINEに通知を飛ばす事ができます。

すぐに実装できそうだなと思いましたので、11Fでコーヒーを飲みながらヒュッ!と実装してみました、そのメモです。

平たく言ってなにができるのか

特定のHTTPSアクセスをLINEに送ると、あなたのスマホ(LINE)に通知がとどきます。

こういったプログラムから利用しやすいプッシュ通知サービスはすでに多数存在します。くらべてLINE Notifyの優位性はどこにあるのかは詳しい人に譲りますが、とにかく以下のような特徴がありますね。

  • 別途のアプリが不要なので、「詳しくない人」のLINEにもプッシュできる
  • 即座にサムネイル画像を表示させる事ができ、タップで拡大もできる(添付ではなく、Jpeg画像のリンクを付与できる)
  • 送信できるテキストは1000文字
  • RateLimitもあんがいゆるい

欠点?としては、「LINE Notifyのアカウントから」の送信に見える事でしょうか。メッセージ本文先頭に自分のアプリ名が掲載されますが。

f:id:uzulla:20160930051625p:plain

まあ、そこらへんまでカスタムしたいなら、Bot作りましょうということなのでしょう。

とりあえずアプリを登録

https://notify-bot.line.me/my/services/new

ここから新しくアプリを追加できます*1

色々入れさせられますので色々入れましょう。特に審査はないようですが、やはりそれなりにちゃんと入れましょう。

ただ、この登録時にサービスが出来ている必要は無いようです*2

(こういうのを入力しているといつも思うんですが、フリーの人間や個人の人は「企業名」になんといれればいいんでしょうね)

重要なのはCallback URLだけでしょうか。なお、localhostも通りました。

資料をみます

ログインした後、PDFで資料が配付されてますので、そちらを見ます。*3

英語ですが、シンプルな仕様なのでそこまでこまらないかなとおもいます。

一箇所だけ私がわかりづらかったのは、AuthorizationヘッダのBearerプリフィクスは、実際に書いてある通りに必要です。

(なお、資料がログインしないと読めないところにあるので、もしかしてNDA的な何かがあるかと思いましたが、直接LINEの開発者の方に確認したところ「資料の再配布は不可だが、ブログなどでその資料を元にした補足やサンプルコードの公開程度は問題ない」との回答をいただきました)

追記、ドキュメントが日本語化され、普通にアクセスできるところにおかれたようです

https://notify-bot.line.me/static/pdf/line-notify-api_ja.pdf

ということで

凄く単純なのでこれくらいならライブラリもなかろうとヒネリもなく、Tokenを取得したり、フォームからLINEに通知をおくったりするサンプルを実装してみました。

github.com

すごい古くさい書き方をしていますが、多分そういう方がよろこばれるかなと思ってのことです!!*4

TokenのRevokeとかは実装してません。

まとめ

簡単ですね、とてもよいとおもいます!

こちらからは以上です。

*1:当然ですが、LINEアカウントは必要です

*2:審査とかはなかった

*3:まずアプリをつくらないと資料がみれないw

*4:ホントだよ!ホントだよ!