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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

قدم بعدی چیست؟