Questo documento illustra i campi del veicolo che puoi aggiornare quando crei e gestisci i veicoli.
|
Per un elenco completo dei campi del veicolo, consulta: |
Campo degli attributi del veicolo
Utilizza il campo attributes
del veicolo per creare criteri personalizzati e abilitare
i consumatori o gli operatori di flotte per trovare veicoli nel tuo parco veicoli
diversi criteri di ricerca. In questo modo, le funzionalità delle app vengono migliorate
fornire corrispondenze migliori rispetto ai veicoli rispetto all'uso dei criteri di ricerca
solo in base ad altri campi relativi al veicolo. Ogni veicolo può averne al massimo 100
e ognuno deve avere una chiave univoca. I valori possono essere stringhe
booleani o numeri.
Ad esempio, potresti dichiarare un attributo personalizzato denominato zone per distinguere la zona della città in cui operano i tuoi veicoli di consegna. Dovresti
utilizza valori stringa come il seguente per rappresentare zone diverse: 1B
,
2C
e 3A
. In seguito, potresti utilizzare un filtro in Monitoraggio parco risorse per visualizzare solo
veicoli che lavorano in una zona specifica all'operatore responsabile di quella zona.
Tuttavia, non è necessario che i valori degli attributi personalizzati si escludano a vicenda. Potresti utilizza criteri come disponibile di notte e con-refrigerazione. Ciascuno di questi può essere un attributo personalizzato separato che utilizza valori booleani. Un determinato veicolo Puoi assegnare tutti e tre questi attributi personalizzati insieme all'attributo zone attributo personalizzato impostato sul valore stringa appropriato.
Aggiorna gli attributi del veicolo
Ogni chiave attributes
può avere un solo valore per veicolo. Hai dichiarato
attributi veicolo personalizzati utilizzando l'attributo attributes
nella maschera del campo e poi
fornendo valori in base al metodo descritto di seguito.
Questa API UpdateDeliveryVehicle
non consente di aggiornare un solo
attributo. Quando utilizzi questo metodo, qualsiasi uso del campo attributes
nella
La maschera di campo comporta una nuova dichiarazione dell'intero insieme di attributi del veicolo
per il veicolo. Ciò determina la sovrascrittura di eventuali attributi preesistenti che non
esplicitamente incluso nella maschera del campo. Se utilizzi questo metodo per dichiarare un nuovo attributo personalizzato, devi anche dichiarare di nuovo tutti gli attributi personalizzati che vuoi che vengano mantenuti nel veicolo. Se escludi attributes
nella maschera dei campi,
lascia gli attributi personalizzati esistenti come definiti in precedenza per il veicolo.
Se utilizzi attributes
nella maschera dei campi, ma senza impostare valori, viene
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. Consulta la documentazione relativa ai buffer di protocollo
maschere di campo per maggiori dettagli.
Gli aggiornamenti ai campi diversi da last_location
richiedono i privilegi di Fleet Engine Delivery Admin.
Esempio: impostare un attributo personalizzato
Questo esempio specifica un nuovo attributo: zone
. Come indicato in precedenza nella sezione Aggiornare gli attributi del veicolo, l'aggiornamento del campo attributes
utilizzando questo approccio richiede di indicare tutti gli attributi personalizzati che vuoi conservare.
Di conseguenza, l'esempio mostra un valore available-at-night
scritto per conservarlo
non venga sovrascritta durante un'operazione di aggiornamento che specifica
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