เงื่อนไข

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

โอเปอเรเตอร์ทางตรรกะ

โอเปอเรเตอร์ คำอธิบาย
&& ตรรกะ AND นิพจน์ภายในจะได้รับการประเมินซ้ำๆ และ การประเมินจะถูกเรียกใช้แบบลัดวงจร หากนิพจน์ใดๆ ถูกประเมินได้ว่าเป็น "เท็จ"
|| แบบตรรกะ OR นิพจน์ภายในจะได้รับการประเมินซ้ำๆ และ การประเมินจะถูกลัดวงจรหากนิพจน์ใดๆ ประเมินได้ว่าเป็น "จริง"
! ตรรกะไม่ การประเมินสีหน้าภายในถูกปฏิเสธ

โอเปอเรเตอร์ตัวเลขและสตริง

ระบบรองรับโอเปอเรเตอร์ตัวเลขและสตริงต่อไปนี้

โอเปอเรเตอร์ คำอธิบาย
+ เพิ่มตัวเลขหรือการเชื่อมโยงสตริง
- ลบตัวเลข
* คูณตัวเลข
/ หารตัวเลข

บูลีน

ระบบรองรับบูลีนคงที่ต่อไปนี้

ค่าคงที่ คำอธิบาย
true ต้องเป็นตัวพิมพ์เล็ก
false ต้องเป็นตัวพิมพ์เล็ก
!false ประเมินผลเป็น true ต้องเป็นตัวพิมพ์เล็ก

โอเปอเรเตอร์การเปรียบเทียบ

โอเปอเรเตอร์การเปรียบเทียบจะมีให้ดังนี้

โอเปอเรเตอร์ คำอธิบาย
== เท่ากับ
!= ไม่เท่ากับ
< น้อยกว่า
<= น้อยกว่าเท่ากับ
> มากกว่า
>= มากกว่าเท่ากับ

รายการและแผนที่

ได้รับรายการชื่อ session.params.myList:

ไวยากรณ์ คำอธิบาย
x in session.params.myList แสดงค่า "จริง" หากค่า x อยู่ใน วันที่ session.params.myList
myList[x] แสดงผลค่าที่ดัชนี x ของ myList
size(session.params.myList) แสดงขนาดของรายการ

ได้รับแผนที่ชื่อ session.params.myMap:

ไวยากรณ์ คำอธิบาย
session.params.myMap == {"one": 1, "two":2} แสดงค่า true ถ้าแผนที่เท่ากัน
session['params']['myMap']['one'] แสดงค่าที่มีคีย์ที่ระบุ
size(session.params.myMap) แสดงขนาดแผนที่

โมเดลข้อมูล

วัตถุต่อไปนี้สามารถใช้ภายในเงื่อนไขของฉากได้

ไวยากรณ์ คำอธิบาย
intent ข้อมูลพารามิเตอร์ Intent ที่ตรงกัน
scene ข้อมูลการเติมช่องโฆษณา
session ข้อมูลพื้นที่เก็บข้อมูลเซสชัน
user ข้อมูลพื้นที่เก็บข้อมูลของผู้ใช้
home ข้อมูลพื้นที่เก็บข้อมูลในบ้าน
device ความสามารถและข้อมูลตำแหน่งของอุปกรณ์
canvas ข้อมูลสถานะ Canvas
resources แหล่งข้อมูลโครงการที่แปลแล้ว (เสียง รูปภาพ สตริง ฯลฯ)

ตัวอย่างข้อมูลโค้ดโมเดลข้อมูลแบบเต็มใน JSON มีดังนี้

{
  "intent": {
    "params": {
      "<param_name>": {
        "original": "five people",
        "resolved": 5
      }
    }
   },
  "session": {
    "params": {
      "<session_params_key>": "<session_params_value>"
    }
  },
  "scene": {
    "slots": {
      "status": "FINAL",
      "params": {
        "<slot_name>": "<slot_value>"
      }
    }
  },
  "user": {
    "params": {
      "<user_params_key>": "<user_params_value>"
    },
    "permissions": [
      "DEVICE_PRECISE_LOCATION"
    ],
    "accountLinkingStatus": "LINKED",
    "verificationStatus": "VERIFIED",
    "lastSeenTime": {
      "seconds": 123,
      "nanos": 456
    },
    "engagement": {
      "pushNotificationIntents": [
        "intent1",
        "intent2"
      ]
    }
  },
  "home": {
    "params": {
      "<home_params_key>": "<home_params_value>"
    }
  },
  "canvas": {
    "state": {
      "<canvas_state_key>": "<canvas_state_value>"
    }
  },
  "device": {
    "capabilities": [
      "SPEECH",
      "RICH_RESPONSE",
      "LONG_FORM_AUDIO",
      "INTERACTIVE_CANVAS"
    ],
    "currentLocation": {
      "coordinates": {
        "latitude": 37.422,
        "longitude": -122.084
      },
      "postalAddress": {
        "revision": 0,
        "regionCode": "US",
        "languageCode": "en",
        "postalCode": "94043",
        "sortingCode": "",
        "administrativeArea": "California",
        "locality": "Mountain View",
        "sublocality": "",
        "addressLines": ["1600 Amphitheatre Parkway"],
        "recipients": [],
        "organization": ""
      }
    }
  },
  "resources": {
    "strings": {
      "<resource_string_key>": "<resource_string_value>"
    },
    "images": {
      "<resource_image_key>": "<resource_image_value>"
    }
  }
}

ข้อมูลอ้างอิงการใช้งาน

ตัวอย่างไวยากรณ์ต่อไปนี้จะถือว่าคุณกำลังทำงาน ที่มี session.params ออบเจ็กต์:

session.params = {
  "flag": true,
  "count": 10,
  "name": "john smith",
  "myList": [1, 2, 3],
  "myMap": {"one": 1, "two":2}
}

คุณดําเนินการแบบมีเงื่อนไขต่อไปนี้ได้

// numbers and boolean logic
session.params.count > 0 && session.params.count < 100    // AND
session.params.count == 0 || session.params.count != 5    // OR
!(session.params.count <= 0)         // NOT

// booleans
!false                      // true constant
session.params.flag         // boolean variable
session.params.flag == true // explicitly compare with true constant

// strings
session.params.name == "john smith"  // double quotes supported
session.params.name == 'john smith'  // single quotes supported
session.params.name.contains("john") // substring
session.params.name + "!!!" == "john smith!!!" // string concatenation
session.params.name < "abc"          // compares lexicographically
size(session.params.name) == 10      // length of string

// lists
1 in session.params.myList        // "contains in list" operator
session.params.myList[0] == 1     // "index into list" operator
size(session.params.myList) == 3  // returns number of elements in the list

// maps
session.params.myMap == {"one": 1, "two":2} // compare map with json
session['params']['myMap']['one'] == 1      // index using square brackets
size(session.params.myMap) == 2             // number of entries in the map