พัฒนา Line bot ด้วยภาษา PHP อย่างง่าย ด้วยโค้ดไม่กี่บรรทัด (ep.2)

วันที่: 14 มิ.ย. 2565 23:15 น.

พัฒนา Line bot ด้วยภาษา PHP อย่างง่าย ด้วยโค้ดไม่กี่บรรทัด (ep.2)

เมื่อไม่นานมานี้ (เอ๊ะหรือนานแล้ว) ได้พาเริ่มเขียน Line Bot ด้วยภาษา PHP ไปแล้ว ใครยังไม่ได้อ่านให้อ่านก่อนครับ ไปเริ่มจากพัฒนา Line bot ด้วยภาษา PHP อย่างง่าย ด้วยโค้ดไม่กี่บรรทัด (ep.1)

ในบทความนี้จะพาเพิ่มเติมโค้ดเข้าไปนิดนึง เพื่อสร้างรูปแบบคำตอบให้ดูมีอะไรมากยิ่งขึ้น ซึ่งนั่นก็คือ รูปแบบคำตอบแบบ Template message นั่นเอง ใน Template message เป็นรูปแบบที่เรากำหนดให้ผู้ใช้งานตอบโต้กับ bot ได้สะดวกยิ่งขึ้น แทนที่จพต้องพิมพ์ข้อความคำตอบด้วยตนเอง ก็เหลือเพียงแค่เลือกคำตอบโดยคลิกเพียงครั้งเดียวเท่านั้น มาดูโค้ดกันเลย

รูปแบบ Confirm template

 

โค้ดมีดังนี้

        $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TemplateMessageBuilder(
            'Confirm Template',
            new \LINE\LINEBot\MessageBuilder\TemplateBuilder\ConfirmTemplateBuilder(
                'คุณรู้จัก puwanai.com ไหม?',
                [
                    new \LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder(
                        'รู้จัก',
                        'รู้จัก'
                    ),
                    new \LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder(
                        'ไม่อ่ะ',
                        'ไม่อ่ะ'
                    )
                ]
            )
        );

 

รูปแบบ Buttons template

 

โค้ดมีดังนี้

        $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TemplateMessageBuilder(
            'Button Template',
            new \LINE\LINEBot\MessageBuilder\TemplateBuilder\ButtonTemplateBuilder(
                'คุณรู้จัก puwanai.com ไหม?',
                'ที่เจ้าของเว็บมีแมว 2 ตัวอ่ะ คุณรู้จักมั้ย?',
                'https://puwanai.com/tutorial/linebot/image-3.jpg',
                [
                    new \LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder(
                        'ออ ๆ รู้จัก',
                        'https://puwanai.com/'
                    ),
                    new \LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder(
                        'ไม่อ่ะ ไม่คุ้นเลย',
                        'https://puwanai.com/'
                    )
                ]
            )
        );

 

ซึ่งเมื่อนำโค้ดทั้งหมดมารวมกับ ep1 จะได้ดังนี้ครับ

<?php
include_once('./vendor/autoload.php');

$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);

$data = file_get_contents('php://input');
if ($data == '')
    return;

$data = json_decode($data, true);
$replyToken = $data['events'][0]['replyToken'];
$messageType = $data['events'][0]['message']['type'];

if ($messageType == 'text') {
    $userMessage = $data['events'][0]['message']['text'];
    
    if ($userMessage == 'confirm') { // เมื่อผู้ใช้พิมพ์ confirm
        $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TemplateMessageBuilder(
            'Confirm Template',
            new \LINE\LINEBot\MessageBuilder\TemplateBuilder\ConfirmTemplateBuilder(
                'คุณรู้จัก puwanai.com ไหม?',
                [
                    new \LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder(
                        'รู้จัก',
                        'รู้จัก'
                    ),
                    new \LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder(
                        'ไม่อ่ะ',
                        'ไม่อ่ะ'
                    )
                ]
            )
        );
    } else if($userMessage == 'button') {
        $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TemplateMessageBuilder(
            'Button Template',
            new \LINE\LINEBot\MessageBuilder\TemplateBuilder\ButtonTemplateBuilder(
                'คุณรู้จัก puwanai.com ไหม?',
                'ที่เจ้าของเว็บมีแมว 2 ตัวอ่ะ คุณรู้จักมั้ย?',
                'https://puwanai.com/tutorial/linebot/image-3.jpg',
                [
                    new \LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder(
                        'ออ ๆ รู้จัก',
                        'https://puwanai.com/'
                    ),
                    new \LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder(
                        'ไม่อ่ะ ไม่คุ้นเลย',
                        'https://puwanai.com/'
                    )
                ]
            )
        );
    } else {
        $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder('ข้อความคุณคือ ' . $userMessage);
    }

} else if ($messageType == 'sticker') {
    $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\StickerMessageBuilder(789, 10856);
} else if ($messageType == 'image') {
    $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\ImageMessageBuilder('https://puwanai.com/tutorial/linebot/image-new.jpg', 'https://puwanai.com/tutorial/linebot/image-new.jpg');
} else if ($messageType == 'location') {
    $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\LocationMessageBuilder('ส้มตำไทญ้อ+แซ่บเวอร์', '200/641 ถนนแจ้งวัฒนะ ซอย 10 แยก 1, ทุ่งสองห้อง, หลักสี่, Bangkok 10210', 13.8868937, 100.5756333);
} else {
    $textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder('อื่น ๆ');
}

$response = $bot->replyMessage($replyToken, $textMessageBuilder);
if ($response->isSucceeded()) {
    echo 'Succeeded!';
    return;
}

// Failed
echo $response->getHTTPStatus() . ' ' . $response->getRawBody();

 

และแน่นอน สามารถทดสอบได้ผ่าน Line Id: @lwl9942n หรือ qr code นี้

 

อ่านเพิ่มเติม https://developers.line.biz/en/docs/messaging-api/message-types/#template-messages

เรื่องอื่น ๆ ที่เกี่ยวข้อง