PHPでLINEBotを作ってみた

はじめに

LINEのMessaging APIをつかって、簡単なBotを作ってみました。
簡単につくれるので、ぜひ、やってみてください。

公式サイトはこちらです。

https://developers.line.biz/ja/services/messaging-api/

環境

# 項目 バージョン
1 CentOS 7.8
2 PHP 7.2.29
3 Apache 2.4.6
4 ngrok(※) 2.3.35

(※)
Messaging API を使用するには、HTTPSを使用し、
認定認証局で発行されたSSL証明書が必要となります。
お試しのために、証明書を発行するのはもったいないので、
今回は、ngrokを使って、一時的にローカルサーバを外部に公開しました。

ngrok の設定

インストールは公式サイトからZIPファイルをダウンロードして、/usr/binに解凍したngrokを置くだけです。

https://ngrok.com/

インストール後、ngrok http 80でサーバを公開してみましょう。
ポート番号は、ご自身の環境に合わせて変更してください。

コマンドを実行すると下記が表示されるので、ForwardingにあるURLで接続します。
ドキュメントルートに簡易なファイル置いて、接続確認をしてみてください。

公開を停止する場合は、Ctrl+Cで停止します。
公開、停止するたびに、サブドメインが変わるので注意してください。

LINE Developers の設定

1. LINE Developers にログインする

https://developers.line.biz/ja/

LINEアカウントでログインできるので、自身のLINEアカウントでログインします。
LINEアカウントをもってない場合は、LINEアカウントを作りましょう。

2. MessagingAPI の設定をする

プロバイダーを作って、チャネルを作成します。
チャネル作成をするときに、Messaging APIを選択します。
お好きなチャネル名にし、その他必須事項を入力し、作成をクリックします。

3. Webhook URL の設定をする

Messaging API設定タブにあるWebhook URLに、先ほど、公開したサーバのURLを設定します。
さっきも言いましたが、ngrokは公開・停止のたびにURLが変わるので、URLが変わったらこの設定も変更してください。

応答メッセージ、あいさつメッセージも無効にしておきます。
ここの設定はお好きなように。
それと、チャネルアクセストークンが必要になるので、発行しておきます。

line-1

4. IPアドレスの許可

セキュリティ設定タブからサーバのIPを許可する

プログラム を書く

MessagingAPIから情報を受け取って返すためのコードを書いていきましょう。

1. メッセージを受け取る

JSONデータを取得した配列$jsonAryの中身は下記のようになっています。
ユーザが送ったメッセージと返信用のトークンが必要なので、変数にいれています。

2. メッセージを返す

ユーザが送ったメッセージに対して、「って、何ですか??」とつけて返してみましょう。

ここまでコードを書いたら、Messaging API設定タブにあるQRコードから
Botのチャネルをお友だち登録してみましょう。
そして、メッセージを送ってみると、「○○」って何ですか??と返ってくるはずです。

line-2

3. メッセージを2つ返す

さっきはメッセージを1つだけ返していましたが、連続でメッセージを返してみましょう。
「って何ですか??」のあとに、「もう1回、何をするか教えてください」と返してみましょう。

response配列のmessages要素に、返信メッセージを複数設定することで、複数メッセージを返すことができます。
最大5つまでは、送ることができます。

line-3

4. テキストメッセージ以外を返す

テキストメッセージ以外にも、スタンプや画像、確認メッセージを返すことができます。
今回は、確認メッセージを返してみましょう。
PC用のLINEアプリでは確認メッセージは使用できないのでご注意ください。

ユーザが送ったメッセージに対し確認メッセージを返します。
「はい」「いいえ」以外のメッセージがきた場合に、確認メッセージを出すようにして、
「はい」、「いいえ」の返答に応じて、返すメッセージを変えてみましょう。
ユーザの返答に応じて、さまざま処理を分岐させることができます。

line-4

おわりに

今回は、簡単にメッセージを返すだけのBotを作りました。
公式のガイドラインに詳細があるので、いろいろ試してみてください。

https://developers.line.biz/ja/docs/messaging-api/overview/