Condizioni

Puoi eseguire la logica condizionale nelle scene utilizzando i valori degli oggetti Modello dei dati. Le seguenti sezioni descrivono la sintassi valida per le condizioni.

Operatori logici

Operatore Descrizione
&& AND logico. Le espressioni interne vengono valutate in modo iterativo e la valutazione è in cortocircuito se una qualsiasi espressione restituisce false.
|| OR logico. Le espressioni interne vengono valutate in modo iterativo e la valutazione è in cortocircuito se una qualsiasi espressione restituisce true.
! NOT logico. La valutazione dell'espressione interna è negata

Operatori numerici e di stringa

Sono supportati i seguenti operatori numerici e di stringa:

Operatore Descrizione
+ Aggiungere numeri o concatenazione di stringhe
- Sottrarre numeri
* Moltiplicare numeri
/ Dividere numeri

Booleano

Sono supportati i seguenti valori booleani costanti:

Costante Descrizione
true Deve essere in minuscolo
false Deve essere in minuscolo
!false Restituisce true. Deve essere in minuscolo.

Operatori di confronto

Vengono forniti i seguenti operatori di confronto:

Operatore Descrizione
== È uguale a
!= Diverso da
< Minore di
<= Minore o uguale a
> Maggiore di
>= Maggiore o uguale a

Elenchi e mappe

Data un elenco denominato session.params.myList:

Sintassi Descrizione
x in session.params.myList Restituisce true se il valore x è in session.params.myList
myList[x] Restituisce il valore all'indice x di myList
size(session.params.myList) Restituisce la dimensione di un elenco

Data una mappa denominata session.params.myMap:

Sintassi Descrizione
session.params.myMap == {"one": 1, "two":2} Restituisce true se le mappe sono uguali
session['params']['myMap']['one'] Restituisce il valore con la chiave specificata
size(session.params.myMap) Restituisce le dimensioni della mappa

Modello dei dati

I seguenti oggetti possono essere utilizzati nelle condizioni della scena:

Sintassi Descrizione
intent Dati relativi al parametro per intenzione con corrispondenza
scene Dati di riempimento slot
session Dati dello spazio di archiviazione della sessione
user Dati sullo spazio di archiviazione dell'utente
home Dati Spazio di archiviazione di Google Home
device Dati sulla funzionalità e sulla posizione del dispositivo
canvas Dati dello stato della canvas
resources Dati di risorse di progetto localizzate (audio, immagini, stringhe e così via)

Di seguito è riportato uno snippet di esempio del modello completo dei dati in 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>"
    }
  }
}

Riferimento per l'utilizzo

I seguenti esempi di sintassi presupponeno che tu stia utilizzando l'oggetto session.params:

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

Puoi eseguire le seguenti operazioni condizionali:

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