Koşullar

Veri modeli nesnelerinden alınan değerleri kullanarak sahnelerde koşullu mantık yürütebilirsiniz. Aşağıdaki bölümlerde koşullar için geçerli söz dizimi açıklanmaktadır.

Mantıksal operatörler

Operatör Açıklama
&& Mantıksal VE. İç ifadeler yinelemeli olarak değerlendirilir ve herhangi bir ifade yanlış olarak değerlendirilirse değerlendirme kısa devreye alınır.
|| Mantıksal VEYA. İç ifadeler yinelemeli olarak değerlendirilir ve herhangi bir ifade doğru olarak değerlendirilirse değerlendirme kısa devreye alınır
! Mantıksal DEĞİL. İç ifadenin değerlendirmesi reddedildi

Sayı ve dize operatörleri

Aşağıdaki sayısal operatörler ve dize operatörleri desteklenir:

Operatör Açıklama
+ Sayı veya dize birleştirme
- Sayıları çıkarma
* Sayıları çarpma
/ Sayıları bölme

Boole'lar

Aşağıdaki sabit boole'ler desteklenir:

Sabit Açıklama
true Küçük harfle yazılmalıdır
false Küçük harfle yazılmalıdır
!false true olarak değerlendirilir. Küçük harfle yazılmalıdır.

Karşılaştırma operatörleri

Aşağıdaki karşılaştırma operatörleri sağlanmıştır:

Operatör Açıklama
== Şuna eşittir:
!= Eşit değil
< Küçüktür
<= Küçük veya eşittir
> Büyüktür
>= Büyük veya eşittir

Listeler ve haritalar

session.params.myList adlı bir liste verildiğinde:

Söz dizimi Açıklama
x in session.params.myList x değeri session.params.myList içindeyse doğru değerini döndürür
myList[x] myList değerinin x dizinindeki değeri döndürür
size(session.params.myList) Bir listenin boyutunu döndürür

session.params.myMap adlı bir harita verildiğinde:

Söz dizimi Açıklama
session.params.myMap == {"one": 1, "two":2} Haritalar eşitse true sonucunu döndürür
session['params']['myMap']['one'] Belirtilen anahtarla değeri döndürür
size(session.params.myMap) Harita boyutunu döndürür

Veri modeli

Sahne koşullarında aşağıdaki nesneler kullanılabilir:

Söz dizimi Açıklama
intent Eşleşen intent parametresi verileri
scene Slot doldurma verileri
session Oturum depolama verileri
user Kullanıcı depolama alanı verileri
home Ev depolama alanı verileri
device Cihaz yeteneği ve konum verileri
canvas Tuval durumu verileri
resources Yerelleştirilmiş proje kaynakları (ses, resimler, dizeler vb.) verileri

Aşağıda, JSON'deki tam veri modelinin örnek snippet'i verilmiştir:

{
  "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>"
    }
  }
}

Kullanım referansı

Aşağıdaki söz dizimi örneklerinde session.params nesnesiyle çalıştığınız varsayılır:

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

Aşağıdaki koşullu işlemleri gerçekleştirebilirsiniz:

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