오늘의 반찬을 랜덤하게 전달하는 LINE BOT를 만들어 보았다

상당히 옛날입니다만, 오늘의 반찬을 랜덤에 전달하는 LINE BOT를 만들었으므로, 지금 하면서 소개합니다.



개요



오늘의 반찬을 랜덤하게 전달하는 LINE BOT입니다.
반찬이라는 것은 음식이 아니라 남자에게 걸리지 않는 성인 분의 반찬입니다.

사용법은 매우 간단하고, 그냥 "반찬"이라고 메시지를 보내는 것입니다.
「오늘의 반찬」이라든가, 「반찬해 주세요」라고 하는 바람에, 「반찬」이라고 하는 키워드가 포함되어 있으면 OK입니다.



「반찬」이라고 하는 키워드가 포함되어 있지 않거나, 스탬프를 보내면, 「「반찬」이라고 말해 주면 좋은 것을 줘요♪」라고 하는 메세지를 돌려줍니다.



QR코드는 이쪽입니다.



지금은 개수의 예정은 없습니다만, 만약 반향 많으면, 개수를 더하는 것도 생각하고 있습니다.

개발한 경위



위에서 언급한 반찬이지만, 그물을 잡으면 무료로 얼마든지 찾을 수 있습니다.
하지만 찾는 것이 힘들거나, 특히 마음에 드는 반찬이 없다는 사람을 위해서, 자동으로 랜덤하게 반찬을 결정해 주면 편리한 것은 아니라고 생각했습니다.
또 LINE BOT 만들기에 흥미도 있어, 한편 PHP도 공부중이었으므로, 그것을 살릴 수 있으면(자)라고 생각해, 개발에 밟은 나름입니다.

개발 환경


  • 에 6
  • PHP
  • SDK of the LINE BOT API for PHP

  • 구현 정보



    구체적인 개발 순서(Heroku나 LINE Developers에의 등록등)는, 참고 URL에 몇개의 사이트를 들고 있으므로, 그쪽을 참조해 주세요. 기본적으로 그 쪽으로 변함이 없습니다.
    여기에서는 오리지날로 실장한 부분에 대해 소개합니다.

    index.php
    <?php
    require_once __DIR__ . '/vendor/autoload.php';
    require_once __DIR__ . '/OkazuGenerator.php';
    
    $httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient(getenv('CHANNEL_ACCESS_TOKEN'));
    $bot = new \LINE\LINEBot($httpClient, ['channelSecret' => getenv('CHANNEL_SECRET')]);
    $sign = $_SERVER["HTTP_" . \LINE\LINEBot\Constant\HTTPHeader::LINE_SIGNATURE];
    $events = $bot->parseEventRequest(file_get_contents('php://input'), $sign);
    
    foreach ($events as $event) {
        if (!($event instanceof \LINE\LINEBot\Event\MessageEvent)
        || !($event instanceof \LINE\LINEBot\Event\MessageEvent\TextMessage)) {
            $bot->replyText($event->getReplyToken(), OkazuGenerator::replyPromptOkazu());
        }
    
        // おかずと言えばおかずが出てくる
        if (preg_match("/おかず/", $event->getText())) {
            $bot->replyText($event->getReplyToken(), OkazuGenerator::replyOkazu());
        } else {
            $bot->replyText($event->getReplyToken(), OkazuGenerator::replyPromptOkazu());
        }
    }
    ?>
    

    index.php는 주요 처리를 설명합니다.
    주목해야 할 것은 foreach 문 이후의 처리입니다.
    최초의 if문에서는, 텍스트 이외의 메세지가 왔을 경우는 모두 무시해, 촉구의 문언을 돌려주도록(듯이) 하고 있습니다.
    또, 텍스트가 왔을 경우에, 「반찬」이라고 하는 키워드가 포함되어 있을지도 판정해, 포함되어 있으면 무작위로 URL을 돌려주어, 포함되어 있지 않으면 방금전과 같은 촉구의 문언을 돌려줍니다 .

    OkazuGenerator.php
    <?php
    
        /**
         * おかず生成クラス
         */
        class OkazuGenerator
        {
            const URL_ERRY = 'http://erry.one/video/';
            const URL_SUGIRL = 'https://sugirl.info/video/';
            const URL_SEPARATOR = '/';
            const PROMPT_OKAZU = '「おかず」って言ってくれたらいいものあげるよ♪';
    
            /**
             * おかずをランダムに返す
             */
            public static function replyOkazu()
            {
                if (rand(0, 1) === 0) {
                    return OkazuGenerator::URL_SUGIRL . rand(23000, 25515) . OkazuGenerator::URL_SEPARATOR;
                } else {
                    return OkazuGenerator::URL_ERRY . rand(16000, 18770) . OkazuGenerator::URL_SEPARATOR;
                }
            }
    
            /**
             * おかずの催促
             */
            public static function replyPromptOkazu()
            {
                return OkazuGenerator::PROMPT_OKAZU;
            }
        }
    
    ?>
    

    OkazuGenerator.php는 무작위로 URL을 생성하거나 촉구의 문장을 정의하는 치명적인 처리를 설명합니다.
    구조는 간단하고, 성인 사이트의 URL의 마지막이 숫자가 되어 있는 것에 대해서, 랜덤인 숫자를 붙이고 있을 뿐입니다. 또, 보다 바리에이션을 늘리기 위해, 복수의 어덜트 사이트에 대응시키고 있습니다.

    GitHub



    참고 URL


  • PHP 버전의 공식 SDK를 사용하여 LINE Messaging API 기반 Bot을 만들어 보았습니다.
  • [LINE Bot] 위치 정보에서 먹어 로그 3.5 이상의 우량점을 검색하는 bot 만들었다
  • 【PHP】 LINE Messaging API를 사용하여 앵무새 반환 BOT 만들기
  • 좋은 웹페이지 즐겨찾기