ส่งแจ้งเตือน 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 ยังอนุญาติให้เราส่งรูปภาพไปพร้อมข้อความได้ด้วย ประเภทรูปภาพที่รองรับเป็น 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 ไม่สำเร็จ
ส่ง Sticker
สุดท้ายเราสามารถส่ง Sticker ไปพร้อมกับข้อความได้ ตามตัวอย่างดังนี้
Line::sticker(1, 138)
->send('ข้อความและสติกเกอร์');
โดยพารามิเตอร์ที่เราต้องส่งไปคือ Sticker Package ID และ Sticker ID เราสามารถดู Sticker ที่เราสามารถส่งได้ตาม Document ของ Line Notify
ส่ง 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