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