Questo documento tratta i campi importanti dei veicoli che puoi aggiornare durante la creazione e la gestione dei veicoli.
|
Per un elenco completo dei campi relativi ai veicoli, consulta: |
Campo Attributi veicolo
Utilizza il campo attributes
del veicolo per creare criteri personalizzati che consentano ai tuoi
consumatori o gestori di flotte di trovare i veicoli della tua flotta in base a una più ampia
varietà di criteri di ricerca. Ciò migliora le funzionalità delle tue app per
fornire corrispondenze migliori per i veicoli rispetto a quelle che otterresti utilizzando criteri di ricerca
basati esclusivamente su altri campi del veicolo. Ogni veicolo può avere al massimo 100
attributi e ciascuno deve avere una chiave univoca. I valori possono essere stringhe,
valori booleani o numeri.
Ad esempio, potresti dichiarare un attributo personalizzato chiamato zona per
distinguere in quale zona della città operano i tuoi veicoli di consegna. Utilizzeresti
valori stringa come i seguenti per rappresentare zone diverse: 1B
,
2C
e 3A
. Potresti quindi utilizzare un filtro in Fleet Tracking per mostrare solo
i veicoli che lavorano in una zona specifica all'operatore responsabile di quella zona.
Tuttavia, i valori degli attributi personalizzati non devono essere univoci tra loro. Potresti utilizzare criteri come available-at-night e has-refrigeration. Ciascuno di questi potrebbe essere un attributo personalizzato separato che utilizza valori booleani. A un determinato veicolo potrebbero essere assegnati tutti e tre questi attributi personalizzati insieme all'attributo personalizzato zona impostato sul valore stringa appropriato.
Aggiornare gli attributi del veicolo
Ogni chiave attributes
può avere un solo valore per veicolo. Dichiara
gli attributi personalizzati del veicolo utilizzando attributes
nella maschera del campo, quindi
fornisci i valori in base al metodo riportato di seguito.
Questa API UpdateDeliveryVehicle
non consente di aggiornare un solo attributo. Quando utilizzi questo metodo, qualsiasi utilizzo del campo attributes
nella maschera del campo comporta la ridichiarazione dell'intero insieme di attributi del veicolo per il veicolo. In questo modo, qualsiasi attributo preesistente non
incluso esplicitamente nella maschera del campo viene sovrascritto. Se utilizzi questo metodo per dichiarare un nuovo
attributo personalizzato, devi anche dichiarare nuovamente ogni attributo personalizzato che vuoi che il
veicolo mantenga. Se escludi attributes
nella maschera del campo, questo
metodo lascia gli attributi personalizzati esistenti come definiti in precedenza per il veicolo.
Se utilizzi attributes
nella maschera del campo, ma senza impostare valori, ciò equivale a rimuovere tutti gli attributi personalizzati dal veicolo.
Esempio di aggiornamento dei campi del veicolo
Questa sezione mostra come aggiornare i campi del veicolo utilizzando
UpdateDeliveryVehicleRequest
, che include un update_mask
per indicare
quali campi aggiornare. Per maggiori dettagli, consulta la documentazione di Protocol Buffers sulle
maschere di campo.
Gli aggiornamenti ai campi diversi da last_location
richiedono i privilegi di Fleet Engine Delivery
Admin.
Esempio: imposta l'attributo personalizzato
Questo esempio specifica un nuovo attributo: zone
. Come indicato in
Aggiornare gli attributi del veicolo in precedenza, l'aggiornamento del campo attributes
utilizzando
questo approccio richiede di indicare tutti gli attributi personalizzati che vuoi conservare.
Pertanto, l'esempio mostra un valore available-at-night
scritto per evitare che venga sovrascritto durante un'operazione di aggiornamento che specifica il campo attributes
.
Consulta il riferimento 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