พัฒนา Line bot ด้วยภาษา PHP อย่างง่าย ด้วยโค้ดไม่กี่บรรทัด (ep.2)
วันที่: 14 มิ.ย. 2565 23:15 น.
เมื่อไม่นานมานี้ (เอ๊ะหรือนานแล้ว) ได้พาเริ่มเขียน 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
เรื่องอื่น ๆ ที่เกี่ยวข้อง
พัฒนา Line bot ด้วยภาษา PHP อย่างง่าย ด้วยโค้ดไม่กี่บรรทัด (ep.1)
เมื่อวันที่: 13 ก.พ. 2565 10:38 น.
สร้าง Line Login ให้กับเว็บไซต์ ด้วยภาษา PHP
เมื่อวันที่: 22 เม.ย. 2565 22:55 น.
อัพเดทภาพ preview เมื่อแชร์ลิงก์ใน Line Facebook และ twitter ยังไง
เมื่อวันที่: 12 ก.พ. 2566 21:59 น.
โค้ดภาษา PHP ส่ง Line Notify เข้าไลน์ส่วนตัวหรือกลุ่มไลน์
เมื่อวันที่: 6 เม.ย. 2565 20:42 น.
การเขียนโปรแกรมภาษา php ให้เรียกใช้งาน jwt อย่างง่าย
เมื่อวันที่: 15 เม.ย. 2565 13:39 น.
Json Web Token (JWT) brute force การเดารหัสหรือ secret key ด้วย node.js
เมื่อวันที่: 14 ก.ย. 2565 21:03 น.