Kondisi

Anda dapat menjalankan logika kondisional dalam scene menggunakan nilai dari Data model (model data). Bagian berikut menjelaskan sintaks yang valid untuk kondisi.

Operator logika

Operator Deskripsi
&& Logika AND. Ekspresi {i>inner<i} dievaluasi secara iteratif, dan terjadi hubungan pendek jika ada ekspresi bernilai false (salah).
|| Logika OR. Ekspresi {i>inner<i} dievaluasi secara iteratif, dan terjadi hubungan pendek jika ada ekspresi bernilai benar (true)
! Logika NOT. Evaluasi ekspresi {i>inner<i} dikesampingkan

Operator numerik dan string

Operator numerik dan string berikut didukung:

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

Boolean

Boolean konstanta berikut didukung:

Konstanta Deskripsi
true Harus berupa huruf kecil
false Harus berupa huruf kecil
!false Mengevaluasi ke true. Harus huruf kecil.

Operator perbandingan

Operator perbandingan berikut tersedia:

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

Daftar dan peta

Daftar yang diberi nama session.params.myList:

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

Dengan 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 suasana:

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 sintaks berikut mengasumsikan bahwa Anda bekerja dengan 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