次に、一つ前のページで使ったプログラムを書き換えて、おみくじBOTを作ってみたいと思います。
ユーザーが「おみくじ」とメッセージを送ると、ランダムで「大吉」「吉」「凶」のいずれかを返信するというシンプルなものを想定しています。
「ランダムで3種類の結果が返ってくる」という処理の表現方法はいくつかあるのですが、今回はPHPのrand()という関数を使って実現したいと思います。
rand(0, 2);
上の例は、0から2の整数をランダムで出力する処理です。0、1、2の数字にそれぞれ大吉、吉、凶を割り当てれば良さそうですね。
それでは、一つ前のページでオウム返しのメッセージを作っていた14行目を修正し、コードを書いてみます。
<?php
require_once __DIR__ . '/vendor/autoload.php';
define('SECRET', '********');
define('ACCESSTOKEN', '********');
$json_string = file_get_contents('php://input');
$json_object = json_decode($json_string);
$replyToken = $json_object->{"events"}[0]->{"replyToken"};
$message_text = $json_object->{"events"}[0]->{"message"}->{"text"};
$user_id = $json_object->{"events"}[0]->{"source"}->{"userId"};
if($message_text === "おみくじ") {
$rand = rand(0, 2);
if($rand === 0) {
$result = "大吉";
} elseif($rand === 1){
$result = "吉";
} else {
$result = "凶";
}
$return_message = $result . "です。";
} else {
$return_message = "ちょっと何言ってるかわからない。";
}
$response_format_text = array( "type" => 'text', "text" => $return_message );
$post_data = array( "replyToken" => $replyToken, "messages" => [$response_format_text] );
$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, JSON_UNESCAPED_UNICODE ));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charser=UTF-8',
'Authorization: Bearer ' . ACCESSTOKEN
));
curl_exec($ch);
curl_close($ch);
LINEで送られたメッセージ($message_text)が「おみくじ」という文字だった場合は、rand()関数で乱数を出して0 = 大吉、1 = 吉、2 = 凶をセットして、その結果を返す処理になっています。
そして、送られたメッセージが「おみくじ」以外だった場合は「ちょっと何言ってるかわからない」というメッセージを返信するようにしています。

上記コードの14行から23行の間は、if文の代わりに配列(array)を使って、次のように簡略化することもできます。
if($message_text === "おみくじ") {
$result = array('大吉', '吉', '凶');
$rand = rand(0, 2);
$return_message = $result[$rand] . "です。";
} else {
$return_message = "ちょっと何言ってるかわからない。";
}
以上が、処理を与えたLINE Botの一例でした。