PHP
LineBotAPI

今更ながらLINE BOTを作成してみた

はじめに

初めまして。
PHPでサーバーサイドエンジニアをしております。
koisan1153と申します。

PHPを利用したLINEのBOTを作成してみたので、ツラツラと書いてみます。

必要なモノ

LINEの個人アカウント
サーバー(https通信が必要)

登録

LINE BOT はLINE@の[Messaging API]を利用したものになりますので、
まずはLINE@への登録が必要です。

こちらを参考に準備しました。
LINE BOTの作り方を世界一わかりやすく解説(1)【アカウント準備編】

httpsが必要

Webhook URL ※SSLのみ対応

ということで、https〜で始まるサーバーを用意してください。
私はドメイン取得後に、お名前.com VPSLet'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" => $message_type,
  "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通知を使ってみたりなど出来るので、
面白いことが出来そうです。