เนื้อหานี้เป็นตอนที่ 5 แล้ว เกี่ยวกับการประยุกต์ และวิธีการใช้งาน LINE Messaging API โดยเนื้อหาในตอน
ต่อไปนี้ เป็นวิธีการใช้งานง่ายๆ ลักษณะคล้ายๆ กับการใช้งาน LINE Notify ต่างกันที่การส่ง Push Notification
ผ่าน LINE Messaging API จะเป็นการส่งจาก bot ไม่เหมือนกับ LINE Notify ที่ส่่งจากบัญชี LINE Notify
โดยการส่งจาก bot นั้นจะส่งไปยังเพื่อนที่ได้ add bot เป็นเพื่อนแล้ว สามารถส่งข้อความ push ตอนไหนก็ได้
โดยรูปแบบที่สามารถส่ง ก็จะเป็นรูปแบบเดียวกับการโต้ดตอบข้อความ หรือรูปแบบข้อความ Message Object
ตามบทความในลิ้งค์ด้านล่าง
ส่งข้อความด้วย LINE bot sdk php สำหรับ LINE Messaging API ตอนที่ 2 http://niik.in/835
https://www.ninenik.com/content.php?arti_id=835 via @ninenik
สามารถส่งไปให้ผู้ใช้คนเดียวครั้งเดียว หรือส่งไปหาผู้ใช้พร้อมกันหลายๆ คนในครั้งเดียวก็ได้ โดยค่าที่จำเป็นต้องใช้
ก็คือ userId ซึ่งเป็น userId ไลน์ของผู้ใช้ ที่เราสามารถบันทึกในตอนที่ผู้ใช้ทำการสนทนากับ bot ตามบทความ
ที่ผ่านมา (userId นี้ ไม่ใช่ Line ID ที่ใช้ในการค้นหาใน LINE App บนมือถือ)
วิธีการใช้งาน เราจะใช้ไฟล์การตั้งค่าเดียวกับ การใช้งาน bot
หรือก็คือไฟล์ bot_settings.php ดังนี้
<?php /// การตั้งค่าเกี่ยวกับ bot ใน LINE Messaging API define('LINE_MESSAGE_CHANNEL_ID','กรอก ค่า Channel ID'); define('LINE_MESSAGE_CHANNEL_SECRET','กรอกค่า Channel secret'); define('LINE_MESSAGE_ACCESS_TOKEN','กรอกค่า Channel access token'); ?>
จากนั้นสร้างไฟล์ push.php ด้วยโค้ดตัวอย่างดังนี้
ไฟล์ push.php
<?php // กรณีต้องการตรวจสอบการแจ้ง error ให้เปิด 3 บรรทัดล่างนี้ให้ทำงาน กรณีไม่ ให้ comment ปิดไป ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // include composer autoload require_once '../vendor/autoload.php'; // การตั้งเกี่ยวกับ bot require_once 'bot_settings.php'; // กรณีมีการเชื่อมต่อกับฐานข้อมูล //require_once("dbconnect.php"); ///////////// ส่วนของการเรียกใช้งาน class ผ่าน namespace use LINE\LINEBot; use LINE\LINEBot\HTTPClient; use LINE\LINEBot\HTTPClient\CurlHTTPClient; //use LINE\LINEBot\Event; //use LINE\LINEBot\Event\BaseEvent; //use LINE\LINEBot\Event\MessageEvent; use LINE\LINEBot\MessageBuilder; use LINE\LINEBot\MessageBuilder\TextMessageBuilder; use LINE\LINEBot\MessageBuilder\StickerMessageBuilder; use LINE\LINEBot\MessageBuilder\ImageMessageBuilder; use LINE\LINEBot\MessageBuilder\LocationMessageBuilder; use LINE\LINEBot\MessageBuilder\AudioMessageBuilder; use LINE\LINEBot\MessageBuilder\VideoMessageBuilder; use LINE\LINEBot\ImagemapActionBuilder; use LINE\LINEBot\ImagemapActionBuilder\AreaBuilder; use LINE\LINEBot\ImagemapActionBuilder\ImagemapMessageActionBuilder ; use LINE\LINEBot\ImagemapActionBuilder\ImagemapUriActionBuilder; use LINE\LINEBot\MessageBuilder\Imagemap\BaseSizeBuilder; use LINE\LINEBot\MessageBuilder\ImagemapMessageBuilder; use LINE\LINEBot\MessageBuilder\MultiMessageBuilder; use LINE\LINEBot\TemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\DatetimePickerTemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\PostbackTemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateMessageBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ButtonTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\CarouselTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\CarouselColumnTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ConfirmTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ImageCarouselTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ImageCarouselColumnTemplateBuilder; $httpClient = new CurlHTTPClient(LINE_MESSAGE_ACCESS_TOKEN); $bot = new LINEBot($httpClient, array('channelSecret' => LINE_MESSAGE_CHANNEL_SECRET)); // userId $userId = ' userId ของผู้ใช้ที่เราต้องการส่งข้อความ push ไปแสดง '; // ทดสอบส่ง push ข้อความอย่างง่าย $textPushMessage = 'สวัสดีครับ'; $messageData = new TextMessageBuilder($textPushMessage); $response = $bot->pushMessage($userId,$messageData); if ($response->isSucceeded()) { echo 'Succeeded!'; return; } // Failed echo $response->getHTTPStatus() . ' ' . $response->getRawBody(); ?>
การส่งข้อความ push เราก็แค่รันไฟล์นี้ ด้วยวิธีที่ต้องการ สมมติเรารันผ่านบราวเซอร์ธรรมดา
จะได้ผลลัพธ์ข้อความ push เป็นดังนี้
สำหรับกรณีส่งข้อความ push ไปหาผู้ใช้หลายๆ คน (ส่งข้อความเดียวกัน) เราก็แค่เปลี่ยนคำสั่งเป็น
multicast() แล้วเปลี่ยน $userId จากเดิมเป็น string userId เฉพาะคน ก็ให้กลายเป็น array ของ userId แทน
ดังโค้ดตัวอย่างด้านล่าง
ไฟล์ push_multicast.php
<?php // กรณีต้องการตรวจสอบการแจ้ง error ให้เปิด 3 บรรทัดล่างนี้ให้ทำงาน กรณีไม่ ให้ comment ปิดไป ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // include composer autoload require_once '../vendor/autoload.php'; // การตั้งเกี่ยวกับ bot require_once 'bot_settings.php'; // กรณีมีการเชื่อมต่อกับฐานข้อมูล //require_once("dbconnect.php"); ///////////// ส่วนของการเรียกใช้งาน class ผ่าน namespace use LINE\LINEBot; use LINE\LINEBot\HTTPClient; use LINE\LINEBot\HTTPClient\CurlHTTPClient; //use LINE\LINEBot\Event; //use LINE\LINEBot\Event\BaseEvent; //use LINE\LINEBot\Event\MessageEvent; use LINE\LINEBot\MessageBuilder; use LINE\LINEBot\MessageBuilder\TextMessageBuilder; use LINE\LINEBot\MessageBuilder\StickerMessageBuilder; use LINE\LINEBot\MessageBuilder\ImageMessageBuilder; use LINE\LINEBot\MessageBuilder\LocationMessageBuilder; use LINE\LINEBot\MessageBuilder\AudioMessageBuilder; use LINE\LINEBot\MessageBuilder\VideoMessageBuilder; use LINE\LINEBot\ImagemapActionBuilder; use LINE\LINEBot\ImagemapActionBuilder\AreaBuilder; use LINE\LINEBot\ImagemapActionBuilder\ImagemapMessageActionBuilder ; use LINE\LINEBot\ImagemapActionBuilder\ImagemapUriActionBuilder; use LINE\LINEBot\MessageBuilder\Imagemap\BaseSizeBuilder; use LINE\LINEBot\MessageBuilder\ImagemapMessageBuilder; use LINE\LINEBot\MessageBuilder\MultiMessageBuilder; use LINE\LINEBot\TemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\DatetimePickerTemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\MessageTemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\PostbackTemplateActionBuilder; use LINE\LINEBot\TemplateActionBuilder\UriTemplateActionBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateMessageBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ButtonTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\CarouselTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\CarouselColumnTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ConfirmTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ImageCarouselTemplateBuilder; use LINE\LINEBot\MessageBuilder\TemplateBuilder\ImageCarouselColumnTemplateBuilder; $httpClient = new CurlHTTPClient(LINE_MESSAGE_ACCESS_TOKEN); $bot = new LINEBot($httpClient, array('channelSecret' => LINE_MESSAGE_CHANNEL_SECRET)); // userId ของผู้ใช้ หลายๆ คน $userIds = array( ' userId ของผู้ใช้ที่เราต้องการส่งข้อความ push ไปแสดง 1 ', ' userId ของผู้ใช้ที่เราต้องการส่งข้อความ push ไปแสดง 2 ', ' userId ของผู้ใช้ที่เราต้องการส่งข้อความ push ไปแสดง 3 ', ); // ทดสอบส่ง push ข้อความอย่างง่าย $textPushMessage = 'สวัสดีครับ'; $messageData = new TextMessageBuilder($textPushMessage); $response = $bot->multicast($userIds,$messageData); if ($response->isSucceeded()) { echo 'Succeeded!'; return; } // Failed echo $response->getHTTPStatus() . ' ' . $response->getRawBody(); ?>