Be an Engineer.

社会人からWEBエンジニアになった人間の備忘録的勉強記録

LINE Bot(LINE Bot API Trial)を調べてみた

(※2016/11/10追記 こちらの記事はBot API Trialについて書いた記事です。2016年9月29日でもってBot API TrialはDeprecatedとなり、2016年11月16日をもって廃止となります。ただし、新たなAPIとしてMessaging APIが公開されています。)

作成した時の流れに沿って、そこでやったことと調べてみたことを書きます。

1. アカウント作成

会社/事業者情報作成

まずはLINE BUSINESS CENTERにある「BOT API Trial Account」へ。

ページ下部の「利用開始」をするとログインを求められるので、今回は普段利用している個人のアカウントを使用しました。

そういえばLINEは(できなくはないけど)複数アカウント持ちづらいサービスなので、会社利用するにしてもここのログインアカウントは個人のものを使うことになりそうです。
(ちなみに複数アカウントを持つには、スマホ版のアプリを一度インストールしなおさないと二つ目のアカウントを作成して、また別のアカウントでログインし直したい場合は、再度インストールし直さないといけない、、という流れを踏むはず。ログアウトが無いというだけでこんなことになるんですね。完全にわざとだと思いますが。)

その後、会社/事業者情報を登録します…たしか…。(ここはずっと前に登録だけしておいて、メモをしてなかったので適当な感じになっていますが、会社/事業者情報を個人として登録した記憶があります。)

ビジネスアカウント作成

LINE BUSINESS CENTERでは、ビジネスアカウントというものがあります。
ビジネスアカウントは、いわば「サービス」を指し、ビジネスアカウントからBotを作ったり、LINE@を作ります。
例えばXというサービスを持つAという会社では、会社/事業者情報をAで登録し、ビジネスアカウントはXという単位でビジネスアカウントを作る形ですね。

LINE Business Centerの会社/事業者情報を登録後のトップページから「ビジネスアカウントを作成する」からビジネスアカウントを登録します。
今回は「モルちゃんBot」というBotを作ろうと思うので、それっぽい感じで作ります。

f:id:shirakiya:20160530104051p:plain

※ビジネスアカウントを作成しなくてもBot API Trial Accountは作成できます。1つの事業者で複数のサービスを持つ場合はビジネスアカウントは作らないと、事業者に紐付いてBotが1つしか作れないので注意。

2. Bot API Trial Account作成

ビジネスアカウントを作成したら次は、Bot API Trial Accountを作成します。
ビジネスアカウントを選択してBot API Trial Accountで「始める」から、次のページでページ最下部の「利用開始」を押すと、Bot API Trial Accountの作成確認画面に行きます。(ここから英語)

f:id:shirakiya:20160530104127p:plain

おもむろにCreate~!!

f:id:shirakiya:20160530104144p:plain

これがトップ画面で、Channel ID、Channel Secret、MID等の情報が書かれています。
一応この画面からBotの名前と画像は変更可能なので、なんかちゃうなってなっても安心です。

左カラムを見ると「Server IP Whitelist」とあるので、API call元のIPも制限できるようです。

f:id:shirakiya:20160530104221p:plain

3. アプリケーションを作成する

詳しいドキュメントはこちら
Bot API Trial Accountの画面の右上にある「Documents」から参照できます。)

システム構成

以下にLINE Botの全体像を表すシステムを図示してみました。

f:id:shirakiya:20160530104247p:plain

トークを始めたユーザーからメッセージが送られると、LINE Bot Serverが開発者が用意したcallback URLにPOSTが投げられます。BodyにはJSONで記述されたテキストが入っています。例えばメッセージを返答するようなBotでは、開発者はそれを受けて返答するメッセージをJSONで用意し、LINEが用意しているAPIをcallします。するとLINE Bot Serverが処理してLINEアプリ上に返答メッセージが表示される、という仕組みになっているようです。

また、アプリケーション側が用意するシステムに関してアーキテクチャの考察がなされており、大量メッセージが来ても安心なLINE BOTサーバのアーキテクチャ等が参考になります。(この記事はかなりなるほどなーと思ったので、必読だと思います。)
また、そのアーキテクチャを参考にAWSで構築したというLINE Bot を AWSを使ってシステム構築してみた。等も参考になります。

アプリケーションを作ってみる

今回はサクッと試したいというのと調査が目的だったため、無料で使える範囲でHerokuとPython(FLASK)で作ってみました。Herokuだとhttpsをデフォルトでサポートしてくれていて、かつサーバホスティングしてくれているので、調査用としてはちょうどよいです。

実際のコードです。ただメッセージが送られるとそれをトリガーとして「みゅ?」とメッセージを返すのみのものにしました。
github.com

大きな流れはこんな感じ。

  1. アプリを作る
  2. herokuにデプロイ
  3. LINE Bot Trial Accountにcallback URLを登録
  4. Server IP Whitelistに用意したサーバーのIPを登録

注意するべきは、

  • LINE Bot ServerからhttpsをサポートしているURLに対してPOSTリクエストされること
  • Server IP Whitelistに登録しないとAPIへのリクエストが通らないこと
  • (細かい実装の話ですが)Botからのメッセージ送信の際のtoは配列であること(30分ハマった)

などでした。いずれもわかっていればそんなに問題ではないですね。

作成にあたっての参考記事:
LINE BOT をとりあえずタダで Heroku で動かす - Qiita
今更だけどラウル様と会話できる LINE bot を作ってみようとしてやめました→動きました - Qiita

4. Botとトークする

Botとトークするには、まずLINEアプリでBotと友だちにならないといけません。
作ったLINE Bot Trial Accountのトップページの下の方にQRコードがあるので、そのQRコードから友だちになってトークの画面まで行きます。

で、メッセージを送ると返ってきました。
f:id:shirakiya:20160530104440j:plain
(返事をしてもらえてない感じ、なんともデバック感を感じさせる…)

できること

https://developers.line.me/bot-api/overview#bot_accounts
を見ると、ビジネスアカウントが「Business Connect」なのか「Bot API Trial」なのかで利用可能なAPIに違いがあるようです。

Business Connect BOT API Trial
Send and receive messages using APIs Send and receive messages using APIs
Send link messages Send rich messages
Send rich messages
Send mission stickers
Use rich menus
Use Channel Web Applications
Have a searchable official account

https://developers.line.me/type-of-accounts/business-connect#anc1

基本的に「Send and receive messages using APIs」では、

が行えるようです。
rich messages」はLINEの公式アカウントとかが普段クーポンを送ってきたりとかあると思うのですが、あれを想像してもらえるとOKです。

※1. 今回作ってみたのはBot API Trialの方のアカウントです。Business Connectの詳細については公式ページを参考にしてください。
※2. LINE@はBot API Trial側に含まれるようです。

その他の情報

複数人でBotとトークする

できないようです。
まだなのか将来的にも無いのかはわかりませんが、公式アカウント的な振る舞いをするので、複数人がいるトークに招待しても、グループに入れても参加してくれませんでした。

利用条件

詳細な日付は調べていませんが、昔は10000人に限りこのLINE Bot Trial Accountが登録できたという状況だったようですが、現在は基本的にLINEのアカウントさえ持っていれば試用可能です。

料金

料金については、今のところ公表されておらず、まだトライアル段階です。ただトライアルのため、Botとの友だち数の上限が50人までになっているようです。 ただ、ビジネス利用で法人アカウントに限り、BOT API Trial Accountの制限解除プログラムに登録できるようで、デフォルトで友だち数上限が5000人まで可能で、それ以上の制限解除は応相談のようです。(料金もそこで決まる?)
ただ、プログラムには審査があるようなので、そこは1つのハードルになりそうです。
https://feedback.line.me/enquete/public/915-RRUi5HII