วิธีดึงสถิติ Rich Menu จาก LINE OA เมื่อข้อมูลไม่ขึ้นใน OA Manager

|ผู้เขียน: กองบรรณาธิการ QUASA|3 นาทีในการอ่าน
วิธีดึงสถิติ Rich Menu จาก LINE OA เมื่อข้อมูลไม่ขึ้นใน OA Manager

หากสร้าง Rich Menu ของ LINE OA ด้วย Messaging API แล้วไม่เห็นสถิติใน OA Manager ให้ใช้ richMenuId และช่วงวันที่ดึงข้อมูลผ่าน API แทน LINE Developers Thailand ระบุว่าดึงได้ทั้งยอดรวมและข้อมูลรายวัน โดยมีจำนวนครั้งที่เมนูแสดง จำนวนคลิก และจำนวนผู้ใช้ที่ไม่ซ้ำกัน สถิติของเมนูที่สร้างด้วย API จะไม่ปรากฏใน OA Manager

ก่อนส่งคำขอ ให้ยืนยันว่าเมนูที่ต้องการวัดสร้างผ่าน Messaging API และใช้ Channel access token ของช่องทางที่เกี่ยวข้อง หากเมนูสร้างใน OA Manager ต้องดูสถิติใน OA Manager เพราะ API ดึงข้อมูลของเมนูนั้นไม่ได้ จากนั้นจึงเลือกระหว่างยอดรวมสำหรับทั้งช่วงกับข้อมูลที่แยกตามวัน

แยกเมนูที่สร้างผ่าน API ออกจากเมนูใน OA Manager

เครื่องมือที่ใช้สร้างเป็นตัวกำหนดว่าจะดูสถิติที่ไหน ภาพรวม Rich Menu ของ LINE Developers อธิบายว่าเมนูหนึ่งรายการเรียกดูหรือแก้ไขข้ามระหว่าง Messaging API กับ OA Manager ไม่ได้ และสถิติของแต่ละรายการต้องดูผ่านเครื่องมือฝั่งที่สร้างเมนู การเปิดหน้าสถิติใน OA Manager แล้วไม่พบยอดของเมนูที่สร้างผ่าน API จึงสอดคล้องกับวิธีแยกข้อมูลของระบบ

อย่าตัดสินต้นทางจากภาพเมนูในหน้าสนทนาเพียงอย่างเดียว บัญชีหนึ่งอาจตั้งเมนูเริ่มต้นผ่าน OA Manager และมีเมนูที่สร้างผ่าน API สำหรับผู้ใช้บางคนด้วย เมื่อผู้ใช้เปิดห้องแชต เมนูเฉพาะผู้ใช้ที่ตั้งผ่าน API มีลำดับการแสดงเหนือเมนูเริ่มต้นที่ตั้งผ่าน API และเมนูเริ่มต้นจาก OA Manager ตามลำดับ ผู้ดูแลบัญชีจึงอาจกำลังดูภาพคนละรายการกับเมนูที่คิดว่าจะวัด

สำหรับเมนูที่สร้างผ่าน API ให้เก็บ richMenuId จากผลตอบกลับตอนสร้าง หรือเรียก GET /v2/bot/richmenu/list ด้วย token ของช่องทางนั้นเพื่อดูรายการที่ API สร้างไว้ รายการนี้ไม่รวมเมนูจาก OA Manager หากระบบมีเมนูหลายรุ่น ให้จับคู่ ID กับการตั้งค่าพื้นที่กดและช่วงที่นำเมนูไปแสดง เพราะ ID ของรุ่นก่อนกับรุ่นใหม่ไม่ใช่ข้อมูลชุดเดียวกัน แม้ภาพหรือข้อความบนเมนูจะดูคล้ายกัน

ถ้าต้องการตรวจเมนูเริ่มต้นที่ตั้งผ่าน API โดยตรง ใช้ GET /v2/bot/user/all/richmenu เพื่อขอ ID ของเมนูเริ่มต้นนั้น คำขอนี้อาจคืนสถานะ 403 เมื่อเมนูเริ่มต้นถูกตั้งจากช่องทางอื่น เช่น OA Manager และคืน 404 เมื่อไม่ได้ตั้งเมนูเริ่มต้นไว้ สถานะเหล่านี้เป็นผลของคำขอตรวจเมนูเริ่มต้น ไม่ใช่ผลของคำขอดึงสถิติ จึงควรแยกกันขณะวินิจฉัยปัญหา

เตรียม richMenuId, token และวันที่ให้ตรงกับเมนู

คำขอสถิติรับ richMenuId ในเส้นทาง URL และรับ from กับ to เป็นวันเริ่มต้นและวันสิ้นสุดของช่วงที่ต้องการวัด ใช้ Channel access token ของ Messaging API ที่ผูกกับ LINE OA ที่สร้างเมนูนั้น โดยส่งในส่วนหัว Authorization: Bearer {channel access token} หากดูแลหลายบัญชี ควรตรวจทั้งบัญชี ช่องทาง และ ID ก่อนเปลี่ยนช่วงวันที่ เพราะ token ที่ใช้กับเมนูคนละบัญชีไม่ช่วยให้พบสถิติของรายการที่ต้องการ

วันที่ต้องครอบคลุมเวลาที่เมนูถูกแสดงต่อผู้ใช้จริง การสร้างเมนูอย่างเดียวไม่ได้หมายความว่ามีการแสดงหรือคลิกแล้ว เมนูอาจยังไม่มีภาพ ยังไม่ได้ตั้งเป็นเมนูเริ่มต้น หรือยังไม่ได้ผูกกับผู้ใช้ที่ต้องการให้เห็น หากวัดเมนูเฉพาะผู้ใช้ ให้ตรวจว่า ID ที่เลือกเป็นรายการที่ผูกให้กลุ่มนั้น ไม่ใช่ ID ของเมนูเริ่มต้นของบัญชี

ข้อมูลที่เพิ่งเกิดขึ้นอาจยังไม่พร้อมทันที เพราะ LINE มักรวมสถิติให้เสร็จภายในวันถัดไป วันในพารามิเตอร์และผลตอบกลับอิงเขตเวลา UTC+9 ผู้ดูแลบัญชีในไทยที่เทียบยอดกับกิจกรรมตามเวลาไทยจึงควรระวังเหตุการณ์ช่วงดึก ซึ่งอาจถูกนับเป็นวันถัดไปในผลรายวันของ API การเลือกช่วงให้กว้างพอครอบคลุมวันที่ต้องการช่วยป้องกันการตกหล่นตรงขอบวัน

เลือกคำขอยอดรวมหรือรายวัน

สำหรับยอดทั้งช่วง ส่ง GET /v2/bot/insight/richmenu/{richMenuId}/summary?from={from}&to={to} หากต้องการเห็นความเปลี่ยนแปลงในแต่ละวัน ให้เปลี่ยนส่วนท้ายจาก summary เป็น daily คู่มืออ้างอิง Messaging API กำหนดรูปแบบวันที่เป็น yyyyMMdd ตาม UTC+9 โดย from ย้อนหลังได้ไม่เกิน 3 ปี และ to ห่างจาก from ได้ไม่เกิน 396 วันสำหรับ summary หรือ 99 วันสำหรับ daily แต่ละคำขอสถิติมีขีดจำกัด 60 ครั้งต่อชั่วโมง คู่มือเดียวกันระบุเกณฑ์ความเป็นส่วนตัวว่า หากผู้ใช้ที่ไม่ซ้ำกันซึ่งคลิกเมนูตลอดช่วงที่ขอมีน้อยกว่า 20 คน ผลตอบกลับจะมีเพียง richMenuId และไม่มีตัวเลขสถิติ

ตัวอย่างสมมติที่ต้องการยอดตลอดสัปดาห์ใช้ GET /v2/bot/insight/richmenu/{richMenuId}/summary?from=20261001&to=20261007 โดยแทน {richMenuId} ด้วยรหัสจริงและส่ง token ในส่วนหัว หากต้องการข้อมูลของวันเดียวกันแยกรายวัน ให้ใช้ GET /v2/bot/insight/richmenu/{richMenuId}/daily?from=20261001&to=20261007 ตัวอย่างนี้แสดงรูปแบบคำขอเท่านั้น ไม่ใช่สถิติของบัญชีใด

เลือก summary เมื่อคำถามคือเมนูรายการนี้ถูกเห็นและถูกกดเท่าใดตลอดช่วงที่กำหนด เลือก daily เมื่อจำเป็นต้องแยกวันที่เกิดการแสดงหรือการกด เช่น ต้องการเทียบก่อนและหลังเปลี่ยนเมนู หากช่วงที่ต้องการรายวันยาวเกินขอบเขตของคำขอเดียว ให้แบ่งคำขอเป็นช่วงที่ไม่ทับกัน แล้วนำค่า count ของแต่ละวันมาต่อกันตาม date

ตรวจ metricsFrom และ metricsTo หลังได้รับผลตอบกลับด้วย เพราะสองค่านี้บอกวันแรกและวันสุดท้ายของสถิติที่ดึงได้จริงภายในช่วงที่ร้องขอ ซึ่งอาจแคบกว่า from และ to ที่ส่งไป เมื่อทำรายงานย้อนหลัง ควรบันทึกทั้งช่วงที่ขอและช่วงที่ได้รับจริง เพื่อไม่ให้ตีความวันที่ไม่มีข้อมูลว่าเป็นวันที่เมนูมีการแสดงเป็นศูนย์

อ่านยอดแสดง คลิก และผู้ใช้รายพื้นที่

ในผลแบบ summary ค่า impression.metrics.count คือจำนวนครั้งที่ Rich Menu ถูกแสดง ส่วน impression.metrics.uniqueUsers คือจำนวนผู้ใช้ที่เห็นเมนูในช่วงนั้น สองค่านี้ใช้แทนกันไม่ได้ เพราะผู้ใช้คนเดิมอาจเห็นเมนูหลายครั้ง การหารจำนวนครั้งที่แสดงด้วยจำนวนผู้ใช้ที่เห็นให้ค่าเฉลี่ยการแสดงต่อผู้ใช้ในช่วงที่เลือก แต่ไม่บอกว่าคนใดกลับมาเปิดซ้ำ

ข้อมูล clicks แยกตามพื้นที่กด แต่ละรายการมี clicks[].bounds ซึ่งบอกพิกัดและขนาดพื้นที่ตามที่กำหนดไว้ตอนสร้างเมนู ตามด้วย clicks[].metrics.count สำหรับจำนวนครั้งที่พื้นที่นั้นถูกกด และ clicks[].metrics.uniqueUsers สำหรับจำนวนผู้ใช้ที่กดพื้นที่นั้น หากต้องการทราบว่าค่ารายการหนึ่งเป็นปุ่มใด ให้จับคู่ bounds กับพื้นที่ในข้อมูลเมนูที่สร้างไว้ ไม่ควรเดาจากลำดับของรายการ clicks

ผลแบบ daily เปลี่ยน metrics ของการแสดงและคลิกให้เป็นรายการที่มี date กำกับแต่ละวัน จึงอ่านได้ว่าพื้นที่เดียวกันถูกกดในวันใดบ้าง เมื่อรวมยอดข้ามวัน ให้รวม count ได้ตามวันที่ที่ต้องการ แต่ไม่ควรบวก uniqueUsers ของแต่ละวันเพื่ออ้างว่าเป็นจำนวนคนไม่ซ้ำกันทั้งช่วง ผู้ใช้คนเดียวอาจกลับมากดในหลายวันและถูกนับในค่ารายวันมากกว่าหนึ่งครั้ง หากต้องการจำนวนคนไม่ซ้ำกันตลอดช่วง ให้ดูผลแบบ summary ของช่วงเดียวกัน

อัตราคลิกของพื้นที่หนึ่งคำนวณจาก clicks[].metrics.count ของพื้นที่นั้น หารด้วย impression.metrics.count ของเมนูในช่วงเดียวกัน แล้วคูณ 100 ตัวอย่างสมมติ หากเมนูแสดง 1,000 ครั้งและพื้นที่นั้นถูกกด 50 ครั้ง อัตราคลิกต่อการแสดงเท่ากับ 5% ค่านี้วัดจำนวนการกดต่อจำนวนการแสดง ไม่ใช่สัดส่วนผู้ใช้ที่กด ผู้ใช้คนหนึ่งอาจกดพื้นที่เดิมซ้ำได้ จึงไม่ควรใช้เปอร์เซ็นต์นี้แทนจำนวนคน

หากโจทย์คือสัดส่วนคนที่กดพื้นที่นั้นในกลุ่มคนที่เห็นเมนู ให้หาร clicks[].metrics.uniqueUsers ของพื้นที่ด้วย impression.metrics.uniqueUsers ของช่วงเดียวกัน แล้วตั้งชื่อผลว่าอัตราผู้ใช้ที่กดพื้นที่นั้น ผู้ใช้หนึ่งคนอาจกดหลายพื้นที่ ดังนั้นการบวก uniqueUsers ของทุกพื้นที่ไม่ใช่จำนวนคนที่กดเมนูทั้งหมด และอัตราของแต่ละพื้นที่ก็ไม่จำเป็นต้องรวมกันได้ 100%

แยกสาเหตุเมื่อ API ไม่คืนตัวเลข

ให้เริ่มจากสถานะ HTTP แล้วดูว่าผลตอบกลับมีฟิลด์ใดบ้าง เพราะคำขอที่ผิดรูปแบบ การยังไม่มีสถิติ และการซ่อนตัวเลขเพื่อความเป็นส่วนตัวให้ผลต่างกัน การเห็นรหัสเมนูในผลตอบกลับอย่างเดียวไม่ได้แปลว่าจำนวนการแสดงหรือคลิกเป็นศูนย์

  • ไม่พบ ID ในรายการเมนูจาก API: ตรวจว่าเมนูสร้างใน OA Manager หรือใช้ token ของช่องทางอื่นอยู่หรือไม่ รายการจาก GET /v2/bot/richmenu/list แสดงเมนูที่สร้างผ่าน API ของช่องทางนั้น หากเมนูมาจาก OA Manager ให้ดูสถิติฝั่ง OA Manager
  • สถานะ 400: ตรวจว่าระบุ from และ to ครบ ใช้รูปแบบ yyyyMMdd และเลือกช่วงไม่เกินขอบเขตของ summary หรือ daily คำขอที่ไม่มีวันที่หรือส่งวันที่ผิดเป็นปัญหาของพารามิเตอร์ ไม่ใช่หลักฐานว่าเมนูไม่มีผู้ใช้
  • สถานะ 404 จากคำขอสถิติ: ตรวจ richMenuId และพิจารณาว่าเพิ่งสร้างเมนูจนระบบยังรวมข้อมูลรอบแรกไม่เสร็จหรือไม่ เมนูที่ถูกลบไปนานแล้วก็อาจไม่มีสถิติให้เรียก สถานะนี้ต่างจาก 404 ของคำขอตรวจเมนูเริ่มต้น
  • สถานะ 200 แต่มีเพียง richMenuId: ให้พิจารณาเกณฑ์ความเป็นส่วนตัวตามช่วง from และ to ที่ขอ ระบบไม่ส่งค่าการแสดงหรือคลิกเมื่อจำนวนผู้ใช้ที่ไม่ซ้ำกันซึ่งกดเมนูตลอดช่วงต่ำกว่าเกณฑ์ การขยายช่วงที่มีการใช้งานจริงอาจทำให้เข้าเกณฑ์ได้ แต่ไม่ควรเติมค่าที่หายไปเป็นศูนย์เอง

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

แชร์:

สมัครรับจดหมายข่าวของเรา

รับข่าวสารล่าสุดเกี่ยวกับ Web3, AI และคริปโตส่งตรงถึงกล่องจดหมายของคุณ

0