الشروط

يمكنك تنفيذ المنطق الشرطي في المشاهد باستخدام قيم من عناصر نماذج البيانات. تصف الأقسام التالية بناء الجملة الصالح للشروط.

العوامل المنطقية

مُشغِّل الوصف
&& منطقية AND. يتم تقييم التعبيرات الداخلية بالتكرار، تقييم قصير إذا تم تقييم أي تعبير إلى false.
|| المنطقي OR. يتم تقييم التعبيرات الداخلية بالتكرار، تقييم قصير إذا تم تقييم أي تعبير إلى true
! منطقية NOT. تم إلغاء تقييم التعبير الداخلي.

عوامل التشغيل العددية والسلسلة

تتوفر عوامل التشغيل الرقمية والسلسلة التالية:

مُشغِّل الوصف
+ إضافة أرقام أو تسلسل سلاسل
- طرح الأعداد
* ضرب الأرقام
/ قسمة الأعداد

قيم منطقية

القيم المنطقية الثابتة التالية متاحة:

ثابت الوصف
true يجب أن تكون الأحرف صغيرة.
false يجب أن تكون الأحرف صغيرة.
!false يتم تقييمه بقيمة true. يجب أن تكون الأحرف صغيرة.

عوامل تشغيل المقارنة

يتم توفير عوامل تشغيل المقارنة التالية:

مُشغِّل الوصف
== تساوي
!= لا يساوي
< أقل من
<= أقل من يساوي
> أكبر من
>= أكبر من يساوي

القوائم والخرائط

تم إنشاء قائمة باسم "session.params.myList":

البنية الوصف
x in session.params.myList عرض true إذا كانت القيمة x في session.params.myList
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