LINE BOT事始め&倍返しBotを作ってみた
初回分には乗り遅れてしまったのですが、追加募集が始まったようなので応募してみました。
【LINE】「LINE BOT API Trial Account」の追加募集を開始 | LINE Corporation | ニュース
2016/6/9現在、追加募集分枠はまだ終了していないようです。
とりあえずどんなものか動かしてみようと思い、手軽そうなHeroku環境に構築してみました。
制限事項
事前準備
LINEアカウント
- メールアドレスが登録されていること
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コードもあるので、必要なら保存しておきます。
アカウントの作成と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に登録します。
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
環境変数の登録
今回は以下のような環境変数を用意しました。
$ 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と表示されれば問題なさそうです。
友だち登録
アカウント作成時に入手していたQRコードをLINEアプリで読み取って友だち登録すれば、BOTにメッセージを送れるようになります。
少し気になったのは、「個人を選択した際は本名を入力してください。」と書いてあったので一応本名入れたのですが。
友だち登録時に、それが出てしまうんですよね。
トライアルですし、一般公開しない範囲なら良いのですが、不特定多数に公開するとなると、少し気が引けるかも。
いちおう、ビジネスアカウントに登録しているプロダクトが全て使われていないときであれば、名前を変更できるようです。
倍返しの様子
倍返しBOTは、送ったメッセージを倍にして(要するに2回)送ってきます。
調べながら書いていたらソースが長くなってきたので、現状はテキストとスタンプのみの対応。
BOTからは公式のスタンプしか使えないので、それ以外を送られた場合は「タイオウシテイマセン……」と返し、テキストとスタンプ以外のメッセージを受けると「カイドクフノウデス……」と返すというだけです。
まとめ
とりあえず基本的な仕組みはなんとなくわかったので、実戦の機会があれば、もっと深掘りしてみたい。
参考
- BOT API Trial Accountのご紹介 | LINE BUSINESS CENTER
- とりあえずLINE BOT APIでオウムを作ってみた - Qiita
- LINE BOT をとりあえずタダで Heroku で動かす - Qiita
- 【LINE BOT】 アカウント設定の仕方 〜アカウントを取ってみた!〜 - Qiita
現場のプロが教えるWeb制作の最新常識[アップデート版] (知らないと困るWebの新ルール)
- 作者: 久保知己,酒井優,塚口祐司,前川昌幸
- 出版社/メーカー: エムディエヌコーポレーション
- 発売日: 2016/06/01
- メディア: 単行本
- この商品を含むブログを見る