LoginSignup
8
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-06-14

はじめに

初めまして。
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" => '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通知を使ってみたりなど出来るので、
面白いことが出来そうです。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7