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