【PHP】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の作成にチャレンジしてみてください。
あわせて読んでほしい!
コメント
2:りせ:2017/02/24 17:26:13
保護BOTください




1:うえしま:2016/09/30 6:15:39
メッセージapiがでてきました