本文档介绍了一些重要的车辆字段, 在创建和管理车辆时更新。
|
如需查看车辆字段的完整列表,请参阅: |
“车辆属性”字段
使用车辆的 attributes
字段创建自定义条件,以启用
消费者或车队运营商在更广泛的范围内查找车辆
各种搜索条件。这有助于增强应用的功能
与使用搜索条件相比,可以提供更好的车辆匹配度
进行衡量。每辆车最多可以有 100 个属性,每个属性都必须具有唯一的键。值可以是字符串
例如布尔值或数字
例如,您可以声明一个名为 zone 的自定义属性,以区分配送车辆在城市中的哪个区域运营。您会
使用如下字符串值来表示不同的可用区:1B
、
2C
和3A
。然后,您可以在车队跟踪中使用过滤条件,仅向负责相应区域的运营商显示在该区域工作的车辆。
但是,自定义属性值不必互斥。您可以使用available-at-night 和 has-refrigeration 等条件。以上每一个 可能是使用布尔值的单独自定义属性。指定车辆 可以同时分配这三个自定义属性以及 zone 设置为适当的字符串值。
更新车辆属性
每辆车的每个 attributes
键只能有一个值。您声明
在字段掩码中使用 attributes
的自定义车辆属性,然后
根据以下方法提供值。
此 UpdateDeliveryVehicle
API 不允许仅更新单个属性。使用此方法时,如果在字段掩码中使用 attributes
字段,系统会为车辆重新声明整个集的车辆属性。这会覆盖字段掩码中未明确包含的任何现有属性。如果您使用此方法声明新的
自定义属性,因此您还必须重新声明您想要添加的每个自定义属性,
保留这辆车。如果您在字段掩码中排除 attributes
,则
方法保留之前为车辆定义的现有自定义属性。
如果您在字段掩码中使用 attributes
,但未设置值,则相当于从车辆中移除所有自定义属性。
更新车辆字段示例
本部分介绍如何使用
UpdateDeliveryVehicleRequest
,其中包含一个 update_mask
,用于指示
要更新的字段如需了解详情,请参阅 Protocol Buffers 文档中的字段掩码部分。
对 last_location
以外的字段进行的更新需要 Fleet Engine Delivery
管理员权限。
示例:设置自定义属性
以下示例指定了一个新属性:zone
。如前面更新车辆属性中所述,若要使用此方法更新 attributes
字段,您需要指明要保留的所有自定义属性。因此,该示例显示了为保留该值而写入的 available-at-night
值
更新操作期间,
attributes
字段。
请参阅 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