มาเขียน LINE BOT ด้วย PHP กัน EP.2

Aeknarin Sirisub
LINE Developers Thailand

--

สวัสดีทุกท่านที่หลงเข้ามาอ่าน Blog ของผมนะครับ ห่างหายไปนานถึง 3 เดือนที่ไม่ได้มาเขียน Blog วันนี้มาดูกันว่าผมจะพาทำไรกันต่อ ถ้าพร้อมแล้วไปกันเลย!!!!

เผื่อใครที่ยังไม่ได้อ่าน EP.1 สามารถคลิ๊กไปอ่านได้จากตรงนี้ครับ

วันนี้ผมจะพาทุกท่านไปดึงข้อมูล Profile ของ LINE User ที่เข้ามาใน BOT ของเรากันครับ

PART 1 — แนะนำ API ที่ใช้ในการดึงข้อมูล Profile

สำหรับ API ที่ใช้ในการดึงข้อมูล Profile มานั้นเราจะใช้ API เส้นนี้ครับ

แต่อ๊ะ API เส้นนี้นั้นจะใช้ในการดึงข้อมูลจาก User ที่ Add Friend หรือ เข้ามา Follow BOT ของเราเท่านั้นนะครับ จะไม่สามารถดึงข้อมูล Profile ของ User ที่อยู่ใน Group Chat หรือ Chat Room ได้ครับ

ส่วนข้อมูล Profile ที่เราได้มานั้นจะมีดังนี้

displayName : ก็จะเป็นข้อมูลชื่อของ LINE User นั่นเอง
userId : เป็นข้อมูล Unique Id ของ LINE User
pictureUrl : อันนี้เรียกง่ายๆ ก็คือ Display Image ของ LINE User นั่นเอง
statusMessage : ส่วนนี้เป็นข้อมูล Status ของ LINE User

PART 2 — มาเริ่มเขียน Code กัน

การเขียน Code ด้วย PHP ในการดึงข้อมูล Profile นั้นเราจะใช่ CURL ในการเชื่อมต่อไปยัง API ของ LINE ครับโดยที่เราจะเขียนในลักษณะนี้

ขึ้นแรกผมจะเริ่มจากสร้าง function ก่อนครับโดยใน function นี้เราจะใช้ CURL ในการเชื่อมต่อเพื่อดึงข้อมูล LINE Profile มานะครับ

function getLINEProfile($datas)
{
$datasReturn = [];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $datas['url'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer ".$datas['token'],
"cache-control: no-cache"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl); if($err){
$datasReturn['result'] = 'E';
$datasReturn['message'] = $err;
}else{
if($response == "{}"){
$datasReturn['result'] = 'S';
$datasReturn['message'] = 'Success';
}else{
$datasReturn['result'] = 'E';
$datasReturn['message'] = $response;
}
}
return $datasReturn;
}

ใน function นี้จะเพิ่มส่วนของ return ข้อมูลกลับไปด้วยนะครับว่า สำเร็จหรือไม่สำเร็จถ้าไม่สำเร็จมี error ว่าอย่างไรตอบกลับมาจาก LINE เพื่อที่เราจะได้ทำการเก็บ Log ได้ครับ

เมื่อเราทำการสร้าง function สำหรับดึงข้อมูล LINE Profile เสร็จแล้วก็หวานหมูแล้วครับ แค่เพียงเรียกใช้แบบนี้

$userId = "U1a81dc36b7c95042c6ee4718cd5a7c18";$LINEDatas['url'] = "https://api.line.me/v2/bot/profile/".$userId;
$LINEDatas['token'] = "<YOUR-CHANNEL-ACCESS-TOKEN>";
$results = getLINEProfile($LINEDatas);file_put_contents('log-profile.txt', $results['message'] . PHP_EOL, FILE_APPEND);

$userId : อันนี้คือ userId ที่เราได้มาจาก LINE นะครับไม่ว่าจะจากตอนที่ user กด follow เข้ามาหรือ พิมพ์ข้อความเข้ามาเราสามารถทำการดัก userId ได้
$LINEDatas[‘url’] : ส่วนนี้เราจะกำหนด url สำหรัย connect ไปหา LINE เอาไว้ครับ
$LINEDatas[‘token’] : อันนี้ให้เราทำการใส่ token ที่ได้มาจาก LINE Console ลงไป

ในส่วน Code ตรงนี้ผมได้ทำการสั่งให้ระบบเขียนไฟล์ Log ลงมาด้วยนะครับด้วยใช้ คำสั่งนี้

file_put_contents('log-profile.txt', $results['message'] . PHP_EOL, FILE_APPEND);

ซึ่งผมได้ทำการให้เขียนข้อมูลที่ได้รับมาจาก LINE ถ้าหากว่าเราได้ข้อมูล LINE Profile มา หรือถ้าเกิด error ขึ้นก็ให้ทำการ Log ด้วยว่าเกิด error อะไรขึ้น

หลังจากนั้นจะช้าอยู่ไย ไปดูผลลัพธ์เลยครับผมมม (ดูได้ที่ไฟล์ log-profile.txt จะได้มาหลังจากที่เราทำการ run คำสั่ง php แล้วครับ)

{"userId":"U1a81dc36b7c95042c6ee4718cd5a7c18","displayName":"SilverBlack\uD83D\uDE48","pictureUrl":"https://profile.line-scdn.net/0hXlWy1fXcB0NqAC02WEp4FFZFCS4dLgELEmQfcUoCXidDMEISBGMcIEcJXiMUM0ERAzNNJUsEW3EQ"}

ถ้าได้ผลแบบนี้ก็เอาไปเลยครับ 3 เฉียบ

และนี่คือ code ทั้งหมดของวันนี้

เป็นอย่างไรกันบ้างครับกับบทความวันนี้ หวังว่าทุกท่านจะสนุกไปกับการทำ LINE Chatbot กันนะครับ ุถ้าหากว่าอยากให้ผมมาสอนเขียนหรือช่วยในส่วนไหน สามารถ Comment มาได้เลยนะครับ

EP ต่อไปจะออกทุกวันอังคาร นะครับ แล้วเจอกันใหม่สัปดาห์หน้า บ๊ายบาย

ตอนนี้ LINE Developer เรามีแฟนเพจแล้วนะจ๊ะอย่าลืมไปกด LIKE กันด้วยนะ

https://www.facebook.com/LINEDEVTH

ส่วนใครที่ยังไม่ได้เข้าร่วมกลุ่มกับเรา คลิ๊กที่นี่ได้เลย

https://www.facebook.com/groups/LINEDEVTH

Resources

Developer console
https://developers.line.biz/en/

Messaging API Document
https://developers.line.biz/en/docs/messaging-api/

Messaging API Reference
https://developers.line.biz/en/reference/messaging-api/

--

--