شرایط

شما می توانید منطق شرطی را در صحنه ها با استفاده از مقادیر اشیاء مدل Data انجام دهید. بخش های زیر نحو معتبر برای شرایط را شرح می دهند.

عملگرهای منطقی

اپراتور شرح
&& منطقی و. عبارات درونی به صورت تکراری ارزیابی می‌شوند و اگر هر عبارتی نادرست ارزیابی شود، ارزیابی کوتاه می‌شود.
|| منطقی OR. عبارات درونی به صورت تکراری ارزیابی می شوند و اگر هر عبارتی درست ارزیابی شود، ارزیابی کوتاه می شود.
! منطقی نه. ارزیابی بیان درونی نفی می شود

عملگرهای عددی و رشته ای

عملگرهای عددی و رشته ای زیر پشتیبانی می شوند:

اپراتور شرح
+ اعداد یا الحاق رشته ها را اضافه کنید
- اعداد را کم کنید
* اعداد را ضرب کن
/ اعداد را تقسیم کنید

بولین ها

بولین های ثابت زیر پشتیبانی می شوند:

ثابت شرح
true باید با حروف کوچک باشد
false باید با حروف کوچک باشد
!false به true ارزیابی می کند. باید با حروف کوچک باشد.

عملگرهای مقایسه

عملگرهای مقایسه زیر ارائه شده است:

اپراتور شرح
== برابر است
!= برابر نیست
< کمتر از
<= کمتر از مساوی
> بزرگتر از
>= بزرگتر از مساوی

لیست ها و نقشه ها

لیستی به نام session.params.myList داده می شود:

نحو شرح
x in session.params.myList اگر مقدار x در session.params.myList باشد true برمی گرداند
myList[x] مقدار شاخص x از myList را برمی‌گرداند
size(session.params.myList) اندازه یک لیست را برمی گرداند

نقشه ای به نام session.params.myMap داده می شود:

نحو شرح
session.params.myMap == {"one": 1, "two":2} اگر نقشه‌ها برابر باشند، true را برمی‌گرداند
session['params']['myMap']['one'] مقدار را با کلید مشخص شده برمی گرداند
size(session.params.myMap) اندازه نقشه را برمی گرداند

مدل داده

اشیاء زیر را می توان در شرایط صحنه استفاده کرد:

نحو شرح
intent داده‌های پارامتر هدف منطبق
scene داده های پر کردن اسلات
session داده های ذخیره سازی جلسه
user داده های ذخیره سازی کاربر
home داده های ذخیره سازی خانه
device قابلیت دستگاه و داده های مکان
canvas داده های حالت بوم
resources منابع پروژه محلی (صوتی، تصاویر، رشته ها، و غیره) داده ها

نمونه زیر نمونه ای از مدل داده کامل در 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>"
    }
  }
}

مرجع استفاده

مثال‌های دستوری زیر فرض می‌کنند که شما با شی session.params کار می‌کنید:

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

می توانید عملیات مشروط زیر را انجام دهید:

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