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

این سند فیلدهای مهم خودرو را که می‌توانید هنگام ایجاد و مدیریت خودروها به‌روز کنید پوشش می‌دهد.

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

برای فهرست کامل فیلدهای خودرو، به این بخش مراجعه کنید:

فیلد مشخصه‌های خودرو

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

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

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

به‌روزرسانی مشخصه‌های خودرو

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

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

نمونه به‌روزرسانی فیلدهای وسیله نقلیه

این بخش نحوه به‌روزرسانی فیلدهای وسیله نقلیه را بااستفاده از UpdateDeliveryVehicleRequest نشان می‌دهد که شامل update_mask برای نشان دادن فیلدهای موردنظر برای به‌روزرسانی است. برای جزئیات، به مستندات «میان‌گیری پروتکل» درباره ماسک‌های فیلد مراجعه کنید.

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

مثال: تنظیم مشخصه سفارشی

این مثال مشخصه جدیدی را مشخص می‌کند: 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

قدم بعدی چیست