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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مثال: نوع سفر جدید و ویژگی سفارشی را فعال کنید

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

برای به‌روزرسانی فقط مقدار یک جفت ویژگی کلید-مقدار، از متد UpdateVehicleAttributes استفاده کنید و فیلد attribute در ماسک فیلد برای درخواست UpdateVehicle قرار ندهید.

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

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

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