はじめに
初めまして。
PHPでサーバーサイドエンジニアをしております。
koisan1153と申します。
PHPを利用したLINEのBOTを作成してみたので、ツラツラと書いてみます。
必要なモノ
LINEの個人アカウント
サーバー(https通信が必要)
登録
LINE BOT はLINE@の[Messaging API]を利用したものになりますので、
まずはLINE@への登録が必要です。
こちらを参考に準備しました。
LINE BOTの作り方を世界一わかりやすく解説(1)【アカウント準備編】
httpsが必要
Webhook URL ※SSLのみ対応
ということで、https〜で始まるサーバーを用意してください。
私はドメイン取得後に、お名前.com VPS + Let's Encryptで用意しました。
PHPで書いてみる
まずはおうむ返しBOTを。
メッセージタイプ
ここの「テキスト」が来たら返すようにします。
また、イベントは「message」に限定します。
メッセージイベント
bot.php
// アクセストークン指定
$ACCESS_TOKEN = 'developerの[メッセージ送受信設定]の[アクセストークン]';
//ユーザーからのメッセージ取得
$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」以外のときは200を返す
if($message_type != "message"){
echo 200; exit;
}
//メッセージ内容
$message_text = $json_object->{"events"}[0]->{"message"}->{"text"};
//レスポンスフォーマット
$response_format_text = [
"type" => 'text',
"text" => $message_text
];
//ポストデータ
$post_data = [
"replyToken" => $replyToken,
"messages" => [$message_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 ' . $ACCESS_TOKEN
));
$result = curl_exec($ch);
curl_close($ch);
echo 200;
こんな感じですかね。
コレでおうむ返しBOTが出来ました。
実際にはもっと色々なAPIと組み合わせたりして、
PUSH通知を使ってみたりなど出来るので、
面白いことが出来そうです。