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

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

  • vehicle_state: دردسترس بودن خودرو را برای سفرهای جدید تعیین می‌کند.
  • vehicle_type: فیلد الزامی هنگام ایجاد خودرو. این فیلد همچنین می‌تواند به‌عنوان معیار فیلتر برای مطابقت‌های خودرو عمل کند. برای جزئیات مربوط به تنظیم این فیلد، ایجاد خودرو را ببینید.
  • ‫attributes[]: آرایه اختیاری از نوع VehicleAttribute. از آن‌ها برای تعریف معیارهای سفارشی برای بهبود رفتار فیلتر کردن هنگام جستجو یا فهرست کردن خودروها استفاده کنید.
 

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

فیلد وضعیت خودرو

سیستم شما می‌تواند وضعیت خودرو را روی OFFLINE یا ONLINE تنظیم کند. برای مثال، می‌توانید وضعیت خودرو را هر روز ساعت ۹ صبح روی ONLINE و هر روز ساعت ۵ بعدازظهر روی OFFLINE تنظیم کنید.

حالت آفلاین حالت آنلاین
از OFFLINE برای نشان دادن اینکه خودرو سفر جدید نمی‌پذیرد استفاده کنید. توجه داشته باشید که خودرو همچنان می‌تواند سفرهای واگذارشده را در این وضعیت تکمیل کند.
  • Vehicle ایجادشده در وضعیت ONLINE ممکن است بلافاصله در پاسخ به پُرسمان‌های SearchVehicles برگردانده شود. برای جزئیات بیشتر، جستجوی خودرو را ببینید.
  • خودروهای ایجادشده در وضعیت ONLINE باید از فیلد last_location در فراخوانی CreateVehicle استفاده کنند.

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

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

برای مثال، می‌توانید مشخصه سفارشی‌ای به‌نام class (کلاس) تعریف کنید تا وسایل نقلیه هم‌سفری‌تان را براساس سطح کلاس متمایز کنید. از مقادیر رشته‌ای زیر برای نشان دادن سطوح کلاس خودرو استفاده می‌کنید: ECONOMY، STANDARD، و LUXURY.

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

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

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

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

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

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

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

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

مثال: فعال کردن نوع سفر جدید و مشخصه سفارشی

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

برای به‌روزرسانی فقط مقدار یک جفت مشخصه کلید-مقدار، به‌جای آن از روش UpdateVehicleAttributes استفاده کنید و فیلد attribute را در ماسک فیلد برای درخواست UpdateVehicle لحاظ نکنید.

مرجع providers.vehicles.update را برای gRPC و REST ببینید.

gRPC

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.ONLINE)
    .addAllAttributes(ImmutableList.of(
        VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
        VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
    .setBackToBackEnabled(true)
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("vehicle_state")
        .addPaths("attributes")
        .addPaths("back_to_back_enabled"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

استراحت

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "ONLINE",
    "attributes": [
      {"key": "class", "value": "LUXURY"},
      {"key": "cash_only", "value": "false"}
    ],
    "backToBackEnabled": true
}
EOM

قدم بعدی چیست