เงื่อนไข

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

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

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

โอเปอเรเตอร์ที่เป็นตัวเลขและสตริง

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

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

บูลีน

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

ค่าคงที่ คำอธิบาย
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