Vous pouvez exécuter une logique conditionnelle dans des scènes en utilisant les valeurs des Objets Modèle de données Les sections suivantes décrivent la syntaxe valide pour les conditions.
Opérateurs logiques
Opérateur | Description |
---|---|
&& |
Logical AND (Opérateur logique ET) Les expressions internes sont évaluées de manière itérative et l'évaluation est court-circuit si une expression prend la valeur false. |
|| |
Opérateur logique OU. Les expressions internes sont évaluées de manière itérative et l'évaluation est mise en court-circuit si une expression prend la valeur "true" |
! |
Opérateur logique NOT. L'évaluation de l'expression interne est annulée. |
Opérateurs numériques et de chaîne
Les opérateurs numériques et de chaîne suivants sont acceptés:
Opérateur | Description |
---|---|
+ |
Ajouter des nombres ou une concaténation de chaînes |
- |
Soustraire des nombres |
* |
Multiplier des nombres |
/ |
Diviser des nombres |
Booléen
Les constantes booléennes suivantes sont acceptées:
Constante | Description |
---|---|
true |
Doit être en minuscules |
false |
Doit être en minuscules |
!false |
Prend la valeur true . Doit être en minuscules. |
Opérateurs de comparaison
Les opérateurs de comparaison suivants sont fournis:
Opérateur | Description |
---|---|
== |
Est égal(e) à |
!= |
Différent de |
< |
Inférieur à |
<= |
Inférieur ou égal à |
> |
Supérieur à |
>= |
Supérieur ou égal à |
Listes et cartes
À partir d'une liste nommée session.params.myList
:
Syntaxe | Description |
---|---|
x in session.params.myList |
Renvoie "true" si la valeur x est comprise dans
session.params.myList |
myList[x] |
Renvoie la valeur avec l'indice x de myList |
size(session.params.myList) |
Affiche la taille d'une liste. |
À partir d'une carte nommée session.params.myMap
:
Syntaxe | Description |
---|---|
session.params.myMap == {"one": 1, "two":2} |
Renvoie true si la valeur de la carte est égale à |
session['params']['myMap']['one'] |
Renvoie la valeur avec la clé spécifiée |
size(session.params.myMap) |
Affiche la taille de la carte |
Modèle de données
Les objets suivants peuvent être utilisés dans des conditions de scène:
Syntaxe | Description |
---|---|
intent |
Données du paramètre d'intent correspondant |
scene |
Données de remplissage d'emplacements |
session |
Données de stockage de session |
user |
Données d'espace de stockage utilisateur |
home |
Données d'espace de stockage personnel |
device |
Données sur la fonction et la localisation de l'appareil |
canvas |
Données d'état du canevas |
resources |
Données de ressources de projet localisées (audio, images, chaînes, etc.) |
Voici un exemple d'extrait du modèle de données complet au format 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>"
}
}
}
Référence d'utilisation
Les exemples de syntaxe suivants
supposent que vous travaillez
avec l'objet session.params
:
session.params = {
"flag": true,
"count": 10,
"name": "john smith",
"myList": [1, 2, 3],
"myMap": {"one": 1, "two":2}
}
Vous pouvez effectuer les opérations conditionnelles suivantes:
// 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