【PHP】LINE BOTの作り方

公開日:
更新日:
カテゴリー: LINE BOT

先日LINEでBOTが作れるとどこぞのサイトで見かけたので、遅ればせながらLINE BOTを作ってみました。

ここではその過程や作り方を画像付きで詳細に紹介しています。

追記

正式版として「Messaging API」がリリースされて「BOT API Trial Account」でのLINE BOTは廃止されたので、

新たに「Messaging API」を利用したLINE BOTの作り方を「【PHP】LINE BOTの作り方 on Messaging API」にて説明しています。

LINEでBOTが作れるの?

BOTといえばTwitterですが、私も知るまではまさかLINEでBOTが作れるとは思いませんでした。

しかし、「【LINE】メッセージングAPIのオープン化に先駆け、先着1万名限定でBOTアカウントを自由に開発できる「BOT API Trial Account」の無償提供を開始」にあるように、無料でトライアルとしてLINE BOTが作れます。

「ほー!面白そう!!」ということで、試しにこんなLINE BOTを作ってみました。

友達登録して試してみてください。

LINE BOTの作り方

1.「BOT API Trial Account」の作成

LINE BOTを作るためには、こちらからアカウントを作成しなければなりません。

まずは説明文を軽く読み流し、「利用開始」からアカウントを作ってください。

すると下のような画面がでてきますので、LINEを作成するときに登録したメールアドレスとパスワードを入力してログインしてください。

すると、次のような画面がでてきますので、「ビジネスアカウントを作成する」をクリックしてください。

いろいろと個人情報を記入するページが出てきますが、それを入力すると、下のような画面が出てきますので、「アカウント名」と「トップ画」を設定してください。

すると次のような画面が出てくるので、「BOT API Trial Account」の始めるボタンを押してください。

そして画面下の方にある「利用開始」をクリックします。

そしたら次のようになるので、「Create」をクリックしてください。

これでアカウントは作成完了です。

2.「Callback URL」を設定しよう!

作成したBOTのアカウント情報ページが表示されていると思いますが、ご覧のとおり「Callback URL」がありません(当たり前ですが)。

なので今から「Callback URL」を指定するので、「EDIT」を押してください。

「Callback URL」は「https」でなければならない

ここで私はつまづいたのですが、「Callback URL」に指定できるのは「https」のみでした(「https」から始まるURL)。

なので手っ取り早くLINE BOTを開発するために、私が使用しているサーバー(エックスサーバー)の共有SSLを利用することにしました。

エックスサーバーでは

https://○○○.ssl-xserver.jp/

のようなURLを得られるので、このドメイン直下に「linebot」というディレクトリを作成し、そこにLINE BOT用のPHPプログラムファイル(「callback.php」とした)を作成しました。

なので、「Callback URL」は次のようになります。

https://○○○.ssl-xserver.jp/linebot/callback.php

ポート番号の記述が必要だった!

上記URLで完璧だと思ったのですが、動かない・・・原因を調べたところ「Callback URL」にはポート番号が必要でした。

なので、次のように「:443」をシンプルに追記するだけです。

https://○○○.ssl-xserver.jp:443/linebot/callback.php

ということで、下の画像のように「Callback URL」を指定して、SAVEを押せば完了です。

3.「Server IP Whitelist」を指定しよう

「Callback URL」の設定が終わったら、LINE BOT用プログラムファイルを実行させたいサーバーのIPを次のように指定します。

まず、サイドバーにある「Server IP Whitelist」をクリックします。

すると、次のような画面が出てくるので、サーバーのIPアドレスを入力し「ADD」を押します。

なお、最後の項目は「24」にしておけば問題ないはずです。

4.LINE BOTのプログラムを作ろう!

認証情報の取得

LINE BOTのプログラムを作成するにあたってまずは

  • Channel ID
  • Channel Secret
  • MID

の3つの認証情報が必要です。

この情報は、下の画像で示すアカウントメインページから入手可能です。

プログラムの作成

まずは勉強用として、ラインユーザーがLINE BOTに

ハゲ

というメッセージを送ってきた場合、そのユーザーに

「ハゲ」じゃねーよwww

とオウム返しするシンプルなLINE BOTを作成したいと思います。

そのプラグラムは以下です。

<?php
//認証情報設定
$authentication_array["channel_id"] = "あなたのID";
$authentication_array["channel_secret"] = "あなたのSecret";
$authentication_array["mid"] = "あなたのMid";

//データ取得
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);

//取得データからの抽出
$message_from = $json_object->{"result"}[0]->{"content"}->{"from"};	//メッセージ送信者
$message_text = $json_object->{"result"}[0]->{"content"}->{"text"};	//送信されたメッセージ

//返信メッセージ
$return_message_text = "「" . $message_text . "」じゃねーよwww";

//返信メッセージの送信
sending_messages($authentication_array, $message_from, $return_message_text);

?>
<?php
//メッセージの送信
function sending_messages($authentication_array, $message_from, $return_message_text){
	//API URL
	$url = "https://trialbot-api.line.me/v1/events";

	//返信メッセージの設定
	$message_format = ['contentType' => 1,"toType" => 1,"text" => $return_message_text];

	//POSTデータ
	$post_data = [
		"to" => [$message_from],
		"toChannel" => "1383378250",
		"eventType" => "138311608800106203",
		"content" => $message_format
	];

	//ヘッダー設定
	$headers = array(
		"Content-Type: application/json",
		"X-Line-ChannelID: " . $authentication_array["channel_id"],
		"X-Line-ChannelSecret: " . $authentication_array["channel_secret"],
		"X-Line-Trusted-User-With-ACL: " . $authentication_array["mid"]
	);

	//curl実行
	$ch = curl_init($url);
	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',
	    'X-Line-ChannelID: ' . $authentication_array["channel_id"],
	    'X-Line-ChannelSecret: ' . $authentication_array["channel_secret"],
	    'X-Line-Trusted-User-With-ACL: ' . $authentication_array["mid"]
	    ));
	$result = curl_exec($ch);
	curl_close($ch);
}
?>

//認証情報設定
$authentication_array["channel_id"] = "あなたのID";
$authentication_array["channel_secret"] = "あなたのSecret";
$authentication_array["mid"] = "あなたのMid";

には、先ほど取得した認証情報を入力してください。

そして上記プログラムを「callback.php」という名前で保存し、「Callback URL」に指定したURLでアクセスした場合、そのファイルが実行されるサーバーの場所にアップロードしてください。

5.自分のラインに作成したLINE BOTを追加しよう!

作成したLINE BOTのアカウントメインページにいくと、次のようなQRコードがあると思います。

このQRコードの情報を自分のラインで読み取り、友達追加を行います。

そしてLINE BOTに何か呟いてみてください。

すると、

のように、オウム返ししながら地味に煽ってくれます。

あとは、「API reference for BOT API」などを見ながら、自分流にアレンジして、オリジナルなLINE BOTの作成にチャレンジしてみてください。

 

あわせて読んでほしい!

 

コメント

1:うえしま:2016/09/30 6:15:39

メッセージapiがでてきました

2:りせ:2017/02/24 17:26:13

保護BOTください

コメントフォーム
お名前
コメント