Posted in

เจาะลึก LINE OA / LINE API: มีข้อมูลไหมว่า Target ของเรา Active หรือ Engage มากที่สุดในช่วงเวลาไหนของวัน?

สำหรับธุรกิจที่ใช้งาน LINE Official Account (LINE OA) เป็นช่องทางหลักในการสื่อสารกับลูกค้า คำถามหนึ่งที่มักเกิดขึ้นเสมอคือ “เราจะรู้ได้อย่างไรว่ากลุ่มเป้าหมาย (Target) ของเรา Active หรือมีส่วนร่วม (Engage) กับ LINE OA มากที่สุดในช่วงเวลาไหนของวัน?” การทราบช่วงเวลาที่เหมาะสมที่สุดในการส่งข้อความบรอดแคสต์ (Broadcast) หรือแคมเปญการตลาด จะช่วยเพิ่มอัตราการเปิดอ่าน (Open Rate) และอัตราการคลิก (Click-through Rate) ได้อย่างมีนัยสำคัญ

บทความนี้จะพาไปเจาะลึกทั้งในมุมมองของการใช้งานฟีเจอร์พื้นฐานบน LINE OA Manager และการดึงข้อมูลเชิงลึกผ่าน LINE Messaging API เพื่อตอบคำถามนี้อย่างครบถ้วน

1. ข้อมูลเชิงลึก (Insight) บน LINE OA Manager บอกอะไรเราได้บ้าง?

เมื่อใช้งาน LINE Official Account Manager ที่ manager.line.biz ระบบจะมีฟีเจอร์ ข้อมูลเชิงลึก (Insight) ซึ่งเป็นเครื่องมือที่ช่วยให้ธุรกิจสามารถติดตามและประเมินผลกิจกรรมต่างๆ ได้อย่างละเอียด โดยสามารถดูข้อมูลย้อนหลังในระยะเวลา 7 วัน, 30 วัน หรือกำหนดเองได้ รวมถึงสามารถดาวน์โหลดเป็นไฟล์ CSV เพื่อนำไปวิเคราะห์เพิ่มเติม

ข้อมูลเชิงลึกแบ่งออกเป็นหลายหมวดหมู่ ดังนี้:

หมวดหมู่ข้อมูลเชิงลึกข้อมูลที่สามารถวิเคราะห์ได้
เพื่อน (Friends)จำนวนเพื่อนทั้งหมด, ทาร์เก็ตรีช (Target Reach), จำนวนบล็อค, ข้อมูลประชากรศาสตร์ เช่น เพศ, อายุ, พื้นที่, และรูปแบบการเพิ่มเพื่อน
โปรไฟล์ (Profile)จำนวนเพจวิว (Page Views) และจำนวนผู้ใช้แบบไม่นับซ้ำ (Unique Users)
ข้อความ (Messages)สถิติข้อความแยกตามประเภท เช่น บรอดแคสต์, ข้อความอัตโนมัติ, สเต็ปเมสเสจ, แชทแบบ Manual, Push API, และ Multicast API
บรอดแคสต์ (Broadcasts)จำนวนผู้ได้รับ, ผู้เปิดอ่าน, ผู้คลิกลิงก์, ผู้ดูวิดีโอจนจบ, อัตราการเปิดอ่าน, อัตราการคลิก, และอัตราการคอนเวอร์ชัน
แชท (Chats)จำนวน Active Chat, ข้อความที่ได้รับ, และข้อความที่ส่งออกไป
ไทม์ไลน์ (Timeline)อิมเพรสชัน, คลิก, และจำนวนผู้ติดตาม
คูปอง / บัตรสะสมแต้มจำนวนการเปิด, การใช้งาน, และอัตราการใช้

อย่างไรก็ตาม เมื่อพิจารณาถึง “ช่วงเวลาของวัน” ที่กลุ่มเป้าหมาย Active มากที่สุด ฟีเจอร์ Insight พื้นฐานของ LINE OA ยังไม่มีรายงานที่แสดงข้อมูลแบบรายชั่วโมง (Hourly Breakdown) ข้อมูลส่วนใหญ่จะถูกสรุปผลเป็น รายวัน (Daily) รายสัปดาห์ (Weekly) หรือรายเดือน (Monthly) เท่านั้น

ตัวอย่างเช่น ในหมวดหมู่แชท (Chat Insight) ระบบจะแสดงจำนวน Active Chat ที่เกิดขึ้นในแต่ละวัน แต่จะไม่สามารถบอกได้ว่าแชทเหล่านั้นเกิดขึ้นกระจุกตัวอยู่ในช่วงเช้า บ่าย หรือค่ำ

2. ข้อจำกัดของ LINE Messaging API ในการดึงข้อมูลรายชั่วโมง

สำหรับนักพัฒนาที่ต้องการใช้ LINE Messaging API เพื่อดึงข้อมูลสถิติเชิงลึก (Insight Endpoints) อาจคาดหวังว่าจะสามารถดึงข้อมูลแบบละเอียดเป็นรายชั่วโมงได้ แต่ในความเป็นจริง API ของ LINE ก็มีข้อจำกัดที่คล้ายคลึงกับ LINE OA Manager ดังที่สรุปในตารางด้านล่าง:

API EndpointURLข้อมูลที่ได้รับความละเอียดของเวลา
Get number of message deliveries/v2/bot/insight/message/deliveryจำนวนข้อความที่ส่งสำเร็จแยกตามประเภทรายวัน (Daily)
Get number of followers/v2/bot/insight/followersจำนวนผู้ติดตาม, ทาร์เก็ตรีช, และการบล็อครายวัน (Daily)
Get friend demographics/v2/bot/insight/demographicข้อมูลประชากรศาสตร์ (เพศ, อายุ, พื้นที่)ภาพรวม (Overall)
Get user interaction statistics/v2/bot/insight/message/eventจำนวนอิมเพรสชัน, การคลิก, และการเล่นสื่อรวมต่อข้อความ (Per Message)
Get statistics per unit/v2/bot/insight/message/event/aggregationสถิติแยกตาม Unit Nameรวมต่อ Unit (Per Unit)

จะเห็นได้ว่า LINE Messaging API ไม่มี Endpoint ใดที่ให้ข้อมูลสถิติการใช้งานหรือการมีส่วนร่วมของกลุ่มเป้าหมายแบบแยกตามช่วงเวลาของวัน (Hourly Breakdown) โดยตรง ข้อมูลสถิติที่ได้จากการดึงผ่าน API จะเป็นข้อมูลที่ถูกรวม (Aggregated) เป็นรายวันเพื่อปกป้องความเป็นส่วนตัวของผู้ใช้งาน นอกจากนี้ หากค่าสถิติบางรายการมีจำนวนน้อยกว่า 20 ระบบจะแสดงเป็น null เพื่อป้องกันการระบุตัวตนผู้ใช้รายบุคคล

3. วิธีการหาคำตอบ: กลุ่มเป้าหมาย Active ช่วงเวลาไหน?

แม้ว่า LINE OA และ LINE API จะไม่มีฟีเจอร์สำเร็จรูปที่บอกช่วงเวลาที่กลุ่มเป้าหมาย Active มากที่สุดในแต่ละวัน แต่ธุรกิจและนักพัฒนาสามารถใช้วิธีการประยุกต์เพื่อหาคำตอบนี้ได้ ดังต่อไปนี้

3.1 การวิเคราะห์ Webhook Timestamp (วิธีที่แม่นยำที่สุด)

นี่คือวิธีที่แม่นยำที่สุดในการเก็บข้อมูลพฤติกรรมผู้ใช้งานแบบเรียลไทม์ เมื่อเชื่อมต่อ LINE OA กับเซิร์ฟเวอร์ของคุณผ่าน Webhook ทุกๆ การกระทำของผู้ใช้ (เช่น ส่งข้อความ, เพิ่มเพื่อน, คลิก Rich Menu, หรือส่ง Postback) LINE Platform จะส่ง Webhook Event Object มายังเซิร์ฟเวอร์ของคุณ

ในทุกๆ Webhook Event Object จะมี Property ที่สำคัญอย่างยิ่งคือ timestamp ซึ่งระบุเวลาที่เกิดเหตุการณ์นั้นในรูปแบบ UNIX Time (หน่วยมิลลิวินาที)

“The timestamp property contains the UNIX time of the event occurred (in milliseconds). Even in the case of a redelivered webhook, it represents the time the event occurred, not the time it was redelivered.” — LINE Developers Documentation

ตัวอย่าง Webhook Event Object ที่ได้รับจาก LINE Platform:

JSON

{ “type”: “message”, “message”: { “type”: “text”, “id”: “14353798921116”, “text”: “Hello, world” }, “timestamp”: 1625665242211, “source”: { “type”: “user”, “userId”: “U80696558e1aa831…” }, “replyToken”: “757913772c4646b784d4b7ce46d12671”, “mode”: “active”, “webhookEventId”: “01FZ74A0TDDPYRVKNK77XKC3ZR”, “deliveryContext”: { “isRedelivery”: false } }

จากตัวอย่างข้างต้น ค่า timestamp: 1625665242211 สามารถแปลงเป็นวันที่และเวลาจริงได้ (ในกรณีนี้คือ 7 กรกฎาคม 2021 เวลา 18:40:42 น. โดยประมาณ) นักพัฒนาสามารถเขียนโค้ดเพื่อบันทึกข้อมูล timestamp ของทุกๆ Event ลงในฐานข้อมูล จากนั้นนำข้อมูลเหล่านี้มาวิเคราะห์เพื่อสร้างกราฟ Heatmap หรือ Bar Chart แสดงจำนวน Event ที่เกิดขึ้นในแต่ละชั่วโมงของวัน

ตัวอย่างโค้ด Python สำหรับวิเคราะห์ช่วงเวลา Active:

Python

from datetime import datetime import pytz # สมมติว่าเก็บ timestamps ไว้ในฐานข้อมูล webhook_timestamps = [1625665242211, 1625668842000, …] # UNIX ms # แปลง timestamp เป็นชั่วโมงในเขตเวลาไทย tz_th = pytz.timezone(‘Asia/Bangkok’) hours = [] for ts in webhook_timestamps: dt = datetime.fromtimestamp(ts / 1000, tz=tz_th) hours.append(dt.hour) # นับจำนวน events ในแต่ละชั่วโมง from collections import Counter hourly_counts = Counter(hours) # แสดงผล: ชั่วโมงที่มี events มากที่สุด peak_hour = hourly_counts.most_common(1)[0] print(f”ช่วงเวลาที่ Active มากที่สุด: {peak_hour[0]}:00 น. ({peak_hour[1]} events)”)

ข้อดีของวิธีนี้ คือสามารถเก็บข้อมูลได้ละเอียดถึงระดับมิลลิวินาที และสามารถแยกวิเคราะห์ตามประเภทของ Event ได้ เช่น วิเคราะห์เฉพาะ Message Event, Postback Event, หรือ Follow Event ทำให้เข้าใจพฤติกรรมของกลุ่มเป้าหมายได้ในหลายมิติ

3.2 การทำ A/B Testing ด้วยเวลาส่งบรอดแคสต์ (สำหรับนักการตลาด)

หากไม่มีทีมพัฒนาเพื่อเก็บข้อมูล Webhook นักการตลาดสามารถใช้วิธีทดลองส่งข้อความบรอดแคสต์ในช่วงเวลาที่แตกต่างกัน แล้วนำผลลัพธ์มาเปรียบเทียบกันได้ LINE OA Manager รองรับการทำ A/B Test สำหรับบรอดแคสต์อยู่แล้ว ซึ่งสามารถแสดงข้อมูลเปรียบเทียบระหว่างตัวแปรต่างๆ ได้

ขั้นตอนการดำเนินการมีดังนี้ ขั้นแรก ให้แบ่งกลุ่มเป้าหมาย (Targeting) ออกเป็นกลุ่มย่อยๆ ที่มีลักษณะคล้ายคลึงกัน จากนั้นส่งข้อความบรอดแคสต์ที่มีเนื้อหาเหมือนกันไปยังกลุ่มย่อยเหล่านั้น ในช่วงเวลาที่ต่างกัน แล้วใช้ฟีเจอร์ “ข้อมูลเชิงลึก: บรอดแคสต์” บน LINE OA Manager เพื่อดู อัตราการเปิดอ่าน (Open Rate) และ อัตราการคลิกลิงก์ (Click-through Rate) ของแต่ละแคมเปญ แคมเปญที่ส่งในช่วงเวลาใดมีประสิทธิภาพสูงสุด แสดงว่าช่วงเวลานั้นคือเวลาที่กลุ่มเป้าหมายของคุณ Active หรือพร้อมที่จะ Engage มากที่สุด

ช่วงเวลาที่ทดสอบตัวอย่างสถานการณ์ตัวชี้วัดที่ควรเปรียบเทียบ
07:00 – 08:30 น.ช่วงเช้า ก่อนเริ่มทำงานOpen Rate, Click-through Rate
11:30 – 13:00 น.ช่วงพักกลางวันOpen Rate, Click-through Rate
17:00 – 18:30 น.ช่วงเลิกงานOpen Rate, Click-through Rate
20:00 – 21:30 น.ช่วงพักผ่อนก่อนนอนOpen Rate, Click-through Rate

3.3 การใช้ Unit-based Statistics Aggregation (สำหรับนักพัฒนา)

LINE Messaging API มีฟีเจอร์ที่เรียกว่า Unit-based Statistics Aggregation ซึ่งช่วยให้คุณสามารถตั้งชื่อกลุ่ม (Unit Name) ให้กับข้อความ Push หรือ Multicast ที่ส่งออกไปได้ จากนั้นสามารถดึงสถิติของแต่ละ Unit Name ได้ เช่น จำนวนผู้เปิดอ่าน จำนวนผู้คลิก URL และจำนวนผู้เล่นวิดีโอ

แม้ฟีเจอร์นี้จะไม่บอกเวลาที่ผู้ใช้เปิดอ่านโดยตรง แต่คุณสามารถประยุกต์ใช้โดยการตั้งชื่อ Unit Name ตามช่วงเวลาที่ส่งข้อความ เช่น promo_morning_0800, promo_noon_1200, promo_evening_1800 จากนั้นใช้ API Endpoint GET /v2/bot/insight/message/event/aggregation เพื่อดึงสถิติของแต่ละ Unit Name มาเปรียบเทียบกัน

ตัวอย่างการส่งข้อความพร้อมกำหนด Unit Name:

Bash

curl -v -X POST https://api.line.me/v2/bot/message/push \ -H ‘Content-Type: application/json’ \ -H ‘Authorization: Bearer {channel access token}’ \ -d ‘{ “to”: “U4af4980629…”, “messages”:[ { “type”: “text”, “text”: “โปรโมชันพิเศษวันนี้!” } ], “customAggregationUnits”: [ “promo_morning_0800” ] }’

ข้อควรทราบคือ ในแต่ละเดือนสามารถใช้ Unit Name ได้สูงสุด 1,000 ชื่อ [5] และหากค่าสถิติมีจำนวนน้อยกว่า 20 ระบบจะแสดงเป็น null เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้

3.4 การใช้เครื่องมือ Third-party CRM ที่เชื่อมต่อกับ LINE API

อีกทางเลือกหนึ่งที่สะดวกสำหรับธุรกิจที่ไม่ต้องการพัฒนาระบบเอง คือการใช้เครื่องมือ CRM หรือ Marketing Automation ของ Third-party ที่เชื่อมต่อกับ LINE Messaging API อยู่แล้ว เครื่องมือเหล่านี้มักจะมีฟีเจอร์วิเคราะห์พฤติกรรมผู้ใช้ที่ละเอียดกว่า LINE OA Manager รวมถึงอาจมีรายงานแสดงช่วงเวลาที่ผู้ใช้ Active มากที่สุดด้วย

4. สรุปเปรียบเทียบวิธีการทั้งหมด

วิธีการระดับความยากความแม่นยำเหมาะสำหรับต้องใช้นักพัฒนา
Webhook Timestamp Analysisสูงสูงมาก (ระดับมิลลิวินาที )ธุรกิจที่มีทีม Devใช่
A/B Testing บรอดแคสต์ต่ำปานกลางนักการตลาดทั่วไปไม่
Unit-based Statisticsปานกลางปานกลาง-สูงธุรกิจที่ใช้ API อยู่แล้วใช่
Third-party CRMต่ำสูง (ขึ้นอยู่กับเครื่องมือ)ธุรกิจทุกขนาดไม่

5. บทสรุป

เมื่อตอบคำถามเดิมที่ว่า “มีข้อมูลไหมว่า Target ของเรา Active หรือ Engage กับ LINE OA มากที่สุดในช่วงเวลาไหนของวัน?” คำตอบคือ LINE Official Account และ LINE Messaging API ไม่มีฟีเจอร์สำเร็จรูปที่แสดงข้อมูลนี้โดยตรง ข้อมูลเชิงลึก (Insight) ที่มีให้ใน LINE OA Manager และ API Endpoints ต่างๆ ล้วนแสดงข้อมูลเป็นรายวัน (Daily) ไม่ใช่รายชั่วโมง (Hourly)

อย่างไรก็ตาม ธุรกิจสามารถประยุกต์ใช้เครื่องมือที่มีอยู่เพื่อหาคำตอบได้ สำหรับนักพัฒนา การเก็บและวิเคราะห์ timestamp จาก Webhook Event คือคำตอบที่ตรงจุดและแม่นยำที่สุด เพราะทุกๆ การกระทำของผู้ใช้จะมี timestamp ที่ระบุเวลาแม่นยำถึงระดับมิลลิวินาที ส่วนสำหรับนักการตลาดที่ไม่มีทีมพัฒนา การทำ A/B Testing โดยการทดลองส่งข้อความในช่วงเวลาต่างๆ และวัดผลผ่าน Insight ของบรอดแคสต์ ก็เป็นวิธีปฏิบัติที่ได้ผลดีเยี่ยม

การผสานรวมเทคนิคเหล่านี้จะช่วยให้ธุรกิจสามารถวางแผนการสื่อสารผ่าน LINE OA ได้อย่างมีประสิทธิภาพสูงสุด ส่งข้อความถูกเวลา เข้าถึงลูกค้าได้ตรงจุด และเพิ่มโอกาสในการสร้าง Engagement ที่มีคุณค่า

Leave a Reply

Your email address will not be published. Required fields are marked *