ブロックチェーン・AI・システム開発の株式会社INDETAIL

LINE Messaging APIでグループメンバーの誕生日を祝うBotを作ってみる(前編)

2016.11.24
masa

birthdayparty_boy2

こんにちは、新卒社員のmasaです。

突然ですが、友人に誕生日を祝ってもらえるのは嬉しいですよね。近年ではSNSのメッセージ機能やLINEなどでお祝いのメッセージを送りあったりする人も多いと思います。

LINEといえば2016年9月に、LINEでBotを作成できる「LINE BOT API Trial Account」が新しくなり、「LINE Messaging API」としてサービスが開始されました。
 

LINE Messaging API:
https://business.line.me/ja/services/bot
messaging_api_about

もしもLINEのグループトークで友達の誕生日を祝ってくれるBotがいたら、グループトークも盛り上がるのではないでしょうか?
(何より、友達の誕生日を忘れるリスクが減ると思います・・・)

ということで今回はそんなMessaging APIを利用して、LINEのグループに所属するメンバーの誕生日を祝う簡易的なBotを作ってみます。

実現したいこと

  • Botにグループメンバーの誕生日を覚えさせる
  • グループ内に今日が誕生日の人がいれば、「◯◯さん、お誕生日おめでとう」のようなお祝いメッセージをグループに投稿する

 
本記事は「前編」ということで、Messaging APIを扱う最初のステップとして「ユーザーの発言をオウム返しする機能」を実装してみます。

用意するもの

  • LINEビジネスアカウント
  • SSLを使用できるサーバー

事前準備

事業者登録・Bot用アカウント登録

Messaging APIのプランはいくつかあり、無料プランと有料プランがあります。無料プランには「フリー」と「Developer Trial」の2種類あり、それぞれ制限が少し異なります。

今回はPush APIを使用したいので、Developer Trialに登録します。ここでLINE BUSINESS CENTER(https://business.line.me/ja/)での事業者登録(個人でも登録可)が必要になるので、一緒に登録します。

事業者登録が済んだら、 LINE BUSINESS CENTERトップページ -> アカウントリスト からBot用にビジネスアカウントを作成します。ビジネスアカウント作成後は、以下の画像のように自分のアカウントが表示されるようになります。Messaging APIの欄はのちのBot設定によって表示されます。

acount

Botの設定

次に、Botとして機能させるための各種設定を行います。アカウントのLINE@ MANAGERを開いて、アカウント設定 -> Bot設定 を選択すると、以下の設定画面が表示されます。

manager_bot_config_use_api

APIを使用すると利用できなくなる機能が出てきますが、今回は特に使用しないのでそのまま「APIを利用する」を選択します。すると、以下の画面が表示されます。

manager_bot_config

まず、「利用可能なAPI」の欄にREPLY_MESSAGEPUSH_MESSAGEがちゃんとあることを確認しましょう。

Botの「リクエスト設定」と「詳細設定」は以下のようにします。
 

Webhook送信 これがないとメッセージを受け取れないので利用するに設定します。
Botのグループトーク参加 今回はグループにメッセージを送信したいので利用するに設定します。
自動応答メッセージ LINE@ MANAGERで登録した自動応答メッセージを有効にする設定です。今回は利用しません
友達追加時あいさつ アカウントを友達に追加した際に、LINE@ MANAGERで登録したメッセージが送られます。今回は利用しません

 
LINE@ MANAGERでの設定はこれで終わりです。次は、LINE Developers側での設定です。

「Basic Information」を開くと、以下の画面が出てきます。

developers_bot_config

「Webhook URL」にはメッセージを受信した際のコールバック先として、のちに自サーバーに設置するコールバック用PHPファイルのパスを以下のように指定します。

config_callback_url_https

例)https://(Botを置くサーバーのドメイン)/linebot/callback.php

このコールバックURLのスキームは「https:」にしか対応していないようで、「http:」で指定すると認識されませんでした。そのため、SSLを使用できるサーバーにBotのプログラムを置く必要があります。

作成したBotは、自分のLINEアカウントから友達に追加しておきましょう。

実装してみる

こちらのドキュメントでAPIの仕様を確認しながら実装していきます。
https://devdocs.line.me/ja/#messaging-api

いろいろな言語に対応しているようですが、今回はPHPで実装します。

ユーザーのメッセージに対してオウム返しさせる

まず試しに、受け取ったメッセージをオウム返しさせてみます。

API側からPOSTで送られてきたイベントオブジェクト(Webhook Event Object)をfile_get_contents関数により取得します。イベントオブジェクトはJSON形式のデータなので、json_decode関数によってPHP上で扱えるオブジェクトに変換します。

次に、イベントオブジェクトからユーザーへの返信に必要な情報を抜き出し、Botが送信するメッセージのデータを作成します。ここではオウム返しをするために、ユーザーが発言したテキストをそのまま送信するようにします。replyToken=返信用トークンは一定時間をすぎると無効になってしまうため、受け取った後はなるべく早く返信しましょう。

送信メッセージを作成後、curlを用いてユーザーへ返信します。

実際にBotを動かしてみる

Botに対して、いくつかメッセージを送ってみます。すると・・・

demo1

メッセージが返ってきました! ユーザーの言葉をそっくりそのまま返してきます。

まとめ

今回は、Botを作成するための下準備と簡単なプログラムの実装をしました。

基本的には、APIから送られてきたJSON形式のイベントデータに応じて処理を行うような流れです。

実際にBotを動かしてみると、なんだか愛着がわきますね。もっと色々なことをさせたくなります。

現段階ではユーザーの言葉を返すだけのBotですが、次回「後編」ではここから機能を追加し、お誕生日Botに仕上げていきたいと思います!

後編記事はこちら

LINE Messaging APIでグループメンバーの誕生日を祝うBotを作ってみる(後編)
https://www.indetail.co.jp/blog/170125/

関連タグ:

masa

職種:エンジニア 2016年新卒社員のmasaです。主にWebのフロントエンド開発をしています。最近、ダーツを始めました。