ข้ามไปยังเนื้อหา

ชุดเริ่มต้นสำหรับข้อมูลและเซกเมนต์ของสมาชิกโทรคมนาคม

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

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

ข้อกำหนดเบื้องต้น

Anchor link to
  • แอปพลิเคชันในบัญชี Pushwoosh ของคุณ ที่มีการผสานรวม SDK หรือลงทะเบียนอุปกรณ์ผ่าน API แล้ว
  • API access token ที่มีสิทธิ์ในการตั้งค่าแท็ก
  • ความช่วยเหลือจากนักพัฒนาสำหรับงานอัปเดตแบบ server-to-server
  • ตัวระบุสมาชิกที่คุณสามารถจับคู่กับ Pushwoosh ได้: ไม่ว่าจะเป็น User ID (โดยปกติคือ MSISDN ซึ่งเป็นหมายเลขโทรศัพท์ของสมาชิกในรูปแบบสากล หรือ ID สมาชิกภายใน) หรือ HWID ของอุปกรณ์

หน้าตาของโปรไฟล์สมาชิกโทรคมนาคม

Anchor link to

ตารางด้านล่างแสดงรายการแท็กที่ครอบคลุมสถานการณ์มาตรฐานของโทรคมนาคม สร้างแท็กเหล่านี้ก่อนการโหลดข้อมูลครั้งแรก โดยใช้ประเภทตามที่ระบุไว้อย่างเคร่งครัด

แท็กประเภทค่าตัวอย่างใช้สำหรับอะไร
msisdnString923001234567การระบุตัวตนและการกำหนดเป้าหมาย SMS
tariff_planStringGold Postpaidข้อเสนอเฉพาะแผนบริการ
prepaid_postpaidStringprepaidการแบ่งฐานลูกค้าตามรูปแบบการเรียกเก็บเงิน
balanceInteger50การแจ้งเตือนยอดเงินคงเหลือต่ำ
bundle_idStringDATA_5GB_30Dการแจ้งเตือนเกี่ยวกับแพ็กเกจใด
bundle_expiry_dateDate2026-09-20 21:00:00การแจ้งเตือนแพ็กเกจหมดอายุ
roaming_statusBooleantrueข้อความต้อนรับขณะโรมมิ่งและคำเตือนเกี่ยวกับค่าบริการโรมมิ่ง

สองแถวในตารางนั้นเป็นตัวตัดสินว่าสถานการณ์ต่างๆ จะทำงานได้หรือไม่

  • 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 ยังคงตอบกลับว่าสำเร็จ และอุปกรณ์จะยังคงมีค่าเก่าหรือไม่มีค่าเลย

ทั้งสองกรณีจบลงด้วยเซกเมนต์ที่แสดงผลผู้ใช้เป็นศูนย์และไม่มีข้อผิดพลาดใดๆ ที่จะอธิบายได้

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

เพื่อป้องกันทั้งสองกรณี ให้ตั้งค่าประเภทด้วยตนเอง:

  1. เปิดหน้า Tags ใน Control Panel ของคุณ
  2. คลิก สร้างแท็ก
  3. ป้อนชื่อแท็กและเลือกประเภทจากรายการ ทำซ้ำสำหรับทุกแท็กในตารางด้านบนก่อนการอัปโหลดครั้งแรก
  4. ใน bulkSetTags ให้ส่ง create_missing_tags: false หากมีแท็กที่ขาดหายไป ระบบจะส่งคืนข้อผิดพลาดแทนที่จะสร้างแท็กด้วยประเภทที่คาดเดา

วิธีอัปเดตโปรไฟล์แบบ server-to-server

Anchor link to

ข้อมูลโปรไฟล์โทรคมนาคมเปลี่ยนแปลงทุกวัน ดังนั้นจึงถูกโหลดเป็นชุดงานแทนที่จะโหลดจาก SDK มือถือ

  1. สร้างข้อมูลส่วนต่างรายวันในฝั่งของคุณ: สมาชิกที่ยอดเงินคงเหลือ, แพ็กเกจ หรือสถานะโรมมิ่งมีการเปลี่ยนแปลงตั้งแต่การทำงานครั้งล่าสุด การโหลดฐานข้อมูลทั้งหมดใหม่ทุกคืนนั้นไม่ค่อยจำเป็นและทำให้คุณเสียปริมาณคำขอ
  2. ส่งชุดข้อมูลไปยัง bulkSetTags โดยระบุอุปกรณ์ด้วย user_id เมื่อ MSISDN คือ User ID ของคุณ หรือด้วย hwid ในกรณีอื่น คำขอหนึ่งรายการสามารถบรรจุอุปกรณ์ได้หลายเครื่อง และเมธอดนี้คาดหวังอย่างน้อย 50 เครื่อง สำหรับสมาชิกเพียงคนเดียว ให้ใช้ setTags แทน
  3. ตรวจสอบ request_id ที่ได้รับกลับมาด้วย bulkSetTags status จนกว่างานจะเสร็จสิ้น ขอข้อมูลด้วย ?detailed=true และบันทึกผลลัพธ์ เพราะงานที่เสร็จสิ้นไม่ได้หมายความว่าทุกค่าจะถูกยอมรับ
  4. ลองส่งชุดข้อมูลที่ล้มเหลวอีกครั้งด้วย 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

ตรวจสอบตามลำดับต่อไปนี้ สามข้อแรกครอบคลุมกรณีส่วนใหญ่ที่รายงานมายังฝ่ายสนับสนุน

  1. ตรวจสอบประเภทแท็กในหน้า Tags หาก bundle_expiry_date เป็น Integer จะไม่มีโอเปอเรเตอร์เกี่ยวกับวันที่ถูกนำไปใช้ และเซกเมนต์จะเปรียบเทียบตัวเลข ให้สร้างแท็กประเภท Date และโหลดค่าใหม่
  2. ตรวจสอบว่าค่ามาถึงจริงหรือไม่ เปิด User Explorer ค้นหาสมาชิกที่คุณรู้ว่าอยู่ในชุดข้อมูล และดูแท็กของพวกเขา แท็กที่ว่างเปล่าหลังจากงานสำเร็จหมายความว่าค่าถูกปฏิเสธเนื่องจากรูปแบบ ซึ่งส่วนใหญ่มักเป็นสตริงตัวเลขล้วนหรือวันที่ที่ไม่ตรงกับรูปแบบใดๆ
  3. ตรวจสอบส่วนโอเปอเรเตอร์ ในอีก N วัน ภายใต้ วันครบรอบ จะไม่สนใจปี ระหว่าง N ถึง M วันข้างหน้า ภายใต้ วันที่แบบสัมพัทธ์ จะสนใจปี
  4. ตรวจสอบโซนเวลา Expiry timestamps ที่ส่งโดยไม่มี offset จะถูกอ่านเป็น UTC ซึ่งอาจเลื่อนสมาชิกไปยังวันก่อนหน้าหรือวันถัดไปของตารางการแจ้งเตือนของคุณ
  5. คำนวณเซกเมนต์ใหม่ ก่อนที่จะอ่านจำนวน เพื่อให้แน่ใจว่าคุณไม่ได้ดูขนาดที่แคชไว้ ดูที่ Calculating segment size

ข้อจำกัดที่ต้องคำนึงถึง

Anchor link to
  • ประเภทของแท็กเป็นแบบถาวร วางแผนโปรไฟล์ก่อนการอัปโหลดครั้งแรก เพราะการแก้ไขประเภทในภายหลังหมายถึงการสร้างแท็กใหม่และการโหลดข้อมูลทั้งหมดใหม่
  • โอเปอเรเตอร์วันที่เชิงเปรียบเทียบไม่สามารถใช้ได้ในเซกเมนต์ high-speed delivery แอปพลิเคชันที่กำหนดค่าสำหรับ high-speed delivery จะคอมไพล์เซกเมนต์ล่วงหน้า และไม่มีโอเปอเรเตอร์วันที่เชิงเปรียบเทียบให้ใช้ที่นั่น การแจ้งเตือนแพ็กเกจหมดอายุต้องทำงานเป็นเซกเมนต์ธรรมดา
  • ชุดงานแบบแบตช์ไม่ใช่แบบเรียลไทม์ เซกเมนต์จะเห็นโปรไฟล์ ณ เวลาที่โหลดสำเร็จครั้งล่าสุด สถานการณ์ที่ต้องทำงานภายในไม่กี่วินาทีหลังจากการเปลี่ยนแปลงยอดเงินคงเหลือควรอยู่ใน journey ที่ทริกเกอร์โดยอีเวนต์ ไม่ใช่ในชุดงานรายคืน