次に、一つ前のページで使ったプログラムを書き換えて、おみくじ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の一例でした。


PAGE TOP