LINE Official Account: ตั้งค่า Webhook (Messaging API)
ใช้งาน LINE Messaging API webhook บนโฮสติ้งได้ โดยมีเงื่อนไขดังนี้
- URL ต้องเป็น HTTPS และมี SSL ที่ถูกต้อง (คู่มือ SSL) เช่น
https://DOMAIN/line/webhook.php - รับคำขอแบบ POST และต้อง ตอบกลับ HTTP 200 อย่างรวดเร็ว
- ตรวจสอบลายเซ็น
x-line-signatureด้วย Channel Secret ทุกครั้ง
ตัวอย่าง PHP (public_html/line/webhook.php)
<?php
$channelSecret = 'YOUR_CHANNEL_SECRET'; // จาก LINE Developers Console
$body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_LINE_SIGNATURE'] ?? '';
$expected = base64_encode(hash_hmac('sha256', $body, $channelSecret, true));
if (!hash_equals($expected, $signature)) {
http_response_code(400); // ลายเซ็นไม่ถูกต้อง
exit;
}
// ตอบ 200 ให้ LINE ทันที
http_response_code(200);
echo 'OK';
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
// จากนั้นค่อยประมวลผลข้อความ
$data = json_decode($body, true);
foreach ($data['events'] ?? [] as $event) {
// เช่น ตอบกลับด้วย Reply API, บันทึกลงฐานข้อมูล ฯลฯ
}
ตั้งค่าใน LINE Developers Console
- Messaging API › Webhook URL ใส่ URL ข้างต้น
- กด Verify — ต้องขึ้น Success
- เปิด Use webhook
⚠️ กด Verify แล้วไม่ผ่าน? ตรวจว่า URL เป็น HTTPS และ SSL ถูกต้อง, ไฟล์ตอบกลับ 200, Channel Secret ถูกต้อง และไม่มีการ redirect (เช่น http → https หรือเติม / ท้าย URL)
💡 ถ้าใช้ Node.js / Python ก็ทำได้เช่นกัน โดยรันแอปบน subdomain ผ่าน Nginx Unit (Node.js, Python) และใช้ SDK ของ LINE ซึ่งมีฟังก์ชันตรวจลายเซ็นให้