Điều kiện

Bạn có thể thực hiện logic có điều kiện trong các cảnh bằng cách sử dụng giá trị từ đối tượng Mô hình dữ liệu. Các phần sau đây mô tả cú pháp hợp lệ cho các điều kiện.

Toán tử logic

Đơn vị tổ chức Nội dung mô tả
&& Hàm logic AND. Biểu thức bên trong được đánh giá lặp lại và quá trình đánh giá sẽ bị đoản mạch nếu có bất kỳ biểu thức nào được đánh giá là false.
|| Logic OR. Biểu thức bên trong được đánh giá lặp đi lặp lại và quá trình đánh giá sẽ bị đoản mạch nếu bất kỳ biểu thức nào được đánh giá là true (đúng)
! Logic KHÔNG. Việc đánh giá biểu thức bên trong bị bỏ qua

Toán tử số và toán tử chuỗi

Hỗ trợ các toán tử số và chuỗi sau:

Đơn vị tổ chức Nội dung mô tả
+ Cộng các số hoặc nối chuỗi
- Trừ số
* Nhân các số
/ Chia số

Boolean

Hệ thống hỗ trợ các giá trị boolean không đổi sau đây:

Hằng số Nội dung mô tả
true Phải là chữ thường
false Phải là chữ thường
!false Đánh giá thành true. Phải là chữ thường.

Toán tử so sánh

Cung cấp các toán tử so sánh sau:

Đơn vị tổ chức Nội dung mô tả
== Bằng
!= Không bằng
< Nhỏ hơn
<= Nhỏ hơn hoặc bằng
> Lớn hơn
>= Lớn hơn hoặc bằng

Danh sách và bản đồ

Cho một danh sách có tên session.params.myList:

Cú pháp Nội dung mô tả
x in session.params.myList Trả về true nếu giá trị x nằm trong session.params.myList
myList[x] Trả về giá trị tại chỉ mục x của myList
size(session.params.myList) Trả về kích thước của danh sách

Cho một bản đồ có tên session.params.myMap:

Cú pháp Nội dung mô tả
session.params.myMap == {"one": 1, "two":2} Trả về true nếu các bản đồ bằng nhau
session['params']['myMap']['one'] Trả về giá trị có khoá được chỉ định
size(session.params.myMap) Trả về kích thước bản đồ

Mô hình dữ liệu

Bạn có thể sử dụng các đối tượng sau đây trong điều kiện cảnh:

Cú pháp Nội dung mô tả
intent Dữ liệu về thông số ý định đã so khớp
scene Dữ liệu Lấp đầy khe
session Dữ liệu Bộ nhớ phiên
user Dữ liệu bộ nhớ của người dùng
home Dữ liệu bộ nhớ trong nhà
device Chức năng và dữ liệu vị trí của thiết bị
canvas Dữ liệu trạng thái canvas
resources Dữ liệu tài nguyên dự án đã bản địa hoá (âm thanh, hình ảnh, chuỗi, v.v.)

Sau đây là một đoạn mã mẫu về mô hình dữ liệu đầy đủ trong 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>"
    }
  }
}

Tài liệu tham khảo về cách sử dụng

Các ví dụ về cú pháp sau giả định bạn đang làm việc với đối tượng session.params:

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

Bạn có thể thực hiện các thao tác có điều kiện sau:

// 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