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

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

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

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

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

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

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

بااین‌حال، مقادیر مشخصه سفارشی لازم نیست مانعه‌الجمع باشند. ممکن است از معیارهایی مثل available-at-night (دردسترس در شب) و has-refrigeration (دارای یخچال) استفاده کنید. هریک از این موارد می‌تواند صفت سفارشی جداگانه‌ای باشد که از مقادیر منطقی استفاده می‌کند. هر سه این مشخصه‌های سفارشی را می‌توان به خودروی خاصی اختصاص داد و مشخصه سفارشی منطقه را نیز می‌توان روی مقدار رشته‌ای مناسب تنظیم کرد.

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

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

این میانای برنامه‌سازی کاربردی UpdateDeliveryVehicle اجازه نمی‌دهد فقط یک مشخصه به‌روز شود. هنگام استفاده از این روش، هرگونه استفاده از فیلد 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

قدم بعدی چیست