Este documento abrange campos importantes do veículo que você pode ao criar e gerenciar veículos.
|
Para conferir uma lista completa dos campos do veículo, consulte: |
Campo de atributos do veículo
Use o campo attributes
do veículo para criar critérios personalizados que permitam que seus
consumidores ou operadores de frota encontrem veículos na frota com uma variedade
maior de critérios de pesquisa. Isso melhora a capacidade dos aplicativos de
fornecer melhores correspondências de veículos do que você usaria com critérios de pesquisa
com base apenas em outros campos de veículos. Cada veículo pode ter no máximo 100
atributos, e cada um deve ter uma chave exclusiva. Os valores podem ser strings,
booleanos ou números.
Por exemplo, você pode declarar um atributo personalizado chamado zone para
diferenciar em qual zona da cidade seus veículos de entrega operam. Você
use valores de string como o seguinte para representar zonas diferentes: 1B
,
2C
e 3A
. É possível usar um filtro no rastreamento de frota para mostrar apenas
veículos que trabalham em uma zona específica para o operador responsável por ela.
No entanto, os valores de atributos personalizados não precisam ser mutuamente exclusivos. Talvez você use critérios como available-at-night e has-refrigeration. Cada um deles pode ser um atributo personalizado separado que usa valores booleanos. Um determinado veículo pode receber os três atributos personalizados com o atributo personalizado zona definido para o valor de string adequado.
Atualizar atributos do veículo
Cada chave attributes
pode ter apenas um valor por veículo. Você declara
atributos personalizados do veículo usando attributes
na máscara de campo e
fornecendo valores com base no método abaixo.
A API UpdateDeliveryVehicle
não permite atualizar apenas um
. Ao usar esse método, qualquer uso do campo attributes
na
máscara de campo faz com que o conjunto completo de atributos do veículo seja declarado novamente
para o veículo. Isso resulta na substituição de qualquer atributo preexistente
explicitamente incluído na máscara de campo. Se você usar esse método para declarar um novo
atributo personalizado, também precisará declarar novamente todos os atributos personalizados que quiser que o
veículo mantenha. Se você excluir o attributes
na máscara de campo, esse
método deixará os atributos personalizados atuais como foram definidos anteriormente para o veículo.
Se você usar attributes
na máscara de campo, mas sem definir valores, isso será
equivalente a remover todos os atributos personalizados do veículo.
Exemplo de atualização dos campos do veículo
Nesta seção, mostramos como atualizar os campos do veículo usando
UpdateDeliveryVehicleRequest
, que inclui um update_mask
para indicar
quais campos atualizar. Consulte a documentação do Buffers de protocolo
máscaras de campo para mais detalhes.
As atualizações em campos diferentes de last_location
exigem a entrega do mecanismo de frota
Privilégios de administrador.
Exemplo: definir atributo personalizado
Este exemplo especifica um novo atributo: zone
. Conforme observado em
Atualize os atributos do veículo antes, atualizando o campo attributes
usando
essa abordagem exige que você indique todos os atributos personalizados que quer manter.
Portanto, o exemplo mostra um valor available-at-night
gravado para preservá-lo
sejam substituídos durante uma operação de atualização que especifica o
attributes
.
Consulte a referência 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