API การจัดการธุรกิจของ WhatsApp ช่วยให้คุณเข้าถึงเกณฑ์ชี้วัดและการวิเคราะห์เกี่ยวกับบัญชี WhatsApp Business (WABA) ของคุณได้ โดยคุณจะรับข้อมูลเกี่ยวกับบัญชีของคุณได้ 2 ประเภท ดังนี้
เมื่อสืบค้นตำแหน่งข้อมูล API คุณจำเป็นต้องระบุว่าคุณต้องการการวิเคราะห์สำหรับข้อความหรือการสนทนาโดยเพิ่ม analytics
หรือ conversation_analytics
เป็นพารามิเตอร์สำหรับ URL
ตัวอย่างต่อไปนี้คือตัวอย่างคำขอในกรณีที่คุณต้องการเรียกดูการวิเคราะห์ข้อความเกี่ยวกับบัญชีของคุณ
https://graph.facebook.com/v14.0/{whatsapp-business-account-ID} ?fields=analytics .{filtering-parameters} &{access-token}
ในตัวอย่างนี้ เราระบุว่าเราต้องการเรียกดูการวิเคราะห์ข้อความสำหรับหมายเลขโทรศัพท์ที่เชื่อมโยงกับ WABA ที่มี ID ของ WABA ที่ไม่ซ้ำกัน คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับการเรียกดู ID ของ WABA และโทเค็นการเข้าถึงในส่วน "ข้อกำหนด" ที่จะกล่าวถึงต่อไป
นอกจากนี้ เมื่อส่งคำขอ คุณสามารถใช้พารามิเตอร์การกรองเพื่อปรับแต่งผลลัพธ์ได้ ตำแหน่งข้อมูล API การจัดการธุรกิจรองรับ พารามิเตอร์การกรองรวมทั้งหมด 6 รายการ โดยคุณจะต้องระบุพารามิเตอร์ต่อไปนี้
start
: หากคุณระบุวันที่เริ่มต้น การตอบกลับจะไม่รวมข้อความที่ส่งก่อนวันที่ระบุไว้
end
: หากคุณระบุวันที่สิ้นสุด การตอบกลับจะไม่รวมข้อความที่ส่งหลังวันที่ระบุไว้
granularity
: ระบุว่าคุณต้องการให้การวิเคราะห์ที่เรียกดูละเอียดเท่าใด โดยค่าที่ใช้ได้ ได้แก่ HALF_HOUR, DAY และ MONTH
ในส่วนของ conversation_analytics
คุณจะมีพารามิเตอร์การกรอง 9 รายการ โดยในนี้มีอยู่ 3 รายการ ได้แก่ start
, end
และ granularity
เป็นพารามิเตอร์ที่ต้องระบุ
สำหรับบทแนะนำการใช้งานนี้ คุณจะต้องดำเนินการดังนี้
ติดตั้ง Python และ Pip ลงบนเครื่องสำหรับผู้พัฒนาในระบบของคุณ*
สมัครใช้งานบัญชีผู้พัฒนาใน Meta for Developers, สร้างแอพประเภทธุรกิจ และเพิ่มบัญชี WhatsApp Business ลงในแอพ
ตั้งค่า โดยคลิกปุ่ม ตั้งค่า ในตัวเลือก WhatsApp บนหน้า "เพิ่มผลิตภัณฑ์ลงในแอพของคุณ"
หลังจากสร้างแอพประเภทธุรกิจสำหรับ WhatsApp แล้ว คุณจะได้รับ ID ของ WABA และโทเค็นการเข้าถึงชั่วคราว ให้เก็บคีย์ 2 รายการนี้เอาไว้ เพราะคุณจะต้องใช้ตลอดบทแนะนำการใช้งานที่เหลือนี้
คุณสามารถเพิ่มหมายเลข WhatsApp ส่วนตัวของคุณเป็นผู้ส่งหรือใช้หมายเลขโทรศัพท์ทดสอบที่ WhatsApp ให้มาก็ได้
ตั้งค่าสภาพแวดล้อมการพัฒนา Python และติดตั้งแพ็คเกจที่จำเป็น
สร้างโฟลเดอร์ ตั้งชื่อ แล้วไปที่โฟลเดอร์ดังกล่าวโดยใช้เครื่องมือบรรทัดคำสั่ง สำหรับบล็อกนี้ เราจะใช้ไลบรารีคำขอสำหรับสร้างคำขอ HTTP และไลบรารี Matplotlib ยอดนิยมสำหรับสร้างการแสดงภาพนิ่ง ภาพเคลื่อนไหว และภาพแบบอินเทอร์แอคทีฟ ให้รันคำสั่งต่อไปนี้เพื่อทำการติดตั้ง
pip install requests matplotlib
ตอนนี้ คุณจะสามารถใช้คำขอ Python เพื่อสืบค้น API สำหรับข้อมูลการวิเคราะห์จาก WhatsApp จากนั้นใช้ Matplotlib เพื่อแสดงภาพเกณฑ์ชี้วัดโดยการพล็อตกราฟด้วยจุดข้อมูลที่ได้รับจาก API
เริ่มต้นด้วยการส่งคำขอข้อมูลการวิเคราะห์ โดยมีวิธีคือ ให้สร้างไฟล์ชื่อ sent.py
ในโฟลเดอร์แอพพลิเคชั่นของคุณและนำเข้าทรัพยากรที่ใช้ต่อกัน (Dependency) ที่จำเป็นสำหรับงานนี้ ดังนี้
import datetime import requests import matplotlib.pyplot as plt
จากนั้น สร้างคำขอ GET
API เพื่อเรียกดูการวิเคราะห์โดยใช้ ID ของ WABA และโทเค็นการเข้าถึงของคุณ คุณสามารถดูค่าเหล่านี้ได้ในแดชบอร์ดของบัญชีผู้พัฒนาของคุณบน Meta for Developer โดยโค้ดสำหรับคำขอ GET
เป็นดังนี้
key = 'put-your-access-token-here' waba_id = 'put-your-waba-id-here' res = requests.get(f'https://graph.facebook.com/v14.0/{waba_id}?fields=analytics.start(1662174000).end(1662548446).granularity(DAY)&access_token={key}') dict = res.json() print(dict)
ในคำขอด้านบน เราแสดงวันที่เริ่มต้นในรูปแบบ UNIX ตามที่ API กำหนด คุณสามารถใช้ตัวแปลงฟรีนี้เพื่อแปลงไปมาระหว่างประทับเวลาที่มนุษย์สามารถอ่านได้กับรูปแบบ UNIX โดยโค้ดจะแปลงการตอบกลับเป็นรูปแบบ JSON ในบรรทัดสุดท้ายและทำการพิมพ์
เรียกใช้คำสั่งต่อไปนี้เพื่อรันโค้ด
python app.py
หากมีการใช้หมายเลขโทรศัพท์ที่เชื่อมโยงกับ WABA เพื่อส่งข้อความในช่วงเวลาที่ระบุ เราจะได้รับอ็อบเจ็กต์พจนานุกรมการตอบกลับซึ่งมีลักษณะดังนี้
{ "analytics": { "phone_numbers": [ "16505550111", "16505550112", "16505550113" ], "country_codes": [ "US", ], "granularity": "DAY", "data_points": [ { "start": 1662174000, "end": 1662260400, "sent": 199251, "delivered": 183001 }, { "start": 1662260400, "end": 1662346800, "sent": 162489, "delivered": 141234 }, { "start": 1662346800, "end": 1662433200, "sent": 67902, "delivered": 53902 }, { "start": 1662433200, "end": 1662519600, "sent": 129521, "delivered": 117832 } ] }, "id": "952305634918047" }
ในกรณีนี้ รายการ data_points
มีพจนานุกรม 4 ชุด โดยแต่ละชุดมีจำนวนข้อความที่หมายเลข WhatsApp ที่เชื่อมโยงอยู่ได้ส่งและส่งถึงผู้รับในช่วงวันที่ที่ระบุ
เมื่อคุณมีข้อมูลแล้ว คุณจะต้องเรียกดูข้อมูลที่จำเป็น เนื่องจากเราต้องการแสดงภาพจำนวนข้อความที่ส่งในแต่ละวัน เราจึงต้องเรียกดูค่า start
และ sent
จากพจนานุกรมแต่ละชุด
ในการดำเนินการดังกล่าว ให้เรียกใช้คำสั่งวนซ้ำ (Loop Through) กับจุดข้อมูลโดยใช้คำสั่งวนซ้ำ for...in
ใน Python แปลงเวลาเริ่มต้นจากรูปแบบ UNIX เป็นเวอร์ชั่นที่มนุษย์สามารถอ่านได้ให้กับแต่ละอ็อบเจ็กต์ข้อมูล จากนั้น ให้เรียกดูเฉพาะวันที่เป็นตัวเลขของเดือนและเพิ่มลงในรายการวัน จัดเก็บจำนวนข้อความที่ส่งในอีกรายการหนึ่งที่ชื่อ no_of_msgs_sent
ดังนี้
days = [] no_of_msgs_sent = [] data_points = dict.get("analytics").get("data_points") for point in data_points: # Get date in human readable format x = datetime.datetime.fromtimestamp(point.get('start')) # Get just the day in string format y = x.strftime("%d") days.append(y) # Add the number of sent messages to the list no_of_msgs_sent.append(point.get('sent')) print(days) print(no_of_msgs_sent) If you run the code, you get two lists: ['03', '04', '05', '06'] // days [196093, 147649, 61988, 132465] // number of messages Now that you have what you need, it's time to visualize it. Add the following code to app.py: plt.plot(days, no_of_msgs_sent) plt.title('Our Graph') plt.xlabel('Days') plt.ylabel('Number of messages sent') plt.show()
ในขั้นตอนนี้ คุณจะพล็อตกราฟพื้นฐานโดยให้วันที่อยู่บนแกน X และจำนวนข้อความที่ส่งอยู่บนแกน Y
บันทึกไฟล์แล้วรันโค้ดของคุณ หากคุณใช้ Linux แล้วได้รับข้อความแสดงข้อผิดพลาดดังต่อไปนี้
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
ให้ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง tkinter แล้ว หากยังไม่ติดตั้ง ให้รันคำสั่งต่อไปนี้เพื่อติดตั้ง
sudo apt-get install python3-tk
หากคุณรันโค้ด คุณจะได้รับกราฟที่มีลักษณะดังนี้
ขั้นตอนต่อไป คุณจะสร้างกราฟเพื่อแสดงภาพจำนวนข้อความที่ส่งถึงผู้รับ
ในส่วนก่อนหน้านี้ เราไม่ได้ระบุหมายเลขโทรศัพท์ในคำขอ ด้วยเหตุนี้ API จึงส่งคืนข้อมูลสำหรับหมายเลขโทรศัพท์ทั้งหมดที่เชื่อมโยงกับ WABA ภายในวันที่เริ่มต้นและวันที่สิ้นสุดที่ได้ระบุไว้
อย่างไรก็ตาม หากคุณต้องการเรียกดูข้อมูลการวิเคราะห์สำหรับหมายเลขโทรศัพท์หนึ่งหรือหลายหมายเลขแต่ไม่ใช่ทั้งหมด คุณจะต้องใส่หมายเลขโทรศัพท์ในอาร์เรย์แล้วส่งต่อไปยังเมธอด .phone_numbers
เมื่อสร้างคำขอดังนี้
res = requests.get(f'https://graph.facebook.com/v14.0/{waba_id}?fields=analytics.start(1662174000).end(1662548446).phone_numbers([16505550111, // others]).granularity(DAY)&access_token={key}')
โค้ดที่เหลือใน sent.py
จะยังคงเหมือนเดิม โดยคุณจะได้รับเฉพาะการวิเคราะห์สำหรับหมายเลขโทรศัพท์ที่ระบุเท่านั้นเมื่อคุณรันโค้ดดังกล่าว
ในเนื้อหา 2 ส่วนก่อนหน้านี้ เราได้พล็อตกราฟเพื่อแสดงภาพจำนวนข้อความที่ส่งในแต่ละวันจากหมายเลขโทรศัพท์ที่เชื่อมโยงผ่าน WhatsApp คราวนี้เราจะมาพล็อตกราฟที่แสดงภาพจำนวนข้อความที่ส่งถึงผู้รับในแต่ละวันบ้าง
สร้างไฟล์ใหม่แล้วตั้งชื่อว่า delivered.py
จากนั้น ให้คัดลอกโค้ดจาก sent.py
ไปยัง delivered.py
ขั้นตอนต่อไป ให้ทำการเปลี่ยนแปลงบางส่วนกับโค้ดใน delivered.py
ก่อนอื่น ให้เปลี่ยนชื่อตัวแปรที่ด้านบนสุดจาก no_of_msgs_sent
เป็น no_of_msgs_del
เพื่อให้สัมพันธ์กับประเภทข้อมูลที่คุณจะจัดเก็บ
จากนั้น ในคำสั่งวนซ้ำ for...in
ให้เปลี่ยนค่าในเมธอด point.get
จาก sent
เป็น delivered
ด้านล่างนี้คือตัวอย่างที่แสดงให้เห็นว่าโค้ดของคุณควรมีลักษณะอย่างไรหลังจากทำการเปลี่ยนแปลง
# Variables go here for point in data_points: # Code for getting human readable date goes here # Now add the number of delivered messages to the list no_of_msgs_del.append(point.get('delivered')) print(day) print(no_of_msgs_del) Finally, specify no_of_msgs_del in the plt.plot method and update the label shown on the y-axis: plt.plot(days, no_of_msgs_del) plt.title('Our Graph') plt.xlabel('Days') plt.ylabel('Number of messages delivered') plt.show()
เมื่อรันโค้ดบนเทอร์มินัลของคุณแล้ว (ด้วย delivered.py ใน python
) คุณจะได้รับกราฟที่มีลักษณะดังตัวอย่างด้านล่าง
หลังจากที่คุณได้แสดงข้อมูลการวิเคราะห์ 2 ชุดสำหรับข้อความแล้ว ต่อไปคุณจะต้องแสดงค่าใช้จ่ายของข้อความโดยใช้ conversation_analytics
สร้างไฟล์ใหม่อีกครั้งสำหรับส่วนนี้ แล้วตั้งชื่อไฟล์ว่า cost.py
ให้คัดลอกโค้ดจาก sent
.py
ไปยัง cost
.py
จากนั้นเราจะทำการเปลี่ยนแปลงบางส่วนกัน
ก่อนอื่น ให้เปลี่ยนแปลงโค้ดคำขอ เนื่องจากคุณกำลังจะเรียกดูข้อมูลการสนทนา ให้ตั้งค่าพารามิเตอร์ fields
เป็น conversation_analytics
และตั้งค่า granularity
เป็น daily
res = requests.get(f'https://graph.facebook.com/v14.0/{waba_id}?fields=conversation_analytics.start(1662174000).end(1662548446).granularity(DAILY).phone_numbers([])&access_token={key}')
โปรดทราบว่าช่อง conversation_anaytics
รองรับพารามิเตอร์การกรองอื่นๆ หลายรายการสำหรับการเรียกดูข้อมูลประเภทอื่นๆ หากต้องการเรียนรู้เพิ่มเติม โปรดอ่านเอกสารประกอบฉบับเต็ม
หลังจากส่งคำขอข้างต้นแล้ว คุณควรได้รับอ็อบเจ็กต์การตอบกลับที่คล้ายกับตัวอย่างต่อไปนี้อย่างมาก
{ "conversation_analytics": { 'data': { "data_points": [ { "start": 1662174000, "end": 1662260400, "conversation": 5250, "cost": 45.0532 }, { "start": 1662260400, "end": 1662346800, "conversation": 2250, "cost": 25.0290 }, { "start": 1662346800, "end": 1662433200, "conversation": 800, "cost": 0.0000 }, { "start": 1662433200, "end": 1662519600, "conversation": 3150, "cost": 33.2015 } ] } }, }
อย่างที่ได้เห็นในตัวอย่างข้างต้น data_points
จะอยู่ในพจนานุกรมข้อมูล โดยแต่ละจุดข้อมูลในพจนานุกรมจะมีจำนวนการสนทนาและค่าใช้จ่ายอยู่
จากนั้น ใน cost.py
ให้เปลี่ยนตัวแปรที่ด้านบนสุดจาก no_of_msgs_del
เป็น cost_of_convo
ในคำสั่งวนซ้ำ for...in
ให้เปลี่ยนค่าในเมธอด point.get
จาก delivered
เป็น cost
ด้านล่างนี้คือตัวอย่างที่แสดงให้เห็นว่าโค้ดของคุณควรมีลักษณะอย่างไรหลังจากทำการเปลี่ยนแปลง
days = [] cost_of_convo = [] data_points = dict.get('conversation_analytics').get("data").get("data_points") for point in data_points: x = datetime.datetime.fromtimestamp(point.get('start')) y = x.strftime("%d") days.append(y) # Add the cost of messages in each data point cost_of_convo.append(point.get('cost')) Now, to plot a graph visualizing it: plt.plot(days, cost_of_convo) plt.title('Our Graph') plt.xlabel('Days') plt.ylabel('Cost of messages sent') plt.show()
หากคุณรันโค้ดโดยใช้เทอร์มินัล (ด้วย cost.py ใน python
) คุณจะได้รับกราฟที่มีลักษณะดังนี้
เท่านี้ก็เรียบร้อย!
หากต้องการดำเนินการเพิ่มเติม คุณสามารถทำตามวิธีเดียวกันนี้เพื่อแสดงภาพเกณฑ์ชี้วัดอื่นๆ ที่ API การจัดการ WhatsApp Business มีให้ใช้งานได้
ในบทแนะนำการใช้งานนี้ เราใช้ไลบรารีการแสดงภาพข้อมูล matplotlib เพื่อแสดงภาพข้อมูลที่แสดงจำนวนข้อความที่ส่งต่อวัน จำนวนข้อความที่ส่งถึงผู้รับต่อวัน และค่าใช้จ่ายของการสนทนาผ่านข้อความแต่ละครั้ง
API การจัดการ WhatsApp Business มีพารามิเตอร์การกรองเหล่านี้และอื่น ๆ อีกมากมายให้คุณใช้งาน ซึ่งคุณใช้เพื่อระบุเกณฑ์ชี้วัดที่คุณต้องการในแต่ละคำขอได้ หากต้องการเรียนรู้เพิ่มเติม โปรดอ่านเอกสารประกอบเกี่ยวกับ API ฉบับเต็ม
ในฐานะผู้พัฒนา API การจัดการ WhatsApp Business จะให้ข้อมูลและเกณฑ์ชี้วัดที่เกี่ยวข้องจากบัญชี WhatsApp ของผู้ใช้ของคุณ ตัวอย่างเช่น คุณสามารถแสดงให้ผู้ใช้ของคุณเห็นจำนวนข้อความบน WhatsApp ที่ส่งในวันที่ระบุอยู่บนแดชบอร์ดของผู้ใช้ดังกล่าวได้
ความเป็นไปได้ไม่มีที่สิ้นสุด!
*Meta จะไม่รับผิดชอบต่อแอพใดๆ ของบุคคลที่สาม