Aggiorna i campi relativi ai veicoli

Questo documento tratta i campi importanti dei veicoli che puoi aggiornare durante la creazione e la gestione dei veicoli.

  • vehicle_state: determina la disponibilità del veicolo per i nuovi viaggi.
  • vehicle_type: campo obbligatorio durante la creazione di un veicolo. Il campo può essere utilizzato anche come criterio di filtro per le corrispondenze dei veicoli. Per informazioni dettagliate sull'impostazione di questo campo, vedi Creare un veicolo.
  • attributes[]: un array facoltativo di tipo VehicleAttribute. Utilizzali per definire criteri personalizzati per migliorare il comportamento di filtraggio durante la ricerca o l'elenco dei veicoli.
 

Per un elenco completo dei campi relativi ai veicoli, consulta:

Campo Stato del veicolo

Il sistema può impostare lo stato del veicolo su OFFLINE o ONLINE. Ad esempio, puoi impostare lo stato del veicolo su ONLINE ogni giorno alle 9:00 e su OFFLINE ogni giorno alle 17:00.

Modalità OFFLINE Modalità ONLINE
Utilizza OFFLINE per indicare che un veicolo non accetta nuovi viaggi. Tieni presente che il veicolo può comunque completare le corse assegnate in questo stato.
  • Un Vehicle creato nello stato ONLINE può essere restituito immediatamente in risposta alle query SearchVehicles. Per saperne di più, consulta la sezione Cerca veicoli.
  • I veicoli creati nello stato ONLINE devono utilizzare il campo last_location nella chiamata CreateVehicle.

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 denominato class per differenziare i tuoi veicoli di rideshare in base ai livelli di classe. Utilizzeresti i seguenti valori stringa per rappresentare i livelli di classe del veicolo: ECONOMY, STANDARD e LUXURY.

Tuttavia, i valori degli attributi personalizzati non devono essere univoci tra loro. Potresti utilizzare criteri come accetta animali, non fumatori e disponibilità a effettuare viaggi più lunghi. 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 class impostato sul valore stringa appropriato.

L'utilizzo degli attributi in questo modo può fornirti un'ampia gamma di funzionalità utili per trovare veicoli per viaggi con esigenze specifiche. Per istruzioni su come utilizzare gli attributi personalizzati come filtri di query, consulta Cercare veicoli.

Aggiornare gli attributi del veicolo

Puoi aggiornare gli attributi del veicolo utilizzando UpdateVehicle o UpdateVehicleAttributes. 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.

UpdateVehicle UpdateVehicleAttributes
Questa API non consente l'aggiornamento di 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. Ciò comporta la sovrascrittura di qualsiasi attributo preesistente non incluso esplicitamente nella maschera del campo. 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. Questo metodo accetta un elenco specifico di attributi da aggiornare. La richiesta aggiorna o aggiunge solo gli attributi specificati nella maschera di campo. Gli attributi preesistenti non specificati rimangono invariati.

Esempio di aggiornamento dei campi del veicolo

Questa sezione mostra come aggiornare i campi del veicolo utilizzando UpdateVehicleRequest, che include un update_mask per indicare quali campi aggiornare. Per informazioni dettagliate, consulta la documentazione di Protocol Buffers sulle maschere di campo.

Gli aggiornamenti ai campi diversi da last_location richiedono i privilegi di Fleet Engine On-Demand Admin.

Esempio: attiva il nuovo tipo di viaggio e l'attributo personalizzato

Questo esempio attiva i viaggi back_to_back per il veicolo e specifica anche un nuovo attributo: class. 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 cash_only scritto per evitare che venga sovrascritto durante un'operazione di aggiornamento che specifica il campo attributes.

Per aggiornare solo il valore di una coppia di attributi chiave-valore, utilizza il metodo UpdateVehicleAttributes e non includere il campo attribute nella maschera del campo per la richiesta UpdateVehicle.

Consulta il riferimento providers.vehicles.update per gRPC e REST.

gRPC

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.ONLINE)
    .addAllAttributes(ImmutableList.of(
        VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
        VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
    .setBackToBackEnabled(true)
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("vehicle_state")
        .addPaths("attributes")
        .addPaths("back_to_back_enabled"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

REST

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "ONLINE",
    "attributes": [
      {"key": "class", "value": "LUXURY"},
      {"key": "cash_only", "value": "false"}
    ],
    "backToBackEnabled": true
}
EOM

Passaggi successivi