Cập nhật các trường về xe

Tài liệu này bao gồm các trường quan trọng về xe mà bạn có thể cập nhật khi tạo và quản lý phương tiện.

  • vehicle_state: Xác định tình trạng còn hàng của xe cho các chuyến đi mới.
  • vehicle_type: Trường bắt buộc khi tạo xe. Trường này cũng có thể đóng vai trò là tiêu chí lọc để tìm kết quả trùng khớp về xe. Xem Tạo xe để biết chi tiết về cách thiết lập trường này.
  • attributes[]: Một mảng loại không bắt buộc VehicleAttribute. Sử dụng để xác định các tiêu chí tuỳ chỉnh nhằm nâng cao hành vi lọc khi tìm kiếm hoặc đăng thông tin về xe.
 

Để xem danh sách đầy đủ các trường về xe, hãy xem:

Trường trạng thái xe

Hệ thống của bạn có thể đặt trạng thái xe thành OFFLINE hoặc ONLINE. Ví dụ: bạn có thể đặt trạng thái của xe thành ONLINE hằng ngày lúc 9 giờ sáng và OFFLINE hằng ngày lúc 5 giờ chiều.

Chế độ NGOẠI TUYẾN Chế độ TRỰC TUYẾN
Sử dụng OFFLINE để cho biết xe không chấp nhận chuyến đi mới. Xin lưu ý rằng xe vẫn có thể hoàn thành các chuyến đi được chỉ định trong khi ở trạng thái này.
  • Vehicle được tạo ở trạng thái ONLINE có thể được trả về ngay lập tức trong phản hồi cho SearchVehicles truy vấn. Xem bài viết Tìm kiếm xe để biết thêm chi tiết.
  • Các xe được tạo ở trạng thái ONLINE phải sử dụng last_location trong lệnh gọi CreateVehicle.

Trường Thuộc tính xe

Sử dụng trường attributes xe để tạo tiêu chí tuỳ chỉnh nhằm cho phép người tiêu dùng hoặc nhà vận hành đội xe để tìm xe trong đội xe của bạn ở phạm vi rộng hơn nhiều tiêu chí tìm kiếm. Việc này giúp nâng cao khả năng của ứng dụng để cung cấp kết quả phù hợp hơn về xe so với kết quả tìm kiếm của bạn dựa trên tiêu chí tìm kiếm chỉ dựa vào các trường khác về xe. Mỗi chiếc xe có thể có tối đa 100 và mỗi thuộc tính phải có một khoá duy nhất. Giá trị có thể là chuỗi, boolean hoặc số.

Ví dụ: bạn có thể khai báo thuộc tính tùy chỉnh có tên là class để phân biệt xe đi chung xe của bạn giữa các cấp lớp. Bạn sẽ sử dụng các giá trị chuỗi sau đây để biểu thị cấp hạng xe: ECONOMY, STANDARDLUXURY.

Tuy nhiên, các giá trị thuộc tính tuỳ chỉnh không nhất thiết phải loại trừ lẫn nhau. Bạn có thể sử dụng các tiêu chí như phù hợp với thú cưng, không hút thuốccó thể mất nhiều thời gian chuyến đi. Mỗi thuộc tính này có thể là một thuộc tính tuỳ chỉnh riêng biệt sử dụng boolean giá trị. Một chiếc xe nhất định có thể được chỉ định cả ba thuộc tính tuỳ chỉnh này cùng với thuộc tính tùy chỉnh class được đặt thành giá trị chuỗi thích hợp.

Việc sử dụng các thuộc tính theo cách này có thể cung cấp cho bạn nhiều tính năng hữu ích để tìm xe cho các chuyến đi có nhu cầu cụ thể. Để xem hướng dẫn về cách thực hiện để sử dụng thuộc tính tuỳ chỉnh làm bộ lọc cụm từ tìm kiếm, hãy xem bài viết Tìm kiếm xe.

Cập nhật các thuộc tính của xe

Bạn có thể cập nhật các thuộc tính của xe bằng cách sử dụng UpdateVehicle hoặc UpdateVehicleAttributes. Mỗi khoá attributes chỉ có thể có một giá trị mỗi xe. Bạn khai báo các thuộc tính tuỳ chỉnh của xe bằng attributes trong mặt nạ trường, rồi cung cấp các giá trị dựa vào phương thức bên dưới.

UpdateVehicle UpdateVehicleAttributes
API này không cho phép chỉ cập nhật một thuộc tính duy nhất. Khi sử dụng phương thức này, việc sử dụng attributes trong mặt nạ trường sẽ dẫn đến toàn bộ tập hợp của các thuộc tính của xe đang được khai báo lại cho xe. Điều này dẫn đến ghi đè bất kỳ thuộc tính đã có trước nào không được bao gồm rõ ràng trong mặt nạ trường. Nếu bạn sử dụng phương thức này để khai báo thuộc tính tuỳ chỉnh mới, bạn cũng phải khai báo lại mọi thuộc tính tuỳ chỉnh mà bạn muốn xe giữ lại. Nếu bạn loại trừ attributes trong mặt nạ trường, thì phương thức này sẽ để lại các thuộc tính tuỳ chỉnh hiện có như đã xác định trước đó cho chiếc xe. Nếu bạn sử dụng attributes trong mặt nạ trường, nhưng không có giá trị cài đặt, điều này tương đương với việc xoá tất cả tuỳ chỉnh của chiếc xe. Phương thức này chấp nhận một danh sách thuộc tính cụ thể để cập nhật. Yêu cầu này sẽ chỉ cập nhật hoặc thêm những thuộc tính được chỉ định trong mặt nạ trường. Những thuộc tính có sẵn không được chỉ định sẽ được giữ lại không thay đổi.

Cập nhật ví dụ về các trường về xe

Phần này trình bày cách cập nhật các trường về xe bằng cách sử dụng UpdateVehicleRequest, bao gồm update_mask để cho biết những trường nào cần cập nhật. Xem Tài liệu về Vùng đệm giao thức về mặt nạ trường để biết thông tin chi tiết.

Để cập nhật các trường không phải last_location, bạn phải sử dụng Công cụ theo yêu cầu để cập nhật Đặc quyền của quản trị viên.

Ví dụ: bật loại chuyến đi mới và thuộc tính tuỳ chỉnh

Ví dụ này cho phép thực hiện các chuyến đi back_to_back cho xe, đồng thời chỉ định một thuộc tính mới: class. Như đã nêu trong phần Cập nhật thuộc tính xe trước đó, để cập nhật trường attributes theo phương pháp này, bạn cần chỉ ra tất cả mà bạn muốn giữ lại. Do đó, ví dụ cho thấy cash_only giá trị được ghi để tránh bị ghi đè trong thao tác cập nhật chỉ định trường attributes.

Để chỉ cập nhật giá trị của một cặp thuộc tính khoá-giá trị, hãy sử dụng Thay vào đó, UpdateVehicleAttributes và không bao gồm trường attribute trong mặt nạ trường cho yêu cầu UpdateVehicle.

Xem tài liệu tham khảo providers.vehicles.update cho gRPCREST.

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.

Kiến trúc chuyển trạng thái đại diện (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

Các bước tiếp theo