ภาษาการแบ่งส่วน (Segmentation Language)
Pushwoosh มีเอนจิ้นการแบ่งส่วนที่มีประสิทธิภาพสำหรับการสร้าง Segments แบบละเอียดตามค่า Tag Segmentation Language เป็นวิธีการเขียนและรวมเกณฑ์การแบ่งส่วนที่เฉพาะเจาะจงเพื่ออธิบายกลุ่มผู้ใช้ที่ตรงกับเกณฑ์เหล่านั้นและถือว่าเป็นกลุ่มเป้าหมาย (audience segment) เดียวกัน
บทความนี้อธิบายแนวคิดพื้นฐานและ синтаксис ของ Segmentation Language และให้ตัวอย่างที่ครอบคลุมของการสร้างเกณฑ์การแบ่งส่วนสำหรับกรณีต่างๆ
พื้นฐาน
Anchor link toอุปกรณ์แต่ละเครื่องในฐานผู้ใช้ของคุณมีแอตทริบิวต์เฉพาะที่เชื่อมโยงผ่าน ค่า Tag
ตัวอย่างเช่น สมมติว่าผู้ใช้ชื่อ Jane อาศัยอยู่ในโตเกียว และอายุ 28 ปี ผู้ใช้รายนั้นจะมี Tags ต่อไปนี้ตั้งค่าไว้สำหรับอุปกรณ์ของพวกเขา:
- Name: Jane
- City: Tokyo
- Age: 28
ในการกำหนดเป้าหมาย Jane คุณจะต้องอธิบาย segment ดังนี้:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
การรวมกันของเงื่อนไขนี้คือ filter expression ที่ใช้ใน Segmentation Language สำหรับการอธิบายกลุ่มผู้ใช้หรือที่เรียกว่า audience Segments
Filter expressions
Anchor link toFilter expression คือสตริงที่ประกอบด้วยเงื่อนไขหรือการรวมกันของเงื่อนไขที่อธิบาย segment ที่คุณต้องการ
เงื่อนไข
Anchor link toแต่ละเงื่อนไขจะอธิบาย segment ของอุปกรณ์ที่ตรงกับเกณฑ์ที่ระบุในเงื่อนไขนั้น
ตัวอย่างเช่น เงื่อนไขต่อไปนี้จะสร้าง segment ของผู้ใช้ที่อาศัยอยู่ในโตเกียว:
T("City", e, "Tokyo")
โดยที่
- T คือ Tag (ประเภทเงื่อนไข);
- eq คือตัวดำเนินการที่จะใช้;
- “Tokyo” คือค่า Tag ที่ผู้ใช้เชื่อมโยงกับอุปกรณ์ของตน
ประเภทของเงื่อนไข
Anchor link toประเภทของเงื่อนไขต่อไปนี้พร้อมใช้งานสำหรับการแบ่งส่วน:
- A (Application) – อธิบาย segment ของอุปกรณ์ที่ติดตั้งแอปพลิเคชันเฉพาะ Aliases: App, Application;
- T (Tag) – อธิบาย segment ของอุปกรณ์ที่มีค่า Tag ที่ระบุ;
- AT (App-specific tag) – ใช้ร่วมกับรหัสแอปสำหรับ tag ที่เป็นของแอปนั้นๆ Alias: Tag;
- Event – อธิบาย segment ของอุปกรณ์ที่ทริกเกอร์ Event ของ Pushwoosh ที่ระบุ;
- Geo – อธิบาย segment ของอุปกรณ์ภายในรัศมีทางภูมิศาสตร์ที่ระบุ;
- BTTS – อธิบาย segment ของอุปกรณ์ตามเวลาที่ดีที่สุดในการส่ง (best time to send);
- Updated – อธิบาย segment ของอุปกรณ์ตามการประทับเวลาอัปเดตล่าสุด;
- Segment – อ้างอิงถึง filter/segment อื่นโดยใช้รหัสของมัน;
การดำเนินการกับเงื่อนไข
Anchor link toสำหรับการสร้าง segments ที่ซับซ้อน สามารถใช้การดำเนินการต่อไปนี้กับเงื่อนไขภายใน filter expression ได้:
Union (+)
Anchor link toรวม segments เข้าด้วยกัน กล่าวคือ สร้าง segment ใหม่ของผู้ใช้ที่ตรงกับเงื่อนไขที่ระบุอย่างน้อยหนึ่งเงื่อนไข

ตัวอย่างเช่น หากต้องการกำหนดเป้าหมายผู้ใช้ที่อาศับอยู่ในโตเกียวหรือโอซาก้า คุณจะต้องอธิบาย segment ด้วยเงื่อนไขต่อไปนี้:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
Intersection (*)
Anchor link toสร้าง segment ของผู้ใช้ที่เป็นของทั้งสอง segments ที่อธิบายโดยเงื่อนไข ดังนั้น จะรวมเฉพาะผู้ใช้ที่ปฏิบัติตามแต่ละเงื่อนไขที่คุณระบุเท่านั้น

นิพจน์ต่อไปนี้อธิบาย segment ของผู้ใช้ที่อาศัยอยู่ในโตเกียวและได้ระบุชื่อของตนเอง:
T("City", eq, "Tokyo") * T("Name", any)
Difference (\)
Anchor link toสร้าง segment ของผู้ใช้ที่เป็นของหนึ่งใน segments ที่อธิบายไว้และไม่ได้เป็นของอีก segment หนึ่ง

ผู้ใช้ที่อาศัยอยู่ในโตเกียวแต่ไม่ได้ให้ชื่อของตนเองจะถูกอธิบายดังนี้:
T("City", eq, "Tokyo") \ T("Name", any)
วงเล็บ
Anchor link toกำหนดลำดับของการดำเนินการที่จะทำกับเงื่อนไขใน filter expression ของคุณ
ตัวอย่างเช่น filter expression ต่อไปนี้จะทำการดึง segment ของผู้สมัครสมาชิก 12345-67890 ที่มีอายุ 18 ปีก่อน จากนั้นจึงลบผู้ชายทั้งหมดออกจาก segment นั้น:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
ตัวดำเนินการเงื่อนไข Tag
Anchor link toสำหรับ Tag แต่ละประเภท จะมีการใช้ตัวดำเนินการของตัวเอง
ตัวดำเนินการสำหรับ Integer Tags
Anchor link to- eq - เท่ากับค่าที่ระบุ
- noteq - ไม่เท่ากับค่าที่ระบุ
- lte - น้อยกว่าหรือเท่ากับค่าที่ระบุ
- gte - มากกว่าหรือเท่ากับค่าที่ระบุ
- in - ค่าใดค่าหนึ่งจากค่าที่ระบุ
- notin - ไม่เท่ากับค่าใดๆ ที่ระบุ
- between - อยู่ในช่วงที่ระบุ
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
ตัวดำเนินการสำหรับ String Tags
Anchor link to- eq - เท่ากับค่าที่ระบุ
- noteq - ไม่เท่ากับค่าที่ระบุ
- startswith - ขึ้นต้นด้วยคำนำหน้าที่ระบุ
- endswith - ลงท้ายด้วยคำต่อท้ายที่ระบุ
- contains - มีสตริงย่อยที่ระบุ
- in - เท่ากับค่าใดๆ ที่ระบุ
- notin - ไม่เท่ากับค่าใดๆ ที่ระบุ
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
ตัวดำเนินการสำหรับ List Tags
Anchor link to- in - อุปกรณ์ที่มีค่า tag ใดๆ ที่ระบุ
- notin - ไม่มีค่า tag ใดๆ ที่ระบุเชื่อมโยงกับอุปกรณ์
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
ตัวดำเนินการสำหรับ Date Tags
Anchor link to- eq - เท่ากับวันที่ที่ระบุ
- noteq - ไม่เท่ากับวันที่ที่ระบุ
- lte - ก่อนหรือในวันที่ที่ระบุ
- gte - หลังหรือในวันที่ที่ระบุ
- in - เท่ากับวันที่ใดๆ ที่ระบุ
- notin - ไม่เท่ากับวันที่ใดๆ ที่ระบุ
- between - อยู่ในช่วงที่ระบุ
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
- match - ตรงกับเดือนและวันที่ของเดือนที่ระบุ
- daysago eq - เท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- daysago noteq - ไม่เท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- daysago lte - น้อยกว่าหรือเท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- daysago gte - มากกว่าหรือเท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- daysago between - ระหว่างจำนวนวันที่ระบุ
- minutesago lte - น้อยกว่าหรือเท่ากับจำนวนนาทีที่ระบุก่อนช่วงเวลาปัจจุบัน
- minutesago gte - มากกว่าหรือเท่ากับจำนวนนาทีที่ระบุก่อนช่วงเวลาปัจจุบัน
ตัวดำเนินการสำหรับ Boolean Tags
Anchor link to- eq - เท่ากับค่าที่ระบุ
- noteq - ไม่เท่ากับค่าที่ระบุ
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
ตัวดำเนินการสำหรับ Price Tags
Anchor link to- eq - เท่ากับค่าที่ระบุ
- noteq - ไม่เท่ากับค่าที่ระบุ
- lte - น้อยกว่าหรือเท่ากับค่าที่ระบุ
- gte - มากกว่าหรือเท่ากับค่าที่ระบุ
- in - เท่ากับค่าใดๆ ที่ระบุ
- notin - ไม่เท่ากับค่าใดๆ ที่ระบุ
- between - อยู่ในช่วงที่ระบุ
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
ตัวดำเนินการสำหรับ Version Tags
Anchor link to- eq - เท่ากับค่าที่ระบุ
- noteq - ไม่เท่ากับค่าที่ระบุ
- lte - น้อยกว่าหรือเท่ากับค่าที่ระบุ
- gte - มากกว่าหรือเท่ากับค่าที่ระบุ
- in - เท่ากับค่าใดๆ ที่ระบุ
- notin - ไม่เท่ากับค่าใดๆ ที่ระบุ
- between - อยู่ในช่วงที่ระบุ
- any - อุปกรณ์ที่มีการตั้งค่าใดๆ สำหรับ tag
- notset - อุปกรณ์ที่ไม่มีการตั้งค่าสำหรับ tag
ตัวดำเนินการเงื่อนไข Event
Anchor link toจำนวน Event
Anchor link to- count gte - อุปกรณ์ที่ทริกเกอร์ event มากกว่าหรือเท่ากับ n ครั้ง
- count lte - อุปกรณ์ที่ทริกเกอร์ event น้อยกว่าหรือเท่ากับ n ครั้ง
- count eq - อุปกรณ์ที่ทริกเกอร์ event เท่ากับ n ครั้งพอดี
- count noteq - อุปกรณ์ที่ทริกเกอร์ event กี่ครั้งก็ได้แต่ไม่เท่ากับ n
วันที่ของ Event
Anchor link to- date gte - อุปกรณ์ที่ทริกเกอร์ event ช้ากว่าหรือตรงกับวันที่ที่ระบุ
- date lte - อุปกรณ์ที่ทริกเกอร์ event เร็วกว่าหรือตรงกับวันที่ที่ระบุ
- date eq - อุปกรณ์ที่ทริกเกอร์ event ตรงกับวันที่ที่ระบุพอดี
- date noteq - อุปกรณ์ที่ทริกเกอร์ event เมื่อใดก็ได้แต่ไม่ใช่ในวันที่ที่ระบุ
- date in - อุปกรณ์ที่ทริกเกอร์ event ในวันที่ใดๆ ที่ระบุ
- date notin - อุปกรณ์ที่ทริกเกอร์ event เมื่อใดก็ได้แต่ไม่ใช่ในวันที่ใดๆ ที่ระบุ
- date between - อุปกรณ์ที่ทริกเกอร์ event ภายในช่วงเวลาที่ระบุ
- date daysago eq - วันที่ทริกเกอร์ event เท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- date daysago noteq - วันที่ทริกเกอร์ event ไม่เท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- date daysago lte - วันที่ทริกเกอร์ event น้อยกว่าหรือเท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- date daysago gte - วันที่ทริกเกอร์ event มากกว่าหรือเท่ากับจำนวนวันที่ระบุก่อนวันปัจจุบัน
- date daysago between - วันที่ทริกเกอร์ event อยู่ระหว่างจำนวนวันที่ระบุ
- date minutesago lte - วันที่ทริกเกอร์ event น้อยกว่าหรือเท่ากับจำนวนนาทีที่ระบุก่อนช่วงเวลาปัจจุบัน
- date minutesago gte - วันที่ทริกเกอร์ event มากกว่าหรือเท่ากับจำนวนนาทีที่ระบุก่อนช่วงเวลาปัจจุบัน
แพลตฟอร์มของ Event
Anchor link toกรอง events ตามแพลตฟอร์มที่ถูกทริกเกอร์
- platforms - รายการแพลตฟอร์ม (เช่น [“ios”, “android”])
แอตทริบิวต์ของ Event
Anchor link toเงื่อนไข Event สามารถกรองตามค่าแอตทริบิวต์ของ event ได้ แอตทริบิวต์รองรับประเภทข้อมูลต่างๆ พร้อมตัวดำเนินการที่สอดคล้องกัน
แอตทริบิวต์ Event ประเภท Integer
Anchor link to- attribute “name” eq - แอตทริบิวต์เท่ากับค่าที่ระบุ
- attribute “name” noteq - แอตทริบิวต์ไม่เท่ากับค่าที่ระบุ
- attribute “name” gte - แอตทริบิวต์มากกว่าหรือเท่ากับค่าที่ระบุ
- attribute “name” lte - แอตทริบิวต์น้อยกว่าหรือเท่ากับค่าที่ระบุ
- attribute “name” between - แอตทริบิวต์อยู่ในช่วงที่ระบุ
- attribute “name” in - แอตทริบิวต์เท่ากับค่าใดๆ ที่ระบุ
- attribute “name” notin - แอตทริบิวต์ไม่เท่ากับค่าใดๆ ที่ระบุ
- attribute “name” any - มีการตั้งค่าใดๆ สำหรับแอตทริบิวต์
- attribute “name” notset - ไม่มีการตั้งค่าสำหรับแอตทริบิวต์
แอตทริบิวต์ Event ประเภท String
Anchor link to- attribute “name” eq - แอตทริบิวต์เท่ากับค่าที่ระบุ
- attribute “name” noteq - แอตทริบิวต์ไม่เท่ากับค่าที่ระบุ
- attribute “name” startswith - แอตทริบิวต์ขึ้นต้นด้วยคำนำหน้าที่ระบุ
- attribute “name” endswith - แอตทริบิวต์ลงท้ายด้วยคำต่อท้ายที่ระบุ
- attribute “name” contains - แอตทริบิวต์มีสตริงย่อยที่ระบุ
- attribute “name” in - แอตทริบิวต์เท่ากับค่าใดๆ ที่ระบุ
- attribute “name” notin - แอตทริบิวต์ไม่เท่ากับค่าใดๆ ที่ระบุ
- attribute “name” any - มีการตั้งค่าใดๆ สำหรับแอตทริบิวต์
- attribute “name” notset - ไม่มีการตั้งค่าสำหรับแอตทริบิวต์
แอตทริบิวต์ Event ประเภท Boolean
Anchor link to- attribute “name” eq - แอตทริบิวต์เท่ากับ true หรือ false
- attribute “name” noteq - แอตทริบิวต์ไม่เท่ากับ true หรือ false
แอตทริบิวต์ Event ประเภท Date
Anchor link to- attribute “name” eq - แอตทริบิวต์เท่ากับวันที่ที่ระบุ
- attribute “name” noteq - แอตทริบิวต์ไม่เท่ากับวันที่ที่ระบุ
- attribute “name” gte - แอตทริบิวต์หลังหรือในวันที่ที่ระบุ
- attribute “name” lte - แอตทริบิวต์ก่อนหรือในวันที่ที่ระบุ
- attribute “name” between - แอตทริบิวต์อยู่ในช่วงวันที่ที่ระบุ
- attribute “name” in - แอตทริบิวต์เท่ากับวันที่ใดๆ ที่ระบุ
- attribute “name” notin - แอตทริบิวต์ไม่เท่ากับวันที่ใดๆ ที่ระบุ
- attribute “name” daysago eq/noteq/gte/lte/between - แอตทริบิวต์เทียบกับจำนวนวันที่ผ่านมา
- attribute “name” minutesago gte/lte - แอตทริบิวต์เทียบกับจำนวนนาทีที่ผ่านมา
- attribute “name” any - มีการตั้งค่าใดๆ สำหรับแอตทริบิวต์
- attribute “name” notset - ไม่มีการตั้งค่าสำหรับแอตทริบิวต์
แอตทริบิวต์ Event ประเภท Price
Anchor link to- attribute “name” eq - แอตทริบิวต์เท่ากับค่าราคาที่ระบุ
- attribute “name” noteq - แอตทริบิวต์ไม่เท่ากับค่าราคาที่ระบุ
- attribute “name” gte - แอตทริบิวต์มากกว่าหรือเท่ากับราคาที่ระบุ
- attribute “name” lte - แอตทริบิวต์น้อยกว่าหรือเท่ากับราคาที่ระบุ
- attribute “name” between - แอตทริบิวต์อยู่ในช่วงราคาที่ระบุ
- attribute “name” in - แอตทริบิวต์เท่ากับราคาใดๆ ที่ระบุ
- attribute “name” notin - แอตทริบิวต์ไม่เท่ากับราคาใดๆ ที่ระบุ
- attribute “name” any - มีการตั้งค่าใดๆ สำหรับแอตทริบิวต์
- attribute “name” notset - ไม่มีการตั้งค่าสำหรับแอตทริบิวต์
แอตทริบิวต์ Event ประเภท List
Anchor link to- attribute “name” in - แอตทริบิวต์มีค่าใดๆ ที่ระบุ
- attribute “name” notin - แอตทริบิวต์ไม่มีค่าใดๆ ที่ระบุ
- attribute “name” any - มีการตั้งค่าใดๆ สำหรับแอตทริบิวต์
- attribute “name” notset - ไม่มีการตั้งค่าสำหรับแอตทริบิวต์
ประเภทเงื่อนไขเพิ่มเติม
Anchor link toเงื่อนไข Geo
Anchor link toกำหนดเป้าหมายอุปกรณ์ตามตำแหน่งทางภูมิศาสตร์ภายในรัศมีที่ระบุ
Syntax: Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)
เงื่อนไข BTTS
Anchor link toกำหนดเป้าหมายอุปกรณ์ตามเวลาที่ดีที่สุดในการส่งการแจ้งเตือน (ชั่วโมงของวัน, 0-23)
ตัวดำเนินการ:
- any - มีการตั้งค่าเวลาที่ดีที่สุดในการส่งใดๆ
- eq - ตรงกับชั่วโมงที่แน่นอน
- noteq - ไม่เท่ากับชั่วโมง
- gte - ชั่วโมงมากกว่าหรือเท่ากับ
- lte - ชั่วโมงน้อยกว่าหรือเท่ากับ
เงื่อนไข Updated
Anchor link toกรองอุปกรณ์ตามการประทับเวลาอัปเดตล่าสุด
ตัวดำเนินการ:
- gte - อัปเดตหลังหรือในวันที่ที่ระบุ
- lte - อัปเดตก่อนหรือในวันที่ที่ระบุ
- between - อัปเดตในช่วงวันที่
เงื่อนไข Segment
Anchor link toอ้างอิงถึง filter/segment อื่นโดยใช้รหัสของมัน
แฟล็กการมีอยู่ของอุปกรณ์ในเงื่อนไข Application
Anchor link toเงื่อนไข Application รองรับแฟล็กเพิ่มเติมเพื่อควบคุมการกรองอุปกรณ์และโทเค็น:
- with_tokens - อุปกรณ์ที่มี push notification tokens
- without_tokens - อุปกรณ์ที่ไม่มี push notification tokens
- with_devices - ผู้ใช้ที่มีอุปกรณ์ที่ลงทะเบียน
- without_devices - ผู้ใช้/โปรไฟล์ที่ไม่มีอุปกรณ์ที่ลงทะเบียน
ตัวอย่าง Filter expression
Anchor link toตัวอย่างพื้นฐาน
Anchor link to- อุปกรณ์ iOS และ Android ที่ติดตั้งแอปและมี push tokens:
A("11111-11111", ["ios","android"], [with_tokens])- อุปกรณ์ iOS และ Android ที่ติดตั้งแอปแต่ไม่มี push tokens:
A("11111-11111", ["ios","android"], [without_tokens])- อุปกรณ์ iOS และ Android ที่ติดตั้งแอป ไม่ว่าจะมี push tokens หรือไม่:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- ผู้สมัครสมาชิกแอปทั้งหมดที่ซื้อของในแอป:
AT("11111-11111", "In-App Purchase", gte, 1)ตัวอย่างขั้นสูง
Anchor link to- ผู้ใช้ในโตเกียวที่เปิดแอปใน 7 วันที่ผ่านมา:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- ผู้ใช้ที่ซื้อของเกิน $50 ใน 30 วันที่ผ่านมา:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- ผู้ใช้ที่ชื่อขึ้นต้นด้วย “J” หรือลงท้ายด้วย “e”:
T("Name", startswith, "J") + T("Name", endswith, "e")- ผู้ใช้ iOS ที่ใช้งานอยู่ภายในรัศมี 100 กม. จากนิวยอร์กที่ไม่ได้ซื้อของเมื่อเร็วๆ นี้:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- ผู้ใช้ที่มีเวลาที่ดีที่สุดในการส่งระหว่าง 9.00 น. ถึง 17.00 น.:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- ผู้ใช้ที่ทริกเกอร์ event ที่ระบุบน Android หรือ iOS ในชั่วโมงที่ผ่านมา:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- อุปกรณ์ที่อัปเดตใน 3 เดือนที่ผ่านมาและมีเวอร์ชันแอป 4.2 หรือสูงกว่า:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")