En este documento, se describen los campos importantes de los vehículos que puedes actualizar cuando creas y administras vehículos.
|
Para obtener una lista completa de los campos de vehículos, consulta los siguientes recursos: |
Campo de atributos del vehículo
Usa el campo attributes
del vehículo para crear criterios personalizados que permitan habilitar tu
consumidores o operadores de flota para encontrar vehículos en tu flota en una zona más amplia
diversos criterios de búsqueda. Esto mejora las capacidades de tus apps para
Proporcionar mejores coincidencias de vehículos respecto de lo que usarías si usaras los criterios de búsqueda
basada únicamente en otros campos de vehículos. Cada vehículo puede tener como máximo 100 atributos, y cada uno debe tener una clave única. Los valores pueden ser cadenas,
booleanos o números.
Por ejemplo, puedes declarar un atributo personalizado llamado zone para diferenciar en qué zona de la ciudad operan tus vehículos de entrega. Para representar diferentes zonas, usarías valores de cadena como los siguientes: 1B
, 2C
y 3A
. Luego, puedes usar un filtro en el seguimiento de flotas para mostrar solo los vehículos que trabajan en una zona específica al operador responsable de esa zona.
Sin embargo, no es necesario que los valores de los atributos personalizados sean mutuamente excluyentes. Quizás usa criterios como disponible por la noche y con refrigeración. Cada uno de estos podría ser un atributo personalizado independiente que use valores booleanos. A un vehículo determinado se le podrían asignar los tres atributos personalizados junto con el atributo personalizado zone configurado con el valor de cadena adecuado.
Actualiza los atributos del vehículo
Cada clave attributes
solo puede tener un valor por vehículo. Usted declara
atributos personalizados del vehículo con attributes
en la máscara de campo y, luego,
y proporciona valores basados en el método que se indica a continuación.
Esta API de UpdateDeliveryVehicle
no permite actualizar solo un atributo. Cuando se usa este método, cualquier uso del campo attributes
en la máscara de campo hace que se vuelva a declarar el conjunto completo de atributos del vehículo. Esto provocará que se reemplacen los atributos preexistentes
se incluye explícitamente en la máscara de campo. Si usas este método para declarar un atributo personalizado nuevo, también debes volver a declarar todos los atributos personalizados que deseas que el vehículo retenga. Si excluyes attributes
en la máscara de campo, este
deja los atributos personalizados existentes como se definió anteriormente para el vehículo.
Si usas attributes
en la máscara de campo, pero sin establecer valores, eso equivale a quitar todos los atributos personalizados del vehículo.
Ejemplo de actualización de campos de vehículos
En esta sección, se muestra cómo actualizar los campos de vehículos con UpdateDeliveryVehicleRequest
, que incluye un update_mask
para indicar qué campos se deben actualizar. Consulta la documentación de Protocol Buffers sobre
máscaras de campo para obtener más detalles.
Las actualizaciones de campos distintos de last_location
requieren privilegios de administrador de entrega de Fleet Engine.
Ejemplo: Establece un atributo personalizado
En este ejemplo, se especifica un nuevo atributo: zone
. Como se indicó anteriormente en Actualiza los atributos de los vehículos, para actualizar el campo attributes
con este enfoque, debes indicar todos los atributos personalizados que deseas conservar.
Por lo tanto, en el ejemplo, se muestra un valor available-at-night
escrito para preservarlo.
se reemplace durante una operación de actualización que especifique la
attributes
.
Consulta la referencia de 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