จากบทความที่แล้วเรื่อง การแจ้งเตือนผ่าน Line Notify ที่เราได้ทิ้งท้ายไว้เรื่อง Service ให้เรียกใช้ผ่าน PHP บน server ของแผนกงาน วันนี้จะมาพูดถึง Service ที่มีให้บริการแล้วการใช้งานเบื้องต้น แต่ก่อนที่จะถึงขั้นตอนนั้น ขอพูดถึงสิ่งที่จำเป็นต้องมีก่อน ดังนี้
- โปรแกรมที่ต้องการส่งข้อความไปยัง Line Notify จะต้องมี Line Notify Token ก่อน (กรณีต้องการเตือนในกลุ่มของแผนกงานใช้ Token ที่ผมขอไว้แล้วได้เลย)
- รูปแบบของการส่งจะส่งผ่านค่าต่าง ๆ มากับตัวแปรดังนี้
- ตัวแปร $title = “ชื่อของการแจ้งเตือน”;
- ตัวแปร $content = “เนื้อหาของการแจ้งเตือน”;
- ตัวแปร $linetoken = ‘Line Notify Token’;
- ตัวแปร $imageThumbnail = ‘URL ของภาพย่อ หรือ Thumbnail’;
- ตัวแปร $imageFullsize = ‘URL ของภาพเต็ม’;
- โดย ตัวแปร $title, $content และ ตัวแปร $linetoken จำเป็นต้องมีค่าไม่สามารถว่างได้ แต่ ตัวแปร $imageThumbnail และ ตัวแปร $imageFullsize จะไม่ส่งไปก็ได้ หากไม่ต้องการส่งรุปในการแจ้งเตือน
- จากข้อ 3 ตัวแปร $title และ ตัวแปร $content จะถูกเข้ารหัสก่อน เพื่อความปลอดภัยในการส่ง ซึ่งจะกลายเป็นตัวแปร $ms_title และ $ms_content ตามลำดับ
- URL ที่จะทำการส่งค่าพารามิเตอร์หรือตัวแปรทั้งหมด โดยมีรูปแบบดังนี้ http://URL/Path/file.php?linetoken=$linetoken&title=$ms_title&content=$ms_content&imageThumbnail=$imageThumbnail&imageFullsize=$imageFullsize
หลัก ๆ ก็มีประมาณท่านี้ครับ มาดู Code เลยดีกว่าครับ
เริ่มจาก testlineapi.php
<?php
/***********************************************************************************************************
คำแนะนำในการใช้งาน
สำหรับผู้ที่ต้องการใช้งาน SAC Line Notify API สามารถทำได้ง่ายๆ โดยใช้ตัวอย่างจาก Code ด้านบน
สิ่งที่จำเป็นสำหรับการใช้งานคือ ตัวแปร 3 ตัวได้แก่
$title, $content และ $linetoken
โดย
$title คือ หัวเรื่องของการเตือน
$content คือ รายละเอียดของการเตือน
$linetoken คือ Token ของ Line Notify';
วิธีการขอ Token อ่านได้จาก http://clpark.rmuti.ac.th/suthep/ideas/การแจ้งเตือนผ่าน-line-notify
**************************************************************************************************************/
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
//กำหนดค่าในตัวแปรที่ต้องการส่ง
$title = "ทดสอบส่งรูป";
$content = "ทดสอบกการส่งรุป จาก Line Notify";
$linetoken = 'Line Notify Token';
$imageThumbnail = 'http://URL/path/HelloTn.png';
$imageFullsize = 'http://URL/path/Hello.png';
$ms_title = base64_encode($title);
$ms_content = base64_encode($content);
// สร้าง cURL resource ใหม่
$ch = curl_init();
// ตั้งค่า URL และตัวแปรที่ต้องการส่งทั้ง 3 ตัว
curl_setopt($ch, CURLOPT_URL, "http://URL/path/lineapi.php?linetoken=$linetoken&title=$ms_title&content=$ms_content&imageThumbnail=$imageThumbnail&imageFullsize=$imageFullsize");
// จับค่า URL จากที่ตั้งค่า และส่งผ่านไปยัง browser
curl_exec($ch);
// ปิดการทำงานของ cURL และปล่อยทรัพยากรของระบบออก
curl_close($ch);
การใช้งาน เพียงแต่กำหนดค่าในตัวแปร หรือจะเขียนให้ PHP ประมวลผลแล้วเอาค่ามาใส่ในตัวแปรก็ตามใจครับ โดยที่ต้องมีแน่ ๆ 3 ตัวคือ ตัวแปร $title, $content และ ตัวแปร $linetoken ที่ได้บอกไปแล้วในข้อ 3 ด้านบน ส่วนสองตัวที่เหลือ คือ $imageThumbnail และ ตัวแปร $imageFullsize จะมีหรือไม่ก็ได้ แต่ถ้ามีก็ต้องมีทั้ง 2 ตัวนะครับ
ต่อกันที่ lineapi.php โดยไฟล์ lineal.php จะทำหน้าที่ในการติดต่อกับ Line Notify API เพื่อทำการส่งข้อความนั่นเอง
<?php
// รับค่า message ที่เข้ารหัสจากไฟล์ที่ส่งค่ามาเช่น testlineapi.php
$title = isset($_REQUEST['title']) ? $_REQUEST['title'] : '';
$content = isset($_REQUEST['content']) ? $_REQUEST['content'] : '';
$linetoken = isset($_REQUEST['linetoken']) ? $_REQUEST['linetoken'] : '';
if($title == '' || $content == ''|| $linetoken == ''){
die();
}else{
// ถอดรหัสตัวแปรที่รับมาจากไฟล์ที่ส่งค่ามา
$ms_title = base64_decode($title);
$ms_content = base64_decode($content);
// ข้อความที่ต้องการแสดง
$message = "$ms_title $ms_content";
// Line API เพื่อเรียกใช้ Notify
$chOne = curl_init();
curl_setopt( $chOne, CURLOPT_URL, "https://notify-api.line.me/api/notify");
// SSL USE
curl_setopt( $chOne, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt( $chOne, CURLOPT_SSL_VERIFYPEER, 0);
//POST
curl_setopt( $chOne, CURLOPT_POST, 1);
// Message
curl_setopt( $chOne, CURLOPT_POSTFIELDS, $message);
if($imageThumbnail == '' || $imageFullsize == ''){
curl_setopt( $chOne, CURLOPT_POSTFIELDS, "message=".$message);
}else{
//ถ้าต้องการใส่รุป ให้ใส่ 2 parameter imageThumbnail และimageFullsize
curl_setopt( $chOne, CURLOPT_POSTFIELDS, "message=$message&imageThumbnail=$imageThumbnail&imageFullsize=$imageFullsize");
}
// follow redirects
curl_setopt( $chOne, CURLOPT_FOLLOWLOCATION, 1);
//ADD header array
$headers = array( 'Content-type: application/x-www-form-urlencoded', 'Authorization: Bearer '.$linetoken, );
curl_setopt($chOne, CURLOPT_HTTPHEADER, $headers);
//RETURN
curl_setopt( $chOne, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec( $chOne );
//Check error
if(curl_error($chOne)) { echo 'error:' . curl_error($chOne); }
else { $result_ = json_decode($result, true);
echo "status : ".$result_['status']; echo "message : ". $result_['message']; }
//Close connect
curl_close( $chOne );
}
?>
ในส่วนของไฟล์ PHP ผมใส่ comment ไว้พอสมควร คิดว่าน่าจะแกะกันได้ไม่ยาก ขอไม่อธิบายนะครับ ที่นี้เราก็เพียวแต่เอาไฟล์ lineapi.php ไปวางบนเครื่องเซิฟเวอร์ที่รองรับ PHP แล้วก็เขียน Application อื่น ๆ ไปเรียกไฟล์ lineapi.php และส่งค่าพารามิเตอร์ไปให้ครบเท่านั้นเองครับ
ปล. สำหรับแผนกงานศูนย์การเรียนด้วยตนเองที่ต้องการใช้บริการส่งการแจ้งเตือนทาง Line แจ้งผมได้เลยนะครับ Service เปิดไว้ให้แล้ว
ที่มา https://notify-bot.line.me/th/