LINE BOTで自作自演AIドッキリをする方法。PHPにて作成。

PHP

こんにちは。
LINE BOTには、有名人やお店の公式アカウントがありますよね。
また、マイクロソフト社が開発した「りんな」っていう
人工知能の会話Botがありますよね。

AIを自作するのは時間がかかるし
API等を使えばサクッと作れるかもしれませんが、無料枠となるとかなり狭いです。

サクッと友人を驚かしてサクッとネタバラシするのに時間も手間もかかってしまいます。
ならばと思い、思いついたのが、

自作自演AI

です。
自作自演AIとは、LINEBotのAIになりきって自分で返信をすることです。

つまり、

【友達】→message→【LINE BOT 偽AI】
【LINE BOT 偽AI】→message→【LINE BOT 連絡用】
【LINE BOT 連絡用】→message→【自分】
で友達のメッセージを読むことができます。
そして返信もできます。

つまり友達はLINEBOTにメッセージを送ってLINE BOTから返信が来るので
BOTと会話していると思います。

では、ソースを貼ります。
30分で作ったのでかなり雑です。
※アクセストークンもソースにべた貼りしているほどセキュリティにガバガバナンスなのであくまで個人用で楽しんでください。

ちなみに
ブロードキャストメッセージという送信方法でメッセージを送りますので
自分が送るメッセージは作成するLINEBOTを登録している人全員に送信されるので
予めご了承ください。

1、二つのLINEBOTを作成します。
・Aボット(偽AI)
・Bボット(連絡用Bot)

2、二つファイルを用意します。
(linebotというディレクトリ下に二つのファイルがある想定です。)
・receive.php(友達のメッセージを受け取りBボットに送信)
・send.php(受け取ったメッセージを自分に送信)

receive.php

<?php
//receive.php
require_once(__DIR__.'/send.php');
//REQUEST_URIを入力
if($_SERVER["REQUEST_URI"] == '/linebot/receive.php'){
    //ユーザーからのメッセージ取得
    $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_text = $json_object->{"events"}[0]->{"message"}->{"text"};

    //メッセージタイプが「text」以外のときは何も返さず終了
    if($message_type != "text") exit;
    //ブロードキャストリプライ
    $post_data['messages'][] = array(
        'type' => 'text',
        'text' => $message_text 
    );
    sendreply($post_data);
}
//メッセージの送信
function reply($post_data){
    $accessToken = 'アクセストークン LINE BOT 偽AI用';
    $ch = curl_init('https://api.line.me/v2/bot/message/broadcast');
    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 ' . $accessToken
    ));
    $result = curl_exec($ch);
    curl_close($ch);
}
?>

send.php

 

<?php
//send.php
require_once(__DIR__.'/receive.php');
if($_SERVER["REQUEST_URI"] == '/linebot/send.php'){
//ユーザーからのメッセージ取得
$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_text = $json_object->{"events"}[0]->{"message"}->{"text"}; 
 
//メッセージタイプが「text」以外のときは何も返さず終了
if($message_type != "text") exit;
 
//返信実行
//sending_messages($accessToken, $replyToken, $message_type, $return_message_text);

//ブロードキャストリプライ
$post_data['messages'][] = array(
    'type' => 'text',
    'text' => $message_text
);
reply($post_data);
}
function sendreply($post_data){
    $access_token = 'アクセストークンLINE BOT 連絡用';
    $ch = curl_init('https://api.line.me/v2/bot/message/broadcast');
    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);
}
?>

これをサーバにアップすれば完成です。
あとはLINE BOTのWebhookUrlを設定すれば完了です。

「LINE BOT 偽AI」
…/linebot/receive.php

「LINE BOT 連絡用」
…/linebot/send.php

ちなみにwebhookのurlは、
sslに対応が必須です。

イメージ画像です。

左の画像が、友達からみた友達とLINE BOT(偽AI)
右の画像が自分から見た自分とLINE BOT(連絡用)
です。

以上です。
ありがとうございました。

コメント

タイトルとURLをコピーしました