Kondisi

Anda dapat menjalankan logika kondisional dalam scene menggunakan nilai dari objek Model data. Bagian berikut menjelaskan sintaksis yang valid untuk kondisi.

Operator logika

Operator Deskripsi
&& Logika AND. Ekspresi dalam dievaluasi secara iteratif, dan evaluasi akan melalui hubungan pendek jika salah satu ekspresi bernilai salah.
|| Logika OR. Ekspresi dalam dievaluasi secara iteratif, dan evaluasi akan melalui hubungan pendek jika salah satu ekspresi bernilai benar (true)
! Logika NOT. Evaluasi ekspresi internal ditiadakan

Operator numerik dan string

Operator numerik dan string berikut ini didukung:

Operator Deskripsi
+ Menambahkan angka atau penyambungan string
- Mengurangi bilangan
* Mengalikan bilangan
/ Membagi angka

Boolean

Boolean konstan berikut didukung:

Konstanta Deskripsi
true Harus huruf kecil
false Harus huruf kecil
!false Bernilai true. Harus huruf kecil.

Operator perbandingan

Operator perbandingan berikut disediakan:

Operator Deskripsi
== Sama dengan
!= Tidak sama
< Kurang dari
<= Kurang dari atau sama dengan
> Lebih dari
>= Lebih dari atau sama dengan

Daftar dan peta

Dengan daftar bernama session.params.myList:

Sintaksis Deskripsi
x in session.params.myList Menampilkan true jika nilai x berada dalam session.params.myList
myList[x] Menampilkan nilai pada indeks x dari myList
size(session.params.myList) Menampilkan ukuran daftar

Berdasarkan peta bernama session.params.myMap:

Sintaksis Deskripsi
session.params.myMap == {"one": 1, "two":2} Menampilkan true jika peta sama
session['params']['myMap']['one'] Menampilkan nilai dengan kunci yang ditentukan
size(session.params.myMap) Menampilkan ukuran peta

Model data

Objek berikut dapat digunakan dalam kondisi scene:

Sintaksis Deskripsi
intent Data parameter intent yang cocok
scene Data pengisian slot
session Data Penyimpanan sesi
user Data penyimpanan pengguna
home Data Penyimpanan rumah
device Data kemampuan dan lokasi perangkat
canvas Data status kanvas
resources Data resource project yang dilokalkan (audio, gambar, string, dll.)

Berikut adalah contoh cuplikan model data lengkap di 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>"
    }
  }
}

Referensi penggunaan

Contoh sintaksis berikut mengasumsikan bahwa Anda menggunakan objek session.params:

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

Anda dapat melakukan operasi bersyarat berikut:

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