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

ภาษาการแบ่งส่วน (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 to

Filter 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 ได้:

รวม 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
  1. อุปกรณ์ iOS และ Android ที่ติดตั้งแอปและมี push tokens:
A("11111-11111", ["ios","android"], [with_tokens])
  1. อุปกรณ์ iOS และ Android ที่ติดตั้งแอปแต่ไม่มี push tokens:
A("11111-11111", ["ios","android"], [without_tokens])
  1. อุปกรณ์ iOS และ Android ที่ติดตั้งแอป ไม่ว่าจะมี push tokens หรือไม่:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])
  1. ผู้สมัครสมาชิกแอปทั้งหมดที่ซื้อของในแอป:
AT("11111-11111", "In-App Purchase", gte, 1)

ตัวอย่างขั้นสูง

Anchor link to
  1. ผู้ใช้ในโตเกียวที่เปิดแอปใน 7 วันที่ผ่านมา:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)
  1. ผู้ใช้ที่ซื้อของเกิน $50 ใน 30 วันที่ผ่านมา:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)
  1. ผู้ใช้ที่ชื่อขึ้นต้นด้วย “J” หรือลงท้ายด้วย “e”:
T("Name", startswith, "J") + T("Name", endswith, "e")
  1. ผู้ใช้ iOS ที่ใช้งานอยู่ภายในรัศมี 100 กม. จากนิวยอร์กที่ไม่ได้ซื้อของเมื่อเร็วๆ นี้:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)
  1. ผู้ใช้ที่มีเวลาที่ดีที่สุดในการส่งระหว่าง 9.00 น. ถึง 17.00 น.:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)
  1. ผู้ใช้ที่ทริกเกอร์ event ที่ระบุบน Android หรือ iOS ในชั่วโมงที่ผ่านมา:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)
  1. อุปกรณ์ที่อัปเดตใน 3 เดือนที่ผ่านมาและมีเวอร์ชันแอป 4.2 หรือสูงกว่า:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")