| เอกสารนี้ครอบคลุมฟิลด์ยานพาหนะที่สำคัญซึ่งคุณสามารถ อัปเดตได้เมื่อสร้างและจัดการยานพาหนะ 
 | ดูรายการฟิลด์ยานพาหนะทั้งหมดได้ที่ 
 | 
ฟิลด์สถานะยานพาหนะ
ระบบของคุณสามารถตั้งค่าสถานะยานพาหนะเป็น OFFLINE หรือ ONLINE เช่น คุณอาจตั้งค่าสถานะรถเป็น ONLINE ทุกวันเวลา 09:00 น. และ OFFLINE ทุกวันเวลา 17:00 น.
| โหมดออฟไลน์ | โหมดออนไลน์ | 
|---|---|
| ใช้ OFFLINEเพื่อระบุว่ายานพาหนะไม่รับ
    การเดินทางใหม่ โปรดทราบว่ายานพาหนะยังคงให้บริการการเดินทางที่ได้รับมอบหมายให้เสร็จสมบูรณ์ได้ขณะที่
    อยู่ในสถานะนี้ | 
 | 
ฟิลด์แอตทริบิวต์ของยานพาหนะ
ใช้ฟิลด์attributesยานพาหนะเพื่อสร้างเกณฑ์ที่กำหนดเองเพื่อให้ผู้บริโภคหรือผู้ประกอบการกองยานพาหนะค้นหายานพาหนะในกองยานพาหนะของคุณตามเกณฑ์การค้นหาที่หลากหลายมากขึ้น ซึ่งจะช่วยเพิ่มความสามารถของแอปในการ
แสดงยานพาหนะที่ตรงกันได้ดีกว่าการใช้เกณฑ์การค้นหา
โดยอิงตามฟิลด์ยานพาหนะอื่นๆ เพียงอย่างเดียว ยานพาหนะแต่ละคันมีแอตทริบิวต์ได้สูงสุด 100 รายการ และแต่ละรายการต้องมีคีย์ที่ไม่ซ้ำกัน ค่าอาจเป็นสตริง บูลีน หรือตัวเลข
เช่น คุณอาจประกาศแอตทริบิวต์ที่กำหนดเองชื่อ class เพื่อ
แยกความแตกต่างของยานพาหนะที่ให้บริการร่วมเดินทางในระดับชั้นต่างๆ คุณจะใช้ค่าสตริงต่อไปนี้เพื่อแสดงระดับชั้นของยานพาหนะ: ECONOMY,
STANDARD และ LUXURY
อย่างไรก็ตาม ค่าแอตทริบิวต์ที่กำหนดเองไม่จำเป็นต้องแยกกันอย่างสิ้นเชิง คุณอาจใช้เกณฑ์ต่างๆ เช่น อนุญาตสัตว์เลี้ยง ไม่สูบบุหรี่ และพร้อมรับการเดินทางที่ยาวนานขึ้น แต่ละรายการอาจเป็นแอตทริบิวต์ที่กำหนดเองแยกต่างหากซึ่งใช้ค่าบูลีน รถยนต์ที่ระบุอาจได้รับการกำหนดแอตทริบิวต์ที่กำหนดเองทั้ง 3 รายการนี้ พร้อมกับแอตทริบิวต์ที่กำหนดเอง class ที่ตั้งค่าเป็นค่าสตริงที่เหมาะสม
การใช้แอตทริบิวต์ในลักษณะนี้จะช่วยให้คุณมีฟีเจอร์ที่หลากหลายซึ่งเป็นประโยชน์ต่อ การค้นหายานพาหนะสำหรับการเดินทางที่มีความต้องการเฉพาะ ดูวิธีการใช้แอตทริบิวต์ที่กำหนดเองเป็นตัวกรองการค้นหาได้ที่ค้นหายานพาหนะ
อัปเดตแอตทริบิวต์ของยานพาหนะ
คุณอัปเดตแอตทริบิวต์ยานพาหนะได้โดยใช้ UpdateVehicle หรือ
UpdateVehicleAttributes attributes คีย์แต่ละรายการจะมีค่าได้เพียงค่าเดียวต่อ
ยานพาหนะ คุณประกาศแอตทริบิวต์ยานพาหนะที่กำหนดเองโดยใช้ attributes
ในฟิลด์มาสก์ จากนั้นระบุค่าตามวิธีการด้านล่าง
| UpdateVehicle | UpdateVehicleAttributes | |
|---|---|---|
| API นี้ไม่อนุญาตให้อัปเดตแอตทริบิวต์เพียงรายการเดียว เมื่อใช้วิธีนี้ การใช้ฟิลด์ attributesใน Field Mask จะส่งผลให้มีการประกาศชุดแอตทริบิวต์ยานพาหนะทั้งหมดอีกครั้งสำหรับยานพาหนะ ซึ่งจะส่งผลให้มีการเขียนทับแอตทริบิวต์ที่มีอยู่ก่อนหน้านี้ซึ่งไม่ได้รวมไว้ในฟิลด์มาสก์อย่างชัดเจน หากใช้วิธีนี้เพื่อประกาศแอตทริบิวต์ที่กำหนดเองใหม่
        คุณต้องประกาศแอตทริบิวต์ที่กำหนดเองทุกรายการที่คุณต้องการให้ยานพาหนะ
        ยังคงมีอยู่ซ้ำอีกครั้งด้วย หากคุณยกเว้นattributesในฟิลด์มาสก์
        วิธีนี้จะคงแอตทริบิวต์ที่กำหนดเองที่มีอยู่ตามที่กำหนดไว้ก่อนหน้านี้
        สำหรับยานพาหนะ หากคุณใช้attributesในมาสก์ฟิลด์
        แต่ไม่ได้ตั้งค่า จะเท่ากับการนำแอตทริบิวต์ที่กำหนดเองทั้งหมด
        ออกจากยานพาหนะ | เมธอดนี้ยอมรับรายการแอตทริบิวต์ที่เฉพาะเจาะจงเพื่อ อัปเดต คำขอจะอัปเดตหรือเพิ่มเฉพาะแอตทริบิวต์ที่ระบุ ในฟิลด์มาสก์ แอตทริบิวต์ที่มีอยู่แล้วซึ่งไม่ได้ระบุจะยังคง ไม่เปลี่ยนแปลง | 
ตัวอย่างการอัปเดตฟิลด์ยานพาหนะ
ส่วนนี้แสดงวิธีอัปเดตฟิลด์ยานพาหนะโดยใช้ UpdateVehicleRequest
ซึ่งรวมถึง update_mask เพื่อระบุฟิลด์ที่จะอัปเดต ดูรายละเอียดได้ที่เอกสารประกอบของ Protocol Buffers เกี่ยวกับฟิลด์มาสก์
การอัปเดตฟิลด์อื่นๆ นอกเหนือจาก 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.
REST
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