ชุดเริ่มต้นสำหรับข้อมูลและเซกเมนต์ของสมาชิกโทรคมนาคม
คู่มือนี้จะแนะนำการตั้งค่าโปรไฟล์สมาชิกโทรคมนาคมใน Pushwoosh และเปลี่ยนให้เป็นเซกเมนต์ที่ใช้งานได้: การแจ้งเตือนแพ็กเกจหมดอายุ, การแจ้งเตือนยอดเงินคงเหลือต่ำ, การยืนยันการเติมเงิน และข้อความต้อนรับขณะโรมมิ่ง ทำตามทุกส่วนให้ครบถ้วน และเซกเมนต์แรกที่คุณสร้างจะแสดงจำนวนผู้ใช้ที่ไม่ใช่ศูนย์ ดังนั้นคุณจึงไม่ต้องติดต่อฝ่ายสนับสนุน
ข้อผิดพลาดที่พบบ่อยที่สุดคือประเภทของแท็ก วันที่ที่จัดเก็บในแท็กประเภท Integer อาจดูเหมือนถูกต้องในรายการแท็ก แต่จะทำให้ทุกเซกเมนต์ที่เกี่ยวกับวันที่แสดงผลผู้ใช้เป็นศูนย์อย่างเงียบๆ ควรเลือกประเภทก่อน แล้วจึงโหลดข้อมูล
ข้อกำหนดเบื้องต้น
Anchor link to- แอปพลิเคชันในบัญชี Pushwoosh ของคุณ ที่มีการผสานรวม SDK หรือลงทะเบียนอุปกรณ์ผ่าน API แล้ว
- API access token ที่มีสิทธิ์ในการตั้งค่าแท็ก
- ความช่วยเหลือจากนักพัฒนาสำหรับงานอัปเดตแบบ server-to-server
- ตัวระบุสมาชิกที่คุณสามารถจับคู่กับ Pushwoosh ได้: ไม่ว่าจะเป็น User ID (โดยปกติคือ MSISDN ซึ่งเป็นหมายเลขโทรศัพท์ของสมาชิกในรูปแบบสากล หรือ ID สมาชิกภายใน) หรือ HWID ของอุปกรณ์
หน้าตาของโปรไฟล์สมาชิกโทรคมนาคม
Anchor link toตารางด้านล่างแสดงรายการแท็กที่ครอบคลุมสถานการณ์มาตรฐานของโทรคมนาคม สร้างแท็กเหล่านี้ก่อนการโหลดข้อมูลครั้งแรก โดยใช้ประเภทตามที่ระบุไว้อย่างเคร่งครัด
| แท็ก | ประเภท | ค่าตัวอย่าง | ใช้สำหรับอะไร |
|---|---|---|---|
msisdn | String | 923001234567 | การระบุตัวตนและการกำหนดเป้าหมาย SMS |
tariff_plan | String | Gold Postpaid | ข้อเสนอเฉพาะแผนบริการ |
prepaid_postpaid | String | prepaid | การแบ่งฐานลูกค้าตามรูปแบบการเรียกเก็บเงิน |
balance | Integer | 50 | การแจ้งเตือนยอดเงินคงเหลือต่ำ |
bundle_id | String | DATA_5GB_30D | การแจ้งเตือนเกี่ยวกับแพ็กเกจใด |
bundle_expiry_date | Date | 2026-09-20 21:00:00 | การแจ้งเตือนแพ็กเกจหมดอายุ |
roaming_status | Boolean | true | ข้อความต้อนรับขณะโรมมิ่งและคำเตือนเกี่ยวกับค่าบริการโรมมิ่ง |
สองแถวในตารางนั้นเป็นตัวตัดสินว่าสถานการณ์ต่างๆ จะทำงานได้หรือไม่
bundle_expiry_dateต้องเป็นแท็กประเภท Date เฉพาะแท็กประเภท Date เท่านั้นที่จะมีโอเปอเรเตอร์เชิงเปรียบเทียบ เช่นระหว่าง N ถึง M วันข้างหน้าซึ่งแสดงความหมายว่า “แพ็กเกจจะหมดอายุในอีกสามวัน” โดยไม่ต้องคำนวณเซกเมนต์ใหม่ทุกคืนbundle_idจะแยกจากวันหมดอายุ แท็กหนึ่งเก็บวันที่ อีกแท็กหนึ่งเก็บว่าวันนั้นเป็นของแพ็กเกจใด การเก็บทั้งสองอย่างไว้ในแท็กเดียวจะต้องมีการแยกวิเคราะห์สตริงภายในเซกเมนต์ ซึ่งตัวสร้างเซกเมนต์ไม่สามารถทำได้
ทำไมต้องตัดสินใจเลือกประเภทแท็กก่อนการอัปโหลดครั้งแรก
Anchor link toแท็กจะถูกสร้างขึ้นโดยอัตโนมัติในครั้งแรกที่ได้รับค่า และประเภทจะถูกอนุมานจากค่าแรกนั้น ตัวเลขจำนวนเต็มจะกลายเป็น Integer, ตัวเลขที่มีทศนิยมจะกลายเป็น Price, สตริงจะกลายเป็น String (หรือ Date หากตรงกับรูปแบบวัน-เวลาที่รู้จัก เช่น 2024-10-02 22:11), อาร์เรย์จะกลายเป็น List และ true/false จะกลายเป็น Boolean
การอนุมานนี้ล้มเหลวกับข้อมูลโทรคมนาคม เนื่องจากวันหมดอายุมักถูกส่งเป็น Unix timestamps:
- คุณส่ง
bundle_expiry_dateเป็นตัวเลข1758393600ซึ่งเป็นจำนวนเต็ม ดังนั้นแท็กจึงถูกสร้างเป็นประเภท Integer ค่าต่างๆ โหลดได้อย่างถูกต้อง แท็กดูเหมือนปกติ แต่จะไม่มีโอเปอเรเตอร์เกี่ยวกับวันที่ให้เลือกใช้เลย - แท็กมีอยู่แล้วในประเภท Integer และต่อมาคุณเปลี่ยนไปส่งเป็น
"2026-09-20"ค่านี้ไม่สามารถแยกวิเคราะห์เป็นตัวเลขได้อีกต่อไป ดังนั้นจึงถูกทิ้งไปโดยไม่มีข้อผิดพลาดใดๆ API ยังคงตอบกลับว่าสำเร็จ และอุปกรณ์จะยังคงมีค่าเก่าหรือไม่มีค่าเลย
ทั้งสองกรณีจบลงด้วยเซกเมนต์ที่แสดงผลผู้ใช้เป็นศูนย์และไม่มีข้อผิดพลาดใดๆ ที่จะอธิบายได้
ประเภทของแท็กไม่สามารถเปลี่ยนแปลงได้หลังจากการสร้าง การแก้ไขประเภทที่ผิดหมายถึงการสร้างแท็กใหม่ด้วยประเภทที่ถูกต้องและโหลดค่าเข้าไปใหม่ แท็กเก่าจะยังคงอยู่ในรายการจนกว่าคุณจะลบออก
เพื่อป้องกันทั้งสองกรณี ให้ตั้งค่าประเภทด้วยตนเอง:
- เปิดหน้า Tags ใน Control Panel ของคุณ
- คลิก สร้างแท็ก
- ป้อนชื่อแท็กและเลือกประเภทจากรายการ ทำซ้ำสำหรับทุกแท็กในตารางด้านบนก่อนการอัปโหลดครั้งแรก
- ใน
bulkSetTagsให้ส่งcreate_missing_tags: falseหากมีแท็กที่ขาดหายไป ระบบจะส่งคืนข้อผิดพลาดแทนที่จะสร้างแท็กด้วยประเภทที่คาดเดา
วิธีอัปเดตโปรไฟล์แบบ server-to-server
Anchor link toข้อมูลโปรไฟล์โทรคมนาคมเปลี่ยนแปลงทุกวัน ดังนั้นจึงถูกโหลดเป็นชุดงานแทนที่จะโหลดจาก SDK มือถือ
- สร้างข้อมูลส่วนต่างรายวันในฝั่งของคุณ: สมาชิกที่ยอดเงินคงเหลือ, แพ็กเกจ หรือสถานะโรมมิ่งมีการเปลี่ยนแปลงตั้งแต่การทำงานครั้งล่าสุด การโหลดฐานข้อมูลทั้งหมดใหม่ทุกคืนนั้นไม่ค่อยจำเป็นและทำให้คุณเสียปริมาณคำขอ
- ส่งชุดข้อมูลไปยัง
bulkSetTagsโดยระบุอุปกรณ์ด้วยuser_idเมื่อ MSISDN คือ User ID ของคุณ หรือด้วยhwidในกรณีอื่น คำขอหนึ่งรายการสามารถบรรจุอุปกรณ์ได้หลายเครื่อง และเมธอดนี้คาดหวังอย่างน้อย 50 เครื่อง สำหรับสมาชิกเพียงคนเดียว ให้ใช้setTagsแทน - ตรวจสอบ
request_idที่ได้รับกลับมาด้วยbulkSetTagsstatus จนกว่างานจะเสร็จสิ้น ขอข้อมูลด้วย?detailed=trueและบันทึกผลลัพธ์ เพราะงานที่เสร็จสิ้นไม่ได้หมายความว่าทุกค่าจะถูกยอมรับ - ลองส่งชุดข้อมูลที่ล้มเหลวอีกครั้งด้วย payload เดิม การตั้งค่าแท็กเป็นแบบ idempotent: การส่งค่าเดิมสองครั้งจะให้ผลลัพธ์เป็นโปรไฟล์เดิม
{ "application": "XXXXX-XXXXX", "auth": "your API access token", "create_missing_tags": false, "devices": [{ "user_id": "923001234567", "tags": { "bundle_id": "DATA_5GB_30D", "bundle_expiry_date": "2026-09-20 21:00:00", "balance": 50, "roaming_status": false } }]}รูปแบบวันที่ที่แท็กประเภท Date ยอมรับ
Anchor link toแท็กประเภท Date จะเก็บค่า Unix epoch timestamp ในหน่วยวินาที ส่งค่าใดค่าหนึ่งต่อไปนี้:
- ค่า epoch ในหน่วยวินาที เป็นตัวเลข:
1758393600 - สตริงวัน-เวลาที่มีตัวคั่น:
2026-09-20 21:00:00,2026-09-20 21:00หรือ2026-09-20วันที่ที่ไม่มีเวลาหมายถึงเที่ยงคืน - สตริง ISO 8601 ที่มี offset:
2026-09-20T21:00:00+05:00
มีสองรูปแบบที่ทำงานในลักษณะที่อาจทำให้การผสานรวมส่วนใหญ่ประหลาดใจ:
- สตริงที่ไม่มีโซนเวลาจะถูกอ่านเป็น UTC จะไม่ถูกอ่านตามเวลาท้องถิ่นของคุณ แพ็กเกจที่หมดอายุเวลา 21:00 น. ในการาจีคือ
2026-09-20T21:00:00+05:00หรือค่า epoch ที่ตรงกัน2026-09-20 21:00:00จะเร็วกว่าเวลาจริงสามชั่วโมง ซึ่งจะย้ายสมาชิกระหว่างรอบการแจ้งเตือนรายวัน - สตริงของตัวเลขคือค่า epoch ไม่ใช่วันที่
"20260920"ไม่ใช่วันที่ 20 กันยายน 2026 แต่เป็น epoch timestamp ที่ชี้ไปยังปี 1970 ควรส่งค่า epoch จริงหรือสตริงที่มีตัวคั่น
ค่าที่ไม่ตรงกับรูปแบบที่ยอมรับจะถูกทิ้งไปโดยไม่ทำให้คำขอล้มเหลว นั่นคือเหตุผลที่ขั้นตอนที่ 3 ข้างต้นต้องตรวจสอบผลลัพธ์ของงานแทนที่จะดูแค่สถานะ HTTP เพียงอย่างเดียว
สูตรการสร้างเซกเมนต์
Anchor link toแต่ละสูตรด้านล่างคือหนึ่งเซกเมนต์ เปิดส่วน Segments คลิก สร้างเซกเมนต์ เพื่อเปิดตัวสร้าง จากนั้นเพิ่มตัวกรองตามรายการ สำหรับคำแนะนำฉบับเต็มเกี่ยวกับตัวสร้าง โปรดดูที่ Create segments by tags
แพ็กเกจจะหมดอายุในอีกสามวัน
Anchor link toกำหนดเป้าหมายสมาชิกที่แพ็กเกจปัจจุบันจะหมดอายุในอีกสามวัน เพื่อให้การแจ้งเตือนไปถึงในขณะที่การต่ออายุยังคงมีความหมาย
- แท็ก:
bundle_expiry_date - โอเปอเรเตอร์: เปิดรายการโอเปอเรเตอร์ ไปที่ส่วน วันที่แบบสัมพัทธ์ และเลือก
ระหว่าง N ถึง M วันข้างหน้า - ค่า:
3และ3
เปลี่ยนค่าทั้งสองเป็น 1 และ 1 สำหรับการแจ้งเตือนวันสุดท้าย เพิ่มตัวกรองที่สองสำหรับ bundle_id เมื่อข้อความระบุชื่อแพ็กเกจที่เฉพาะเจาะจง
ยอดเงินคงเหลือต่ำ
Anchor link toกำหนดเป้าหมายสมาชิกแบบเติมเงินที่ไม่สามารถชำระเงินสำหรับการต่ออายุครั้งต่อไปได้อีกต่อไป
- แท็ก:
balance, โอเปอเรเตอร์น้อยกว่าหรือเท่ากับ, ค่า50 - แท็ก:
prepaid_postpaid, โอเปอเรเตอร์เท่ากับ, ค่าprepaid
เงื่อนไขทั้งสองอยู่ในกลุ่มเดียวกัน โดยรวมกันด้วย และ
การเข้าสู่โรมมิ่ง
Anchor link toกำหนดเป้าหมายสมาชิกที่กำลังอยู่ต่างประเทศในปัจจุบัน สำหรับข้อความต้อนรับพร้อมอัตราค่าบริการในท้องถิ่น
- แท็ก:
roaming_status, โอเปอเรเตอร์ใช่
เซกเมนต์ที่อิงตามแท็กจะสะท้อนสถานะ ณ เวลาที่คอมไพล์ หากคุณต้องการให้ข้อความส่งออกไปทันทีที่เริ่มโรมมิ่ง ให้ทริกเกอร์ customer journey จากอีเวนต์โรมมิ่งแทนการส่งไปยังเซกเมนต์นี้
การยืนยันการเติมเงินและปฏิกิริยาอื่นๆ
Anchor link toการยืนยันการเติมเงินเป็นการตอบสนองต่อการกระทำของสมาชิกคนเดียว ไม่ใช่กลุ่มเป้าหมายที่จะคอมไพล์ ส่ง custom event จากระบบการเรียกเก็บเงินของคุณด้วย postEvent และเริ่ม customer journey จากอีเวนต์นั้น เช่นเดียวกับการซื้อแพ็กเกจและการเปลี่ยนแปลงแผนบริการ
เซกเมนต์แสดงผลผู้ใช้เป็นศูนย์
Anchor link toตรวจสอบตามลำดับต่อไปนี้ สามข้อแรกครอบคลุมกรณีส่วนใหญ่ที่รายงานมายังฝ่ายสนับสนุน
- ตรวจสอบประเภทแท็กในหน้า Tags หาก
bundle_expiry_dateเป็น Integer จะไม่มีโอเปอเรเตอร์เกี่ยวกับวันที่ถูกนำไปใช้ และเซกเมนต์จะเปรียบเทียบตัวเลข ให้สร้างแท็กประเภท Date และโหลดค่าใหม่ - ตรวจสอบว่าค่ามาถึงจริงหรือไม่ เปิด User Explorer ค้นหาสมาชิกที่คุณรู้ว่าอยู่ในชุดข้อมูล และดูแท็กของพวกเขา แท็กที่ว่างเปล่าหลังจากงานสำเร็จหมายความว่าค่าถูกปฏิเสธเนื่องจากรูปแบบ ซึ่งส่วนใหญ่มักเป็นสตริงตัวเลขล้วนหรือวันที่ที่ไม่ตรงกับรูปแบบใดๆ
- ตรวจสอบส่วนโอเปอเรเตอร์
ในอีก N วันภายใต้ วันครบรอบ จะไม่สนใจปีระหว่าง N ถึง M วันข้างหน้าภายใต้ วันที่แบบสัมพัทธ์ จะสนใจปี - ตรวจสอบโซนเวลา Expiry timestamps ที่ส่งโดยไม่มี offset จะถูกอ่านเป็น UTC ซึ่งอาจเลื่อนสมาชิกไปยังวันก่อนหน้าหรือวันถัดไปของตารางการแจ้งเตือนของคุณ
- คำนวณเซกเมนต์ใหม่ ก่อนที่จะอ่านจำนวน เพื่อให้แน่ใจว่าคุณไม่ได้ดูขนาดที่แคชไว้ ดูที่ Calculating segment size
ข้อจำกัดที่ต้องคำนึงถึง
Anchor link to- ประเภทของแท็กเป็นแบบถาวร วางแผนโปรไฟล์ก่อนการอัปโหลดครั้งแรก เพราะการแก้ไขประเภทในภายหลังหมายถึงการสร้างแท็กใหม่และการโหลดข้อมูลทั้งหมดใหม่
- โอเปอเรเตอร์วันที่เชิงเปรียบเทียบไม่สามารถใช้ได้ในเซกเมนต์ high-speed delivery แอปพลิเคชันที่กำหนดค่าสำหรับ high-speed delivery จะคอมไพล์เซกเมนต์ล่วงหน้า และไม่มีโอเปอเรเตอร์วันที่เชิงเปรียบเทียบให้ใช้ที่นั่น การแจ้งเตือนแพ็กเกจหมดอายุต้องทำงานเป็นเซกเมนต์ธรรมดา
- ชุดงานแบบแบตช์ไม่ใช่แบบเรียลไทม์ เซกเมนต์จะเห็นโปรไฟล์ ณ เวลาที่โหลดสำเร็จครั้งล่าสุด สถานการณ์ที่ต้องทำงานภายในไม่กี่วินาทีหลังจากการเปลี่ยนแปลงยอดเงินคงเหลือควรอยู่ใน journey ที่ทริกเกอร์โดยอีเวนต์ ไม่ใช่ในชุดงานรายคืน