อัปเดตช่องข้อมูลของยานพาหนะ

เอกสารนี้ครอบคลุมฟิลด์สำคัญเกี่ยวกับยานพาหนะที่คุณอัปเดตได้เมื่อสร้างและจัดการยานพาหนะ

  • vehicle_state: กำหนดความพร้อมให้บริการของยานพาหนะ สำหรับการเดินทางใหม่
  • vehicle_type: ฟิลด์ที่ต้องกรอกเมื่อสร้างยานพาหนะ นอกจากนี้ ฟิลด์นี้ยังใช้เป็นเกณฑ์ตัวกรองสำหรับการจับคู่ยานพาหนะได้ด้วย ดูรายละเอียดเกี่ยวกับการตั้งค่าฟิลด์นี้ได้ที่ สร้างยานพาหนะ
  • attributes[]: อาร์เรย์ประเภท VehicleAttribute ที่ไม่บังคับ ใช้ เพื่อกำหนดเกณฑ์ที่กำหนดเองเพื่อปรับปรุง ลักษณะการทำงานของการกรองเมื่อค้นหาหรือแสดงรายการยานพาหนะ
 

ดูรายการฟิลด์ยานพาหนะทั้งหมดได้ที่

ฟิลด์สถานะยานพาหนะ

ระบบของคุณสามารถตั้งค่าสถานะยานพาหนะเป็น OFFLINE หรือ ONLINE เช่น คุณอาจตั้งค่าสถานะยานพาหนะเป็น ONLINE ทุกวันเวลา 9:00 น. และ OFFLINE ทุกวันเวลา 17:00 น.

โหมดออฟไลน์ โหมดออนไลน์
ใช้ OFFLINE เพื่อระบุว่ายานพาหนะไม่รับการเดินทางใหม่ โปรดทราบว่ายานพาหนะยังคงสามารถทำการเดินทางที่ได้รับมอบหมายให้เสร็จสิ้นได้ขณะ อยู่ในสถานะนี้
  • A Vehicle ที่สร้างขึ้นในสถานะ ONLINE อาจแสดงขึ้นทันทีในการตอบกลับคำค้นหา SearchVehicles ดูรายละเอียดเพิ่มเติมได้ที่ค้นหายานพาหนะ สำหรับรายละเอียดเพิ่มเติม
  • ยานพาหนะที่สร้างขึ้นในสถานะ ONLINE ควรใช้ฟิลด์ last_location ในการเรียก CreateVehicle

ฟิลด์แอตทริบิวต์ของยานพาหนะ

ใช้ฟิลด์ attributes ของยานพาหนะเพื่อสร้างเกณฑ์ที่กำหนดเองเพื่อให้ผู้บริโภคหรือผู้ให้บริการยานพาหนะสามารถค้นหายานพาหนะในกองยานพาหนะของคุณตามเกณฑ์การค้นหาที่หลากหลายมากขึ้น ซึ่งจะช่วยเพิ่มขีดความสามารถของแอปในการจับคู่ยานพาหนะได้ดียิ่งขึ้นเมื่อเทียบกับการใช้เกณฑ์การค้นหาที่อิงตามฟิลด์ยานพาหนะอื่นๆ เพียงอย่างเดียว ยานพาหนะแต่ละคันมีแอตทริบิวต์ได้สูงสุด 100 รายการ และแต่ละรายการต้องมีคีย์ที่ไม่ซ้ำกัน ค่าสามารถเป็นสตริง บูลีน หรือตัวเลข

ตัวอย่างเช่น คุณอาจประกาศแอตทริบิวต์ที่กำหนดเองชื่อ class เพื่อแยกความแตกต่างของยานพาหนะที่ให้บริการร่วมเดินทางตามระดับชั้น คุณจะใช้ค่าสตริงต่อไปนี้เพื่อแสดงระดับชั้นของยานพาหนะ ได้แก่ ECONOMY, STANDARD และ LUXURY

อย่างไรก็ตาม ค่าแอตทริบิวต์ที่กำหนดเองไม่จำเป็นต้องแยกกันอย่างสิ้นเชิง คุณอาจ ใช้เกณฑ์ต่างๆ เช่น pet-friendly, non-smoking และ able to take longer trips โดยแต่ละเกณฑ์อาจเป็นแอตทริบิวต์ที่กำหนดเองแยกกันซึ่งใช้ค่าบูลีน ยานพาหนะคันหนึ่งอาจได้รับมอบหมายแอตทริบิวต์ที่กำหนดเองทั้ง 3 รายการนี้พร้อมกับแอตทริบิวต์ที่กำหนดเอง class ที่ตั้งค่าเป็นค่าสตริงที่เหมาะสม

การใช้แอตทริบิวต์ในลักษณะนี้จะช่วยให้คุณมีฟีเจอร์ที่หลากหลายซึ่งเป็นประโยชน์ในการค้นหายานพาหนะสำหรับการเดินทางที่มีความต้องการเฉพาะ ดูวิธีการใช้แอตทริบิวต์ที่กำหนดเองเป็นตัวกรองคำค้นหาได้ที่ค้นหายานพาหนะ

อัปเดตแอตทริบิวต์ของยานพาหนะ

คุณสามารถอัปเดตแอตทริบิวต์ของยานพาหนะโดยใช้ UpdateVehicle หรือ UpdateVehicleAttributes คีย์ attributes แต่ละรายการจะมีค่าได้เพียงค่าเดียวต่อยานพาหนะ คุณประกาศแอตทริบิวต์ของยานพาหนะที่กำหนดเองโดยใช้ attributes ในมาสก์ฟิลด์ แล้วระบุค่าตามวิธีการด้านล่าง

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

ดูข้อมูลอ้างอิง 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

ขั้นตอนถัดไป