การใช้งาน LINE Messaging API ส่ง Push Message ถึงผู้ใช้ LINE ตอนที่ 5

เขียนเมื่อ 6 ปีก่อน โดย Ninenik Narkdee
line line messaging api line bot push notification

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ line line messaging api line bot push notification

ดูแล้ว 23,861 ครั้ง


เนื้อหานี้เป็นตอนที่ 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 
 
สามารถส่งไปให้ผู้ใช้คนเดียวครั้งเดียว หรือส่งไปหาผู้ใช้พร้อมกันหลายๆ คนในครั้งเดียวก็ได้ โดยค่าที่จำเป็นต้องใช้
ก็คือ 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();
?>
 


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ



อ่านต่อที่บทความ









เนื้อหาที่เกี่ยวข้อง






เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ

ยังไม่เป็นสมาชิก

สมาชิกล็อกอิน



( หรือ เข้าใช้งานผ่าน Social Login )




URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ