ส่ง Notification ผ่าน Line Notify ด้วย PHP
วันนี้จะมาแนะนำการส่ง Notification ผ่าน Line Notify ด้วยภาษา PHP กันครับ
โดย Line Notify นั้นมีความสามารถดังนี้
- ส่ง Notification มายังตัวเราเอง
- ส่ง Notification ไปยัง Line Group ที่เราอยู่ (เราต้องเพิ่ม Line Notify เข้ามาใน Line Group นั้นด้วย)
- ส่ง ข้อความ Text, รูปภาพ และ Sticker ได้
Add Line Notify เป็นเพื่อนเราก่อน
ก่อนอื่นเราต้องแอด Line Notify มาเป็นเพื่อนเราก่อน โดยค้นหาคำว่า Line Notify แล้วแอดเป็นเพื่อนดังภาพ
สร้าง Token สำหรับการ Notify
- ให้เรา Login เข้าในเวป https://notify-bot.line.me
- เมื่อ Login เสร็จเรียบร้อย ให้เข้า https://notify-bot.line.me/my/
- เลื่อนลงมาด้านล่างคลิกที่ Generate Token
คลิก Generate token |
- ให้เราตั้งชื่อ Notify (ชื่อนี้จะไปแสดงตอนส่งข้อความ)
เลือกตัวเราเองหรือ Line Group ที่ต้องการ |
1-on-1 chat with LINE Notify คือจะส่งข้อความมาหาตัวเราเอง
นอกนั้นจะเป็น List ของ Line Group ที่เราอยู่ หากต้องการให้ส่งเข้า Line Group เราต้อง Invite Line Notify เข้าไปใน Line Group นั้นด้วย
- คลิก Generate token เราก็จะได้ Token เอาไว้ในการส่ง Notify ให้เราเซฟไว้ให้ดี เพราะเราจะเห็น Token อันนี้เพียงครั้งเดียว
Token จะแสดงใน Popup นี้เพียงครั้งเดียวเท่านั้น |
ส่ง Notification ด้วย PHP
ในที่นี้เราจะใช้ PHP ในการส่ง Notification กันนะครับ หากต้องการส่งด้วยภาษาอื่นสามารถดู API ได้ที่เอกสารนี้ https://notify-bot.line.me/doc/en/
โดยผมได้สร้าง PHP Library ง่ายๆ สำหรับที่ใช้ในการส่ง Line Notify ไว้ที่ https://github.com/kittinan/php-line-notify โดยมี Requirement ดังนี้
- PHP 5.5+
เริ่มกันเลย
- โหลด Library ผ่าน composer
composer require kittinan/php-line-notify
- ทดสอบส่ง Text Message ตาม Code ด้านล่าง
- ข้อความก็จะถูกส่งไปยังตัวเราหรือ Line Group ที่เรา Generate Token มา
ปล. API Line Notify มี Rate Limit อยู่นะครับ โดย Rate Limit จะอยู่ที่ 1,000 ต่อชั่วโมง
ReplyDeleteคือ 1. token ใช่ได้ 1000 ชั่วโมง เหรอครับ
หรือว่า ยังไงครับ รบกวน ช่วยอธิบาย ผมหน่อยครับ ขอบคุณครับ
รู้สึกมันจะอัพเดท Document ใหม่แล้วครับ โดยน่าจะดู Rate Limit ได้จาก Response Header ครับ
Deletehttps://notify-bot.line.me/doc/en/
เลื่อนลงมาด้านล่างสุด
ขึ้น error อ่ะครับ
ReplyDeleteWarning: require_once(./vendor/autoload.php): failed to open stream: No such file or directory in C:\AppServ\www\linebot\linebot.php on line 3
Fatal error: require_once(): Failed opening required './vendor/autoload.php' (include_path='.;C:\php\pear') in C:\AppServ\www\linebot\linebot.php on line 3
ลง composer https://getcomposer.org/download/
Deleteแล้ว
composer install ครับ เพื่อลง Dependency ที่ตัว Library ใช้ครับ
Warning: require_once(./vendor/autoload.php): failed to open stream: No such file or directory in C:\AppServ\www\linebot\linebot.php on line 3
ReplyDeleteFatal error: require_once(): Failed opening required './vendor/autoload.php' (include_path='.;C:\php\pear') in C:\AppServ\www\linebot\linebot.php on line 3
ติด error ครับ อ่านแล้วยังไม่ค่อยเข้าใจเท่าไหร่(มือใหม่) ขอคำแนะนำหน่อยครับ ขอบคุณครับ
ลองศึกษาเกี่ยวกับ PHP composer ดูครับ ใช้ในการจัดการ Dependency สำหรับภาษา PHP ครับ
Deletehttps://getcomposer.org/
ขอสอบถามเพิ่มนะคะ ตามตัวอย่าง เห็นมีส่งหาตัวเอง กับ Line Group หากเราจะเขียนให้ส่งหาคนอื่นด้วยได้หรือเปล่าคะ พอดีกำลังหาวิธีให้ application ที่เขียน ส่ง notify ไปยัง line ของ user ที่ใช้ app แต่ละคนน่ะคะ
ReplyDeleteถ้าเป็น Line Notify ไม่ได้ครับ เพราะมันต้องใช้ Token ที่ต้องเข้าไป Generate เองของแต่ละคน
Deleteต้องไปใช้ Line@ Bot แทน ถ้าหาก User ไหนเป็นเพื่อนกับ Bot เรา เราสามารถส่งข้อความเฉพาะคนได้ครับ แต่มันมี Limit คือใช้ได้แค่ 50 คน
ขอบคุณมากนะคะ
Deleteอยากให้มัน save รูปในห้องสนทนา และข้อความจะทำได้ไหมครับ
ReplyDeleteLine Notify ทำไม่ได้ครับ ต้องไปใช้ Line@ Bot แทนครับ https://developers.line.me/en/docs/messaging-api/overview/
Deleteแล้วเราจะจัดรูปแบบข้อความที่ส่งมายังไงครับ ให้ขึ้นบรรทัดใหม่ เช่น
ReplyDeleteหัวข้อ1:ข้อความ1
หัวข้อ2:ข้อความ2
...
ใช้ \n ครับ ตัวอย่าง
Delete$text = "\nหัวข้อ1:ข้อความ1\nหัวข้อ2:ข้อความ2";
ได้แล้วครับ ขอบคุณครับ ตอบไวมากเลย
Deleteยินดีครับ ลองศึกษาเรื่อง String ของ PHP เพิ่มเติมดูครับ
Deletehttp://php.net/manual/en/language.types.string.php
สอบถามนิดหนึ่งนะค่ะพี่ ถ้าเรา ทางเรามีการวิ่งผ่านเน็ตผ่าน poxy เราต้องต้องค่าอย่างไรหรือค่ะ
ReplyDeleteโอ้วว อันนี้น่าจะต้องแก้ Library นิดนึงครับ
Deleteตัว Library ใช้ HTTP Client ของ Guzzle PHP ครับ ลองดูอันนี้ครับ ในการ set proxy
http://docs.guzzlephp.org/en/stable/request-options.html#proxy
ถ้าแก้แล้วรบกวนช่วยส่ง Pull Request มาให้ด้วยก็ดีครับ 555+ หรือไม่อย่างนั้นรอผมว่างๆแก้ Libray ให้มัน Support Proxy ให้ครับ
สอบถามหน่อยครับผม เจ้าตัวนนี้สามารถรันผ่าน xampp ได้หรือป่าวครับผม หรือจำเป็นต้องรันผ่าน Appserv อะครับ พอรันด้วย xampp เเล้วติดปัญหา err ตัสนี้ครับผม [พอดีมือใหม่ครับเเก้ไม่ได้เลย]
ReplyDeleteWarning: require(D:\xampp\htdocs\line-send\tests/../vendor/autoload.php): failed to open stream: No such file or directory in D:\xampp\htdocs\line-send\tests\LineNotifyTest.php on line 3
Fatal error: require(): Failed opening required 'D:\xampp\htdocs\line-send\tests/../vendor/autoload.php' (include_path='D:\xampp\php\PEAR') in D:\xampp\htdocs\line-send\tests\LineNotifyTest.php on line 3
พอจะรู้ไหมครับว่าการจัดรูปแบบขึ้นบรรทัดใหม่ของ .net ใช้อะไร ลองใส่ \n แล้วไม่ได้ผลครับ ขอบคุณครับ
ReplyDeleteมันน่าจะใช้ \n เหมือนกันนะครับ ลองใช้เป็น "\n" double quote ยังครับ
Deleteใส่สีตัวอักษรได้รึเปล่าครับ
ReplyDeleteไม่ได้ครับ
Deleteขอวิธีการดึงข้อมูลจาก database ส่งเข้าไลน์หน่อยครับ
ReplyDeleteก็เหมือนคิวรี่ทั่วไปนั่นแหละครับ ได้ข้อมูลมาแล้วก็มาใส่ใน message
Delete$message = $s_login['login_name'].' Login เมื่อวันที่ '.$s_login('datetime');
$this->xxxxx_m->line_notify($token,$message);
ถ้า token ผิดสามารถตรวจสอบได้ยังไงหรอครับ
ReplyDeleteผมใช้ Chome
ReplyDeleteขึ้น ERROR แบบนี้ ครับ
หน้านี้ใช้ไม่ได้localhost ไม่สามารถดำเนินการกับคำขอนี้ในขณะนี้
HTTP ERROR 500
ผมต้องแก้ไขยังไง ครับ
เดาว่าน่าจะมี error เกิดขึ้นครับ
Deleteรัน composer require kittinan/php-line-notify แล้ว
ReplyDeleteผมใช้ require_once '../../php/vendor/autoload.php';
ลองรันโค้ดไม่พบ class ตาม error นี้ครับ
Fatal error: Class 'KS\Line\LineNotify' not found
จะต้องแก้ไขยังไงครับ
ลองตรวจสอบเบื้องต้นว่า path '../../php/vendor/autoload.php' ถูกรึเปล่าครับ เพราะ folder vendor มันน่าจะอยู่ที่ root path ของ folder project ครับ
Deleteส่งข้อความ tag ชื่อเพื่อนในกลุ่มได้มั้ยครับ
ReplyDeleteไม่ได้ครับ
Deleteอยากสอบถามแก้ไขจาก http -> https ยังไงเนื่องจากไลน์มีการupdate
ReplyDelete