【PHP】LINE BOTの作り方 on Messaging API
「Messaging API」を利用したLINE BOTの作り方を説明しています。
今回サンプルとして作成するLINE BOTは、以下の「じゃねーよwwwBOT」です。


スマホに入っているラインから上のQRコードを読み込み、友達登録し、何か文章を打ち込んでみてください。
すると、「〇〇〇じゃねーよwww」とオウム返しするコメントが返ってきます。
はじめに
以前、【PHP】LINE BOTの作り方にて「BOT API Trial Account」を利用してPHPによるLINE BOTの作り方を説明したのですが、
正式版として「Messaging API」がリリースされて「BOT API Trial Account」でのLINE BOTは廃止されたので、
今回新たに「Messaging API」を利用したLINE BOTの作り方(PHP)を説明したいと思います。
そもそもLINE BOTって何?
- 「Messaging API」を利用してLINE BOTを作成する
 - LINEユーザーがそのBOTアカウントを友達登録する
 
この状況が整うと
- サーバー上で作成したメッセージをLINE BOTを通じて友達登録したLINEユーザーに一斉送信できる
 - 友達登録したLINEユーザーがLINE BOTに話しかけると、その文章等を取得してサーバー上で処理してメッセージを返答できる
 
など、遊びにでも商用にでも利用できるBOTとなります。
イメージ図

友達登録したLINEユーザーに一斉or個別メッセージを送ったり、LINEユーザーからのメッセージに応答できる。

正式版のLINE BOTとなるので商用利用をする場合には有料(料金体系によってできることが変わる)にする必要があるのですが、お試し用として「Developer Trial」が用意されています。
「Developer Trial」は友達登録の限度が50人となっていますが、全ての機能を使えるので、今回は「Developer Trial」を利用してLINE BOTを作ってみたいと思います。

LINE BOTの作り方
では、「Developer Trial」を利用してPHPによるLINE BOTを作ってみたいと思います。
開発環境
- PHPとSSLを利用できるサーバー(私はエックスサーバーを利用)
 - LINEアカウント(スマホにLINEを入れていればOK)
 
LINE BOT用のアカウント作成
「LINE BUSINESS CENTER」にアクセスし、「Developer Trialを始める」をクリックします。

すると下のような画面がでてきますので、スマホにLINEインストールするときに登録したメールアドレスとパスワードを入力してログインしてください。
※初めてログインする場合はセキュリティとして4桁の数字が表示されるので、スマホでLINEを開き、その4桁の数字を入力して認証を行ってください。

「Business Center」で利用するメールアドレスを登録しなければならないので、適当なメールアドレスを入力して続行してください。

上で入力したメールアドレスにLINEからメールが来るので、メール受信箱を確認してメールに記載されている認証用URLをクリックしてください。
すると、次のような画面が出てくるので、必要事項を入力してアカウントを作成してください。

登録が完了すると、次のような画面が出てきますので、「アカウントリストへ」をクリックしてください。

LINE BOT用のアカウント作成
アカウントの作成が終わったので、次は「Messaging API」を使ってLINE BOT用のアカウントを作ります。
下の画像にある「Messaging API」をクリックしてください。

そして再度下の画面が出てくるので、「Developer Trialを始める」をクリックします。

すると、次のような画面が出てくるので、自分が作りたいLINE BOTにふさわしい設定を行ってください。

必要事項を設定すれば、次のようにLINE BOT用のアカウントが作成できます。 「LINE@MANAGERへ」をクリックしてください。

Bot設定
LINE BOT用アカウントを作成したら、いよいよBOT設定を行います。
下の画面において「APIを利用する」をクリックしてください。
※注意事項が出ますが、後から複数アカウントを作成できるので、今回は勉強用に「確認」で了承してよいです。

すると、次のような詳細設定画面が出てくるので、次のように設定して「保存」してください。

次に、同じ画面の上部にある「LINE Developersで設定する」をクリックしてください。

アクセス情報の取得
LINE BOTアカウントとサーバーとの情報のやり取りを行うために必要なアクセス情報を取得します。
次のような画面が開いていると思うので、
Channel ID※今回は使いませんChannel Secret※今回は使いません- Channel Access Token
 
の3つの認証情報をメモ帳などにコピーしてください。
なお、「Channel Secret」は右側の「SHOW」をクリックすることで、「Channel Access Token」は右側の「ISSUE」をクリックすることで閲覧できます。

次に、画面下の「EDIT」を押してください。 
「Webhook URL」の設定
次のような画面が出てくるので、「Webhook URL」の設定をします。

「Webhook URL」とは、LINE 公式サーバーと自前サーバーでデータのやり取りをするために必要なURLです。
ここでの注意点は、「Webhook URL」はSSL(URLでいうと「http」ではなく「https」)である必要があります。
自前でSSLを準備するのは厳しいので、私は現在使っているエックスサーバーの共有SSLで対応するようにしました(共有SSLだと、さくらインターネットやロリポップなどでも使えると思います)。
さて、エックスサーバーでは
https://○○○.ssl-xserver.jp/
のようなURLを得られるので、このドメイン直下に「linebot」というディレクトリを作成し、そこにLINE BOT用のPHPプログラムファイル(「linebot.php」とした)を作成しました。
なので、「Webhook URL」は次のようになります。
https://○○○.ssl-xserver.jp:443/linebot/linebot.php
なお、「Webhook URL」にはポート番号が必要なので、「:443」とポート番号を付しています。
「Webhook URL」を入力した後は「SAVE」してください。
「Server IP Whitelist」の設定
次に、LINEサーバーと自分のサーバーでデータのやり取りをする際のセキュリティ向上として、画面左サイドバーにある「Server IP Whitelist」からIPアドレスのホワイトリストを作成します。

下のような画面が出てきますので、サーバーのIPアドレスを入力し、最後に「24」と付け加えて「ADD」を押してください。

PHPプログラムの作成
いよいよPHPプログラムの作成です。
<?php
$accessToken = 'ここに「Channel Access Token」をコピペする';
//ユーザーからのメッセージ取得
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);
//取得データ
$replyToken = $json_object->{"events"}[0]->{"replyToken"};		//返信用トークン
$message_type = $json_object->{"events"}[0]->{"message"}->{"type"};	//メッセージタイプ
$message_text = $json_object->{"events"}[0]->{"message"}->{"text"};	//メッセージ内容
//メッセージタイプが「text」以外のときは何も返さず終了
if($message_type != "text") exit;
//返信メッセージ
$return_message_text = "「" . $message_text . "」じゃねーよwww";
//返信実行
sending_messages($accessToken, $replyToken, $message_type, $return_message_text);
?>
<?php
//メッセージの送信
function sending_messages($accessToken, $replyToken, $message_type, $return_message_text){
	//レスポンスフォーマット
	$response_format_text = [
		"type" => $message_type,
		"text" => $return_message_text
	];
	//ポストデータ
	$post_data = [
		"replyToken" => $replyToken,
		"messages" => [$response_format_text]
	];
	//curl実行
	$ch = curl_init("https://api.line.me/v2/bot/message/reply");
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
	curl_setopt($ch, CURLOPT_HTTPHEADER, array(
		'Content-Type: application/json; charser=UTF-8',
		'Authorization: Bearer ' . $accessToken
	));
	$result = curl_exec($ch);
	curl_close($ch);
}
?>
上のプログラムをコピーして、「linebot.php」というファイルを作成して貼り付け、サーバーのSSLを適用できるディレクトリにファイルを移動させてください。
なお、「$accessToken」には、あなたの「Channel Access Token」を書き込んでください。
「Webhook URL」の検証
左サイドバーの「Basic information」をクリックします。

そして「Webhook URL」の項目に行き、「VERIFY」ボタンをクリックしてください。

そして、「Webhook URL」の下らへんに「Success.」と表示されれば設定完了です。
作成したLINE BOTを友達登録しよう!
上の画像のように、「QR Code」から自分のLINE(スマホ)から読み取り、友達登録をしてください。
そして、好きなテキストを打ち込んでください。
すると「〇〇〇じゃねーよwww」とオウム返しするコメントが返ってくるはずです。
あわせて読んでほしい!





1:LINE荒らされる:2017/07/28 22:07:10
僕はLINEでよく外国人荒らしグループに荒らされてしまいます。その対策として何かbotを作ることはできるのでしょうか?最近は保護botとかいうものを聞きますが、どうなのでしょう。