Line Message API

ไปสมัคร Line Developer ก่อนเลย

หลังจากสมัครแล้ว เราก็มาเริ่มเขียน BOT ง่ายๆกัน

โดยเริ่มแรก ไปทำการ Regis IP address เพื่อทำ White List ใน Line Developer ก่อนเลย หลังจากนั้นเราก็มาเริ่มเขียน PHP กัน ขอไม่ capture รูป ขี้เกียจนะ

$post = file_get_contents(‘php://input’);
$urlReply = ‘https://api.line.me/v2/bot/message/reply';
$token = ‘อันนี้ของใครของมัน’;

เสร็จแล้วก็มาเขียน Function ไว้สำหรับ post data ไปยัง Line Message API กัน

function postMessage($token,$packet,$urlReply){
 $dataEncode = json_encode($packet);
 $headersOption = array(‘Content-Type: application/json’,’Authorization: Bearer ‘.$token);
 $ch = curl_init($urlReply);
 curl_setopt($ch,CURLOPT_CUSTOMREQUEST,’POST’);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
 curl_setopt($ch,CURLOPT_POSTFIELDS,$dataEncode);
 curl_setopt($ch,CURLOPT_HTTPHEADER,$headersOption);
 curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
 $result = curl_exec($ch);
 curl_close($ch);
}

หลังจากนั้นก็มาเขียนส่วนที่รอรับข้อความจาก ผู้ใช้งานในระหว่างที่พิมพ์คุยกับ BOT กันครับ โครงสร้างของ JSON ที่ผู้ใช้งานพิมพ์ส่งไปยัง Line จะเป็นประมาณนี้

{“events”:[{“type”:”message”,”replyToken”:”ไม่บอก”,”source”:{“userId”:”ไม่บอก”,”type”:”user”},”timestamp”:1477132643802,”message”:{“type”:”text”,”id”:”5094630491076",”text”:”ว่าไงท่าน”}}]}

ดังนั้นเราก็ต้องแปลง JSON แล้วทำการตรวจว่ามันเป็น event ประเภทอะไร มี type เป็นอะไร location, text, sticker, video, audio หรือ image เราจะได้แยกการทำงานให้ BOT เราถูกว่าจะให้ Response อะไรกลับไปบ้าง

$res = json_decode($post, true);
if(isset($res[‘events’]) && !is_null($res[‘events’])){
 foreach($res[‘events’] as $item){
 if($item[‘type’] == ‘message’){
 switch($item[‘message’][‘type’]){
 case ‘text’:

break;
case ‘image’:

break;
 case ‘video’:
 
 break;
 case ‘audio’:
 
 break;
 case ‘location’:

break;
 case ‘sticker’:

 break;

}

เรามาลองส่ง sticker กลับไปหาผู้ใช้งานกัน

ดู sticker list ได้ที่นี่ https://devdocs.line.me/en/files/sticker_list.pdf

ลองเขียน function สร้าง json จาก array เพื่อส่ง sticker กลับดูแบบง่ายๆ

function getSticker($replyToken){
 $sticker = array(
 ‘type’ => ‘sticker’,
 ‘packageId’ => ‘4’,
 ‘stickerId’ => ‘300’
 );
 $packet = array(
 ‘replyToken’ => $replyToken,
 ‘messages’ => array($sticker),
 );
 return $packet;
}

แล้วก็ลองนำไปเรียกใช้งานดูเช่น

$packet = getSticker($item[‘replyToken’]);
 postMessage($token,$packet,$urlReply);

เอกสาร API ก็ค่อนข้างครบ สรุปลองเล่นดูแล้ว ประยุตก์ใช้ได้อีกหลายเลย เช่นกด share location จาก user แล้วส่งมายัง server เพื่อค้นหาสนามฟุตบอลที่อยู่ใกล้ๆ แล้วลิสออกมาบน Line ในรูปแบบ Carousel นำไปทำ action อื่นๆได้อีก สรุปว่าดีเอาไปเลยสิบกระโหลก

ในอนาคตจะเสียเงินค่าบริการหรือเปล่า อันนี้ไม่รู้นะ อ่านภาษาอังกฤษไม่ออกด้วย

ใครอยากเล่นต่อก็ไปอ่านเอกสาร api ได้ที่นี่https://devdocs.line.me/en/?shell#messaging-api

สามารถแอดมาลองเล่นได้ที่นี่เลย @xkc6901a

หรือ ​scan qr ตามเน้

วิธีเล่นก็ลองพิมพ์ว่า /help ดูครับ

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.