فیلدهای وسیله نقلیه تحویل را به روز کنید

این سند زمینه های مهم وسیله نقلیه را که می توانید هنگام ایجاد و مدیریت وسایل نقلیه به روز کنید، پوشش می دهد.

  • type : نوع این وسیله نقلیه تحویلی. این بر مسیرهای ایجاد شده برای این وسیله نقلیه تأثیر می گذارد.
  • attributes[] : یک آرایه گزینه از نوع DeliveryVehicleAttribute . از آنها برای تعریف معیارهای سفارشی برای وسایل نقلیه در سرویس خود استفاده کنید تا رفتار فیلتر هنگام جستجو یا فهرست کردن وسایل نقلیه را بهبود ببخشید.

برای یک لیست کامل از فیلدهای خودرو، نگاه کنید به:

فیلد ویژگی های خودرو

از فیلد attributes خودرو برای ایجاد معیارهای سفارشی استفاده کنید تا به مصرف کنندگان یا اپراتورهای ناوگان خود امکان دهید وسایل نقلیه موجود در ناوگان شما را در طیف گسترده تری از معیارهای جستجو پیدا کنند. این قابلیت‌های برنامه‌های شما را برای ارائه تطابق بهتر خودرو نسبت به آنچه که از معیارهای جستجوی صرفاً بر اساس سایر زمینه‌های خودرو انجام می‌دهید، افزایش می‌دهد. هر وسیله نقلیه می تواند حداکثر 100 ویژگی داشته باشد و هر یک باید یک کلید منحصر به فرد داشته باشد. مقادیر می توانند رشته ها، بولی ها یا اعداد باشند.

به عنوان مثال، می‌توانید یک ویژگی سفارشی به نام zone را اعلام کنید تا مشخص کنید خودروهای تحویل شما در کدام منطقه از شهر کار می‌کنند. از مقادیر رشته‌ای مانند موارد زیر برای نمایش مناطق مختلف استفاده می‌کنید: 1B ، 2C و 3A . سپس می توانید از یک فیلتر در Fleet Tracking استفاده کنید تا فقط وسایل نقلیه کار در یک منطقه خاص را به اپراتور مسئول آن منطقه نشان دهید.

با این حال، مقادیر ویژگی های سفارشی نباید متقابلاً منحصر به فرد باشند. شما ممکن است از معیارهایی مانند در دسترس بودن در شب و دارای یخچال استفاده کنید. هر یک از اینها می تواند یک ویژگی سفارشی جداگانه باشد که از مقادیر بولی استفاده می کند. یک وسیله نقلیه داده شده می تواند هر سه این ویژگی های سفارشی را به همراه صفت سفارشی منطقه به مقدار رشته مناسب اختصاص دهد.

ویژگی های خودرو را به روز کنید

هر کلید attributes فقط می تواند یک مقدار در هر وسیله نقلیه داشته باشد. شما با استفاده از attributes در فیلد ماسک، ویژگی‌های خودروی سفارشی را اعلام می‌کنید و سپس مقادیر را بر اساس روش زیر ارائه می‌کنید.

این UpdateDeliveryVehicle API اجازه به روز رسانی تنها یک ویژگی را نمی دهد. هنگام استفاده از این روش، هرگونه استفاده از فیلد attributes در ماسک فیلد منجر به اعلام مجدد کل مجموعه ویژگی های خودرو برای وسیله نقلیه می شود. این منجر به بازنویسی هر ویژگی از قبل موجود می شود که به صراحت در ماسک فیلد گنجانده نشده است. اگر از این روش برای اعلام یک ویژگی سفارشی جدید استفاده می‌کنید، باید هر ویژگی سفارشی را که می‌خواهید خودرو حفظ کند، مجدداً اعلام کنید. اگر attributes موجود در ماسک فیلد را حذف کنید، این روش ویژگی‌های سفارشی موجود را همانطور که قبلاً برای وسیله نقلیه تعریف شده بود، باقی می‌گذارد. اگر attributes در ماسک فیلد استفاده می‌کنید، اما بدون تنظیم مقادیر، این معادل حذف تمام ویژگی‌های سفارشی از خودرو است.

نمونه فیلدهای خودرو را به روز کنید

این بخش نحوه به‌روزرسانی فیلدهای خودرو را با استفاده از UpdateDeliveryVehicleRequest نشان می‌دهد که شامل یک update_mask برای نشان دادن اینکه کدام فیلدها باید به‌روزرسانی شوند. برای جزئیات به مستندات Protocol Buffers در زمینه ماسک‌ها مراجعه کنید.

به‌روزرسانی فیلدهای غیر از last_location به امتیازات مدیریت Fleet Engine Delivery نیاز دارد.

مثال: تنظیم ویژگی سفارشی

این مثال یک ویژگی جدید را مشخص می کند: zone . همانطور که قبلاً در به‌روزرسانی ویژگی‌های خودرو ذکر شد، به‌روزرسانی فیلد attributes با استفاده از این رویکرد، شما را ملزم می‌کند که تمام ویژگی‌های سفارشی را که می‌خواهید حفظ کنید، نشان دهید. بنابراین مثال یک مقدار available-at-night را نشان می‌دهد که نوشته شده است تا از بازنویسی آن در طول عملیات به‌روزرسانی که فیلد attributes مشخص می‌کند، محافظت کند.

به مرجع providers.deliveryVehicles.patch مراجعه کنید.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .addAllAttributes(ImmutableList.of(
          DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
          DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("attributes"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

استراحت

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
      "attributes": [
        {"key": "zone", "value": "1B"},
        {"key": "available-at-night", "value": "true"}
      ]
  }
  EOM

بعدش چی