読者です 読者をやめる 読者になる 読者になる

Umi Uyuraのブログ

Titaniumを使ったスマートフォンアプリ開発を中心に、プログラミング関連の作業ログ。

LINE BOT事始め&倍返しBotを作ってみた

初回分には乗り遅れてしまったのですが、追加募集が始まったようなので応募してみました。

【LINE】「LINE BOT API Trial Account」の追加募集を開始 | LINE Corporation | ニュース

2016/6/9現在、追加募集分枠はまだ終了していないようです。

とりあえずどんなものか動かしてみようと思い、手軽そうなHeroku環境に構築してみました。

制限事項

  • 料金は無料
  • BOT API Trial Accountは1人1つまで
  • 友だち数は50人まで
    • BOT API Trial Accountの制限解除プログラムが開始され、最大5,000人まで拡張可能(ただし、今のところ法人向けのもよう)

事前準備

LINEアカウント

  • メールアドレスが登録されていること

BOT用に用意する情報

  • BOTの名前
  • BOTのアイコン

後で変更できますが、あらかじめ用意しておくと迷わなくて良いかと。

Herokuアカウント

  • アドオンを使うため、クレジットカードが登録済みであること(無料範囲内で利用可能)

利用登録の流れ

ざっと流れだけメモ。

  • LINE Business Center へアクセス
  • BOT API Trial Accountのページヘ行き、ページ下部に設置されている「利用開始」ボタンをクリック
  • 認証画面へ遷移するので、自分のLINEアカウントでログインする
    • 初回はLINEアプリ側で認証コードの確認が必要
  • LINE Business Centerで使うメールアドレスの入力
    • 入力したメールアドレス宛に登録用URLが届く
  • URLをたどるとアカウントのプロフィール・会社/事業者情報入力画面になる
  • 入力が終わるとBusiness Centerの管理画面になるので、「ビジネスアカウントを作成する」へ進む
  • アカウント名とアイコン画像をアップロードして完了
  • ビジネスアカウントの詳細画面になるので、あらためてBOT API Trial Accountを「始める」へ進む
  • BOT API Trial Accountの説明画面になるので、画面下部の「利用開始」へ進む
  • Terms and Conditions of Use(英語)を確認して問題がなければ「AGREE」へ進む
  • Create BOT API Trial Account画面になるので、名前とアイコン、Providerを確認後、「Create」
  • BOTのBasic information画面になるので、以下の情報をメモ
    • Channel ID
    • Channel Secret
    • MID

Basic information画面にフレンド追加用のQRコードもあるので、必要なら保存しておきます。

f:id:umi-uyura:20160609235021p:plain

アカウントの作成とBOTの登録はここまで。

サーバーの準備ができた後、同じ画面内にある「Callback URL」と左側のメニューにある「Server IP Whitelist」の登録をおこなうことになります。

基本的にドキュメントと画面のとおりに進めば、特に迷わずに登録できます。

サーバー(Heroku)準備

Heroku上に新しいアプリを作成し、そのリポジトリをクローンしておきます。

$ heroku create
$ heroku git:clone -a <app name>
$ cd <app name>

既存のBOTサーバーが実装済かつGit管理している場合は、そのローカルリポジトリheroku git:remote -a <app name> でremoteを追加しておきます。

固定IPの取得

LINE BOT APIを叩くサーバーは、そのIPアドレスをあらかじめWhitelistに登録しておく必要があります。

通常Herokuは固定IPになっていないようですが、Fixieというアドオンを使うことで固定IPを得られるよう。

$ heroku addons:create fixie:tricycle
Creating fixie-hogehoge-99999... done, (free)
Adding fixie-hogehoge-99999 to fugafuga-piyopiyo-9999... done
Setting FIXIE_URL and restarting fugafuga-piyopiyo-9999... done, v3
Your IP addresses are xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx
Use `heroku addons:docs fixie` to view documentation.

上記の xxx.xxx.xxx.xxx に表示されたIPアドレスを、先ほどのServer IP Whitelistに登録します。

f:id:umi-uyura:20160609235035p:plain

BOT実装時は、 FIXIE_URL という環境変数にFixieが提供するプロキシのURLが登録されているので、これを経由して通信します。

Bot実装、サーバー登録

APIドキュメントはこれ。

LINE Developers - BOT API - Overview

いい加減ただのオウム返しだけではつまらないので、とりあえずメッセージを倍にして返すというBotにしてみました。(たいして変わらないじゃん…と思ったわけですが、multiple messagesの送り方で少しハマったりしました)

ソースはこんな感じです。

umi-uyura/node-linebot-doublethapayback

これをクローンしたHerokuのリポジトリにコピーして、追加&コミット後、Herokuへプッシュします。

$ git add .
$ git commit -m 'Initial commit'
$ git push -u heroku master

環境変数の登録

BOT情報を環境変数に登録しておきます。

今回は以下のような環境変数を用意しました。

$ heroku config:set LINEBOT_CHANNEL_ID=<Channel ID>
$ heroku config:set LINEBOT_CHANNEL_SECRET=<Channel Secret>
$ heroku config:set LINEBOT_MID=<MID>

Callback URLの登録

サーバーの準備ができたところで、Callback URLをBOTに登録します。

Herokuを使う場合、 https://<app name>.herokuapp.com というようなURLになりますが、そこにHTTPSのポート番号を明示的にしているするのと、LINEサーバーからの通信を受け付けるパスを追加します。

自分の場合は、 /callback というパスにしたので、以下のようなURLになりました。

https://<app name>.herokuapp.com:443/callback

これを管理画面に登録して、「VERIFY」を押し、Successと表示されれば問題なさそうです。

f:id:umi-uyura:20160609235047p:plain

友だち登録

アカウント作成時に入手していたQRコードをLINEアプリで読み取って友だち登録すれば、BOTにメッセージを送れるようになります。

少し気になったのは、「個人を選択した際は本名を入力してください。」と書いてあったので一応本名入れたのですが。

f:id:umi-uyura:20160609235058p:plain

友だち登録時に、それが出てしまうんですよね。

トライアルですし、一般公開しない範囲なら良いのですが、不特定多数に公開するとなると、少し気が引けるかも。

f:id:umi-uyura:20160609235107p:plain

いちおう、ビジネスアカウントに登録しているプロダクトが全て使われていないときであれば、名前を変更できるようです。

倍返しの様子

倍返しBOTは、送ったメッセージを倍にして(要するに2回)送ってきます。

f:id:umi-uyura:20160609235118p:plain f:id:umi-uyura:20160609235126p:plain

調べながら書いていたらソースが長くなってきたので、現状はテキストとスタンプのみの対応。

BOTからは公式のスタンプしか使えないので、それ以外を送られた場合は「タイオウシテイマセン……」と返し、テキストとスタンプ以外のメッセージを受けると「カイドクフノウデス……」と返すというだけです。

まとめ

とりあえず基本的な仕組みはなんとなくわかったので、実戦の機会があれば、もっと深掘りしてみたい。

参考