การเรียกใช้ Line Notify API ของแผนกงาน

จากบทความที่แล้วเรื่อง การแจ้งเตือนผ่าน Line Notify ที่เราได้ทิ้งท้ายไว้เรื่อง  Service ให้เรียกใช้ผ่าน PHP บน server ของแผนกงาน วันนี้จะมาพูดถึง Service ที่มีให้บริการแล้วการใช้งานเบื้องต้น แต่ก่อนที่จะถึงขั้นตอนนั้น ขอพูดถึงสิ่งที่จำเป็นต้องมีก่อน ดังนี้

  1. โปรแกรมที่ต้องการส่งข้อความไปยัง Line Notify จะต้องมี Line Notify Token ก่อน (กรณีต้องการเตือนในกลุ่มของแผนกงานใช้ Token ที่ผมขอไว้แล้วได้เลย)
  2. รูปแบบของการส่งจะส่งผ่านค่าต่าง ๆ มากับตัวแปรดังนี้
    1. ตัวแปร $title = “ชื่อของการแจ้งเตือน”;
    2. ตัวแปร $content = “เนื้อหาของการแจ้งเตือน”;
    3. ตัวแปร $linetoken = ‘Line Notify Token’;
    4. ตัวแปร $imageThumbnail = ‘URL ของภาพย่อ หรือ Thumbnail’;
    5. ตัวแปร $imageFullsize = ‘URL ของภาพเต็ม’;
  3. โดย ตัวแปร $title, $content และ ตัวแปร $linetoken จำเป็นต้องมีค่าไม่สามารถว่างได้ แต่ ตัวแปร $imageThumbnail และ ตัวแปร $imageFullsize จะไม่ส่งไปก็ได้ หากไม่ต้องการส่งรุปในการแจ้งเตือน
  4. จากข้อ 3 ตัวแปร $title และ ตัวแปร $content จะถูกเข้ารหัสก่อน  เพื่อความปลอดภัยในการส่ง ซึ่งจะกลายเป็นตัวแปร $ms_title  และ $ms_content ตามลำดับ
  5. 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/