الشروط

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

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

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

العوامل العددية والسلاسل

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

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

قيم منطقية

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

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

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

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

المؤثِّر الوصف
== يساوي
!= لا يساوي
< أقل من
<= أقل من يساوي
> أكبر من
>= أكبر من يساوي

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

بناءً على قائمة باسم session.params.myList:

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