ส่งแจ้งเตือน Line Notification ด้วย Laravel และ PHP

13 กุมภาพันธ์ 2564 เวลาอ่าน 7 นาที
ส่งแจ้งเตือน Line Notification ด้วย Laravel และ PHP

Line ได้มี API สำหรับให้นักพัฒนาสามารถส่ง notification ไปยัง group หรือ chat กับผู้ใช้ใน Line ได้โดยตรงอยู่แล้ว ในบทความนี้จะมานำเสนอ package ที่จะช่วยให้เราสามารถส่ง Line notification บน Laravel หรือ PHP ได้ด้วย code เพียงไม่กี่บรรทัดเท่านั้นเอง

Line Notify API

Line Notify API รองรับการส่งข้อความทั้งหมด 3 แบบ ได้แก่

  • ส่งข้อความ
  • ส่งข้อความและรูปภาพ
  • ส่งข้อความและ Sticker

ตั้งค่า Line Notification ใน Laravel

เริ่มจาก require composer package เพื่อใช้ในการเชื่อมต่อกับ Line Notify API

composer require phattarachai/line-notify

ทำการ publish ไฟล์ config

php artisan vendor:publish --provider="Phattarachai\LineNotify\LineNotifyServiceProvider

เมื่อเรา run คำสั่ง artisan ด้านบน เราจะได้ไฟล์ config อยู่ที่ config/line-notify.php ดังนี้

<?php
return [
    'access_token' => env('LINE_ACCESS_TOKEN', null),
];

เราสามารถไปยัง Line Notify API เพื่อทำการเพิ่ม service และขอ access token จาก LINE เพื่อนำมาระบุในไฟล์ config นี้ หรือเพิ่มไว้ที่ตัวแปร LINE_ACCESS_TOKEN ในไฟล์ .env ก็ได้เช่นกัน

เรียกใช้ Line Notify API

ส่งข้อความ

เมื่อเราทำการระบุ access token ของเราเรียบร้อยแล้ว เราสามารถส่งข้อความไปยัง Line ด้วย code ผ่าน Facade ของ package ตามตัวอย่างนี้

use Phattarachai\LineNotify\Facade\Line;

// จากใน Controller หรือที่อื่น ๆ
Line::send('ทดสอบส่งข้อความ');

ตัวอย่างข้อความที่ส่งโดย Line Notify API

ตัวอย่างข้อความที่ส่งโดย Line Notify API

ส่งข้อความพร้อมรูปภาพ

นอกจากส่งข้อความแล้ว Line Notify API ยังอนุญาติให้เราส่งรูปภาพไปพร้อมข้อความได้ด้วย ประเภทรูปภาพที่รองรับเป็น jpg ขนาดไม่เกิน 2048x2048

โดยวิธีการเรียกใช้งานเป็นแบบ Fluent API ตามตัวอย่างดังนี้

Line::imageUrl('https://github.com/phattarachai/line-notify/raw/master/art/line-notify-banner.jpg')
    ->send('ส่งข้อความพร้อมรูปภาพ');

หากรูปภาพเรามีขนาดใหญ่เราสามารถส่ง thumbnail อีกรูปได้เพื่อลด bandwidth ของผู้ใช้กรณีที่ยังไม่ได้กดเปิดดูรูป

Line::thumbnailUrl('https://raw.githubusercontent.com/phattarachai/line-notify/master/art/line-notify-banner-thumbnail.jpg')
    ->imageUrl('https://raw.githubusercontent.com/phattarachai/line-notify/master/art/line-notify-banner.jpg')
    ->send('ข้อความพร้อมรูปภาพ');

โดยขนาด thumbnail ต้องมีขนาดไม่น้อยกว่า 240x240px

นอกจากการะบุ path รูปด้วย URL แล้ว Line Notify API ยังให้เรา upload รูปภาพจาก server เราขึ้นไปได้ด้วย

วิธีการ upload รูปภาพทำได้โดยการส่ง path ไฟล์จากเครื่องเรา ดังนี้

Line::imagePath('/path/to/your/image.jpg')
    ->send('message');

โดยเมธอด imagePath() สามารถใช้ร่วมกัน imageUrl() และ thumbnailUrl() ได้เช่นกัน โดย API จะเลือกใช้รูปภาพที่ upload ขึ้นไปก่อน แล้วจึงเลือกใช้ภาพจาก Url หาก upload ไม่สำเร็จ

ตัวอย่างการส่งข้อความพร้อมรูปภาพด้วย Line Notify API

ส่ง Sticker

สุดท้ายเราสามารถส่ง Sticker ไปพร้อมกับข้อความได้ ตามตัวอย่างดังนี้

Line::sticker(1, 138)
    ->send('ข้อความและสติกเกอร์');

โดยพารามิเตอร์ที่เราต้องส่งไปคือ Sticker Package ID และ Sticker ID เราสามารถดู Sticker ที่เราสามารถส่งได้ตาม Document ของ Line Notify

ตัวอย่างการส่งข้อความและสติกเกอร์ด้วย Line Notify API

ส่ง Line Notify ด้วย PHP

จากตัวอย่างด้านบนเป็นการเรียก API ผ่าน Facade ที่เขียนขึ้นไว้ให้เรียกได้ง่ายจากในโปรเจค Laravel แต่ถ้าเราเขียน code ผ่านทาง PHP เราก็สามารถเรียกใช้ pacakage นี้ได้เช่นเดียวกัน

วิธีการใช้ package นี้ผ่าน PHP คือเราสามารถ new คลาส Line และส่ง ACCESS_TOKEN เข้าไปใน constructor ของคลาสตามตัวอย่างนี้

use Phattarachai\LineNotify\Line;

$line = new Line('YOUR-API-TOKEN-HERE');
$line->send('message');

โดยการทำงานอื่น ๆ เหมือนกับตัวอย่างใน Laravel ด้านบนทั้งหมด

หากผู้ที่สนใจสามารถดูรายละเอียดเพิ่มเติมของ package ได้ที่ GitHub และศึกษา API รวมถึงข้อจำกัดในการใช้งานเพิ่มเติมได้ที่ Line Notify API Document

Phattarachai Chaimongkol

เกี่ยวกับ phattarachai.dev

ผมอ๊อฟนะครับ เป็นผู้ประกอบการอิสระ ที่ปรึกษาทางด้าน Web Application Development ให้แก่องค์กร ธุรกิจ SME และหน่วยงานราชการ
Web Developer ผู้มีใจรักใน Laravel เป็นพาร์ทเนอร์บริษัท Digital Agency ชั้นนำทางด้าน UX/UI เพื่อพัฒนาโปรเจคให้แก่ลูกค้า ผมช่วยสร้างเครื่องมือทางด้าน Web ที่มีคุณภาพให้ผู้ประกอบการดำเนินธุรกิจได้ง่ายขึ้นใช้งานได้จริง เน้นประสบการณ์ ความชำนาญ ผลงานคุ้มค่าเทียบเท่าจ้างงานกับบริษัทใหญ่ ๆ

ยามว่าง ๆ ชอบเล่นเกมส์บน Steam ครับ

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

PHP function แสดงค่าเงินบาทเป็นภาษาไทย
13 กุมภาพันธ์ 2564
PHP function แสดงค่าเงินบาทเป็นภาษาไทย
แสดง DatePicker ปี พ.ศ. เป็นภาษาไทย ด้วย FilamentPHP
13 กุมภาพันธ์ 2564
แสดง DatePicker ปี พ.ศ. เป็นภาษาไทย ด้วย FilamentPHP
วิธีการเช็ค Detect Browser ผู้ใช้จาก Laravel
13 กุมภาพันธ์ 2564
วิธีการเช็ค Detect Browser ผู้ใช้จาก Laravel