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 các 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 | Mô tả |
---|---|
&& |
Logic AND. Biểu thức bên trong được đánh giá lặp lại và kết quả đánh giá bị ngắn mạch nếu có bất kỳ biểu thức nào được đánh giá là false. |
|| |
Hàm logic OR. Biểu thức bên trong được đánh giá lặp lại và đánh giá bị ngắn mạch nếu có bất kỳ biểu thức nào có giá trị là true |
! |
Logic NOT. Việc đánh giá biểu thức bên trong bị phủ định |
Toán tử số và toán tử chuỗi
Các toán tử số và toán tử chuỗi sau được hỗ trợ:
Đơn vị tổ chức | Mô tả |
---|---|
+ |
Thêm số hoặc nối chuỗi |
- |
Trừ số |
* |
Nhân các số |
/ |
Chia số |
Boolean
Các boolean hằng số sau được hỗ trợ:
Hằng số | Mô tả |
---|---|
true |
Phải là chữ thường |
false |
Phải là chữ thường |
!false |
Đánh giá cho true . Phải là chữ thường. |
Toán tử so sánh
Bạn có thể sử dụng các toán tử so sánh sau đây:
Đơn vị tổ chức | 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 đồ
Cung cấp một danh sách có tên session.params.myList
:
Cú pháp | 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 là myList |
size(session.params.myList) |
Trả về kích thước của một danh sách |
Cho sẵn bản đồ có tên session.params.myMap
:
Cú pháp | Mô tả |
---|---|
session.params.myMap == {"one": 1, "two":2} |
Trả về true nếu các ánh xạ 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ể dùng các đối tượng sau trong điều kiện cảnh:
Cú pháp | 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 về bộ nhớ của người dùng |
home |
Dữ liệu về bộ nhớ tại nhà |
device |
Dữ liệu về chức năng và 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 của 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 đây giả định rằng 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 đây:
// 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