Aggiorna i campi dei veicoli per la consegna

Questo documento illustra i campi del veicolo che puoi aggiornare quando crei e gestisci i veicoli.

  • type: il tipo di questo veicolo per la consegna. Ciò influisce percorsi generati per questo veicolo.
  • attributes[]: un array di opzioni di tipo DeliveryVehicleAttribute Utilizza le funzionalità di definire criteri personalizzati per i veicoli nel tuo servizio al fine di migliorare comportamento dei filtri durante la ricerca o l'elenco di 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 chiamato zone per differenziare in quale zona della città operano i veicoli per le consegne. 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 di 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 l'aggiornamento di una sola . 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 devi anche dichiarare nuovamente ogni attributo personalizzato di cui vuoi veicolo da conservare. 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 Fleet Engine Delivery Privilegi amministrativi.

Esempio: impostare un attributo personalizzato

Questo esempio specifica un nuovo attributo: zone. Come indicato in Aggiorna gli attributi del veicolo in precedenza, aggiornando il 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 preservarlo 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

Passaggi successivi