Đ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 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 xmyList
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ăngvị 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