はじめに
原作者(元ネタ)様の記事:Javaで湯婆婆を実装してみる - Qiita
何番煎じか分かりませんが、
執筆時点(2020/11/09)でLINEBOTで実装して記事にされている方がいなかったので、実装してみました。
コード
PHP7で実装しました。
**(コピペして試される方はアクセストークンが記述されたtoken.txtファイルを読み込んでいる点にご注意ください。)
<?php
// 湯婆婆関数
function yubaba($name, $token_reply) {
// 贅沢なリプライメッセージ
$hun = [
'type' => 'text',
'text' => "フン。".$name."というのかい。\n贅沢な名だねぇ。"
];
// 湯婆婆が名前を1文字ずつ認識できる様にする
$name_arr = preg_split("/\B/u", $name);
// 抜き出す1文字の位置を求める
$num = mt_rand(0,count($name_arr));
// 新しい名
$na = $name_arr[$num];
// 君の名は。
$kiminonaha = [
'type' => 'text',
'text' => "今からお前の名前は".$na."だ。\nいいかい、".$na."だよ。\n分かったら返事をするんだ、".$na."!!"
];
$content = [
'replyToken' => $token_reply,
'messages' => [$hun,$kiminonaha]
];
return $content;
}
function follow_reply($token_reply) {
$keiyaku = [
'type' => 'text',
'text' => "契約書だよ。\nそこに名前を書きな。"
];
$content = [
'replyToken' => $token_reply,
'messages' => [$keiyaku]
];
return $content;
}
// リプライメッセージ送信関数
function send($content,$token) {
$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($content));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charser=UTF-8',
'Authorization: Bearer ' . $token
));
$result = curl_exec($ch);
curl_close($ch);
}
// メイン関数
function main() {
// アクセストークン
$token_access = file_get_contents('token.txt');
// リクエストjsonデータの処理
$json_req = file_get_contents('php://input');
$obj_req = json_decode($json_req);
$event_type = $obj_req->{"events"}[0]->{"type"};
if ($event_type === "message") { // メッセージの場合
// メッセージデータ
$msg = $obj_req->{"events"}[0]->{"message"}->{"text"};
// 先頭及び末尾の空白などの余分な要素を削除
$msg = trim($msg);
// リプライトークン
$token_reply = $obj_req->{"events"}[0]->{"replyToken"};
// 湯婆婆
$content_reply = yubaba($msg, $token_reply);
} elseif ($event_type === "follow") { // 友達追加の場合
// リプライトークン
$token_reply = $obj_req->{"events"}[0]->{"replyToken"};
// 友達追加メッセージ
$content_reply = follow_reply($token_reply);
} else {
exit(0);
}
// 送信
send($content_reply,$token_access);
}
main();
実行例
> 湯婆婆の画像は、[スタジオジブリ公式フリー素材ページ](http://www.ghibli.jp/info/013344/)から使用しています。最後に
湯婆婆の実装意外とおもしろい。
LINEBOTの良い点はこの記事を読んだ人がすぐに試せる点ですね!
次の友だち追加ボタンもしくはQRコードから友達登録して使ってみてください!