|
Tài liệu này đề cập đến 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ý xe.
|
Để xem danh sách đầy đủ các trường về xe, hãy xem: |
Trường thuộc tính xe
Sử dụng trường attributes của xe để tạo tiêu chí tuỳ chỉnh nhằm giúp người tiêu dùng hoặc nhà điều hành đội xe tìm thấy xe trong đội xe của bạn theo nhiều tiêu chí tìm kiếm hơn. Điều này giúp tăng cường khả năng của ứng dụng để cung cấp các kết quả phù hợp hơn về xe so với việc bạn chỉ sử dụng tiêu chí tìm kiếm dựa trên các trường khác về xe. Mỗi xe có thể có tối đa 100 thuộc tính và mỗi thuộc tính phải có một khoá riêng. Giá trị có thể là chuỗi, boolean hoặc số.
Ví dụ: bạn có thể khai báo một thuộc tính tùy chỉnh có tên là zone để phân biệt khu vực trong thành phố mà xe giao hàng của bạn hoạt động. Bạn sẽ sử dụng các giá trị chuỗi như sau để biểu thị các khu vực khác nhau: 1B, 2C và 3A. Sau đó, bạn có thể sử dụng bộ lọc trong tính năng Theo dõi đội xe để chỉ cho nhà điều hành chịu trách nhiệm về khu vực đó thấy những xe đang hoạt động trong một khu vực cụ thể.
Tuy nhiên, các giá trị thuộc tính tuỳ chỉnh không nhất thiết phải khác nhau. Bạn có thể sử dụng các tiêu chí như available-at-night và has-refrigeration. Mỗi tiêu chí này có thể là một thuộc tính tùy chỉnh riêng biệt sử dụng các giá trị boolean. Bạn có thể chỉ định cả 3 thuộc tính tùy chỉnh này cho một xe cụ thể cùng với thuộc tính tùy chỉnh zone được đặt thành giá trị chuỗi thích hợp.
Cập nhật thuộc tính xe
Mỗi khoá attributes chỉ có thể có một giá trị cho mỗi xe. Bạn khai báo các thuộc tính tuỳ chỉnh của xe bằng cách sử dụng attributes trong mặt nạ trường, sau đó cung cấp các giá trị dựa trên phương thức bên dưới.
API UpdateDeliveryVehicle không cho phép chỉ cập nhật một thuộc tính. Khi sử dụng phương thức này, mọi việc sử dụng trường attributes trong mặt nạ trường sẽ dẫn đến việc toàn bộ tập hợp thuộc tính xe được khai báo lại cho xe. Điều này dẫn đến việc ghi đè mọi thuộc tính hiện có không được đưa vào một cách 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 một thuộc tính tùy chỉnh mới, thì bạn cũng phải khai báo lại mọi thuộc tính tùy 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ẽ giữ nguyên các thuộc tính tuỳ chỉnh hiện có như đã xác định trước đó cho xe.
Nếu bạn sử dụng attributes trong mặt nạ trường nhưng không đặt giá trị, thì điều đó tương đương với việc xoá tất cả các thuộc tính tuỳ chỉnh khỏi xe.
Ví dụ về cách cập nhật các trường về xe
Phần này cho biết cách cập nhật các trường về xe bằng cách sử dụng UpdateDeliveryVehicleRequest, trong đó có update_mask để cho biết những trường cần cập nhật. Hãy 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 là last_location, bạn cần có đặc quyền Quản trị viên giao hàng của Fleet Engine.
Ví dụ: đặt thuộc tính tuỳ chỉnh
Ví dụ này chỉ định một thuộc tính mới: zone. Như đã lưu ý trong
Cập nhật thuộc tính xe trước đó, việc cập nhật trường attributes bằng
phương pháp này yêu cầu bạn phải cho biết tất cả các thuộc tính tuỳ chỉnh mà bạn muốn giữ lại.
Do đó, ví dụ này cho thấy giá trị available-at-night được ghi để giữ lại giá trị đó khỏi bị ghi đè trong thao tác cập nhật chỉ định trường attributes.
Xem tài liệu tham khảo về providers.deliveryVehicles.patch.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
.addAllAttributes(ImmutableList.of(
DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(myDeliveryVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("attributes"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"attributes": [
{"key": "zone", "value": "1B"},
{"key": "available-at-night", "value": "true"}
]
}
EOM