Aggiorna i campi relativi ai veicoli

Questo documento illustra i campi del veicolo che puoi aggiornare quando crei e gestisci i 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ò anche fungere da criterio di filtro per le corrispondenze dei veicoli. Consulta: Creare un veicolo per informazioni dettagliate sull'impostazione di questo campo.
  • attributes[]: un array facoltativo di tipo VehicleAttribute Utilizza le funzionalità di definire criteri personalizzati per migliorare comportamento dei filtri durante la ricerca o l'elenco di veicoli.
 

Per un elenco completo dei campi del veicolo, consulta:

Campo stato veicolo

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

Modalità OFFLINE Modalità ONLINE
Usa 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 a SearchVehicles query. Visualizza la sezione Cerca veicoli per altre i dettagli.
  • I veicoli creati nello stato ONLINE devono usare last_location nella chiamata CreateVehicle.

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 class per differenziare i veicoli di ridesharing per i livelli di classe. Dovresti utilizzare seguenti valori di stringa per rappresentare i livelli della classe del veicolo: ECONOMY, STANDARD e LUXURY.

Tuttavia, non è necessario che i valori degli attributi personalizzati si escludano a vicenda. Potresti utilizza criteri quali adatto agli animali domestici, non fumatori e in grado di richiedere più tempo per i viaggi. Ognuno di questi può essere un attributo personalizzato distinto che utilizza valori booleani e i relativi valori. A un determinato veicolo possono 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ò fornire un'ampia gamma di funzionalità utili a trovare veicoli per viaggi con esigenze specifiche. Per istruzioni su come per utilizzare attributi personalizzati come filtri delle query, consulta Ricerca di veicoli.

Aggiorna gli attributi del veicolo

Puoi aggiornare gli attributi del veicolo utilizzando UpdateVehicle o UpdateVehicleAttributes. Ogni chiave attributes può avere un solo valore per veicolo. Dichiari gli attributi personalizzati dei veicoli utilizzando l'attributo attributes nella maschera del campo, poi fornendo valori in base al metodo descritto di seguito.

UpdateVehicle UpdateVehicleAttributes
Questa API non consente di aggiornare un solo attributo. Quando si utilizza questo metodo, qualsiasi utilizzo dell'attributes nella maschera di campo restituisce l'intero insieme di attributi del veicolo che vengono nuovamente dichiarati per il veicolo. Ciò determina sovrascrivere qualsiasi attributo preesistente non esplicitamente incluso nel maschera del campo di testo. Se utilizzi questo metodo per dichiarare un nuovo attributo personalizzato, devi anche dichiarare nuovamente ogni attributo personalizzato a cui vuoi che il veicolo mantenere. Se escludi attributes nella maschera dei campi, questo metodo lascia gli attributi personalizzati esistenti come definiti in precedenza per il veicolo. Se utilizzi attributes nella maschera dei campi, ma senza impostare valori, equivale a rimuovere tutti i valori personalizzati attributi del veicolo. Questo metodo accetta un elenco specifico di attributi per aggiornamento. La richiesta si aggiorna o aggiunge solo gli attributi specificati nella maschera del campo. Gli attributi preesistenti non specificati rimangono inalterato.

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. Consulta le Documentazione relativa ai buffer di protocollo sulle maschere di campo per maggiori dettagli.

Gli aggiornamenti a campi diversi da last_location richiedono Fleet Engine On demand Privilegi amministrativi.

Esempio: abilita un nuovo tipo di viaggio e un attributo personalizzato

Questo esempio abilita le corse back_to_back per il veicolo e specifica anche un nuovo attributo: class. Come indicato in precedenza in Aggiornare gli attributi del veicolo, l'aggiornamento del campo attributes con questo approccio richiede di indicare tutte gli attributi personalizzati che vuoi conservare. Di conseguenza, l'esempio mostra un valore cash_only valore 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 valore-chiave, utilizza la proprietà 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