Fahrzeugfelder aktualisieren

In diesem Dokument werden wichtige Fahrzeugfelder beschrieben, die Sie beim Erstellen und Verwalten von Fahrzeugen aktualisieren können.

  • vehicle_state: Bestimmt die Verfügbarkeit des Fahrzeugs für neue Fahrten.
  • vehicle_type: Pflichtfeld beim Erstellen eines Fahrzeugs. Das Feld kann auch als Filterkriterium für Fahrzeugübereinstimmungen verwendet werden. Weitere Informationen zum Festlegen dieses Felds finden Sie unter Fahrzeug erstellen.
  • attributes[]: ein optionales Array des Typs VehicleAttribute Mithilfe dieser Kriterien können Sie benutzerdefinierte Kriterien definieren, um das Filterverhalten bei der Suche oder Auflistung von Fahrzeugen zu verbessern.
 

Eine vollständige Liste der Fahrzeugfelder finden Sie hier:

Feld für Fahrzeugstatus

Dein System kann den Fahrzeugstatus auf OFFLINE oder ONLINE setzen. Zum Beispiel haben Sie kann der Fahrzeugstatus auf ONLINE jeden Tag um 09:00 Uhr und OFFLINE täglich um 17:00 Uhr.

OFFLINE-Modus ONLINE-Modus
Mit OFFLINE geben Sie an, dass ein Fahrzeug nicht akzeptiert neue Fahrten. Das Fahrzeug kann in diesem Zustand weiterhin zugewiesene Fahrten ausführen.
  • Ein Vehicle mit dem Status ONLINE kann sofort zurückgegeben werden in Antwort auf SearchVehicles-Abfragen. Weitere Informationen finden Sie unter Fahrzeuge suchen. für weitere Informationen Details.
  • Bei Fahrzeugen, die mit dem Status ONLINE erstellt werden, muss last_location verwendet werden. im CreateVehicle-Aufruf.

Feld für Fahrzeugattribute

Verwenden Sie das Feld „Fahrzeug“ attributes, um benutzerdefinierte Kriterien zu erstellen, mit denen Ihre Kunden oder Flottenbetreiber Fahrzeuge in Ihrer Flotte anhand einer größeren Auswahl an Suchkriterien finden können. So können Sie mit Ihren Apps bessere Fahrzeugübereinstimmungen erzielen als mit Suchkriterien, die ausschließlich auf anderen Fahrzeugfeldern basieren. Jedes Fahrzeug kann maximal 100 Attribute haben und jedes muss einen eindeutigen Schlüssel haben. Werte können Zeichenfolgen, Booleschen oder Zahlen verwenden.

So können Sie beispielsweise ein benutzerdefiniertes Attribut namens class Ihre Mitfahrdienste über Klassenstufen zu unterscheiden. Mit dem folgenden Stringwerten zur Darstellung von Fahrzeugklassenebenen: ECONOMY, STANDARD und LUXURY.

Werte für benutzerdefinierte Attribute müssen sich jedoch nicht gegenseitig ausschließen. Sie können Kriterien wie haustierfreundlich, Nichtraucher und für längere Fahrten geeignet verwenden. Jedes davon könnte ein separates benutzerdefiniertes Attribut mit booleschen Werten sein. Einem bestimmten Fahrzeug können alle drei dieser benutzerdefinierten Attribute zugewiesen werden, zusammen mit dem benutzerdefinierten Attribut class, das auf den entsprechenden Stringwert festgelegt ist.

Wenn Sie Attribute auf diese Weise verwenden, können Sie eine Vielzahl von nützlichen Funktionen für die Suche nach Fahrzeugen für Fahrten mit bestimmten Anforderungen. Eine Anleitung dazu, wie Sie Informationen zur Verwendung benutzerdefinierter Attribute als Abfragefilter finden Sie unter Fahrzeuge suchen.

Fahrzeugattribute aktualisieren

Sie können Fahrzeugattribute mit UpdateVehicle oder UpdateVehicleAttributes aktualisieren. Jeder attributes-Schlüssel kann nur einen Wert pro Fahrzeug. Sie deklarieren benutzerdefinierte Fahrzeugattribute mit dem attributes in der Feldmaske und geben dann Werte anhand der folgenden Methode an.

UpdateVehicle UpdateVehicleAttributes
Mit dieser API kann nicht nur ein einzelnes Attribut aktualisiert werden. Bei dieser Methode wird bei jeder Verwendung des Felds attributes in der Feldmaske der gesamte Satz der Fahrzeugattribute für das Fahrzeug neu deklariert. Dadurch werden alle vorhandenen Attribute überschrieben, die nicht ausdrücklich in der Feldmaske enthalten sind. Wenn Sie mit dieser Methode ein neues benutzerdefiniertes Attribut deklarieren, müssen Sie auch jedes benutzerdefinierte Attribut neu deklarieren, das für das Fahrzeug beibehalten werden soll. Wenn Sie attributes in der Feldmaske ausschließen, werden die vorhandenen benutzerdefinierten Attribute mit dieser Methode unverändert beibehalten. für das Fahrzeug. Wenn Sie attributes in der Feldmaske verwenden, aber ohne Werte festzulegen, entspricht dies dem Entfernen aller benutzerdefinierten Attribute des Fahrzeugs. Bei dieser Methode wird eine bestimmte Liste der zu aktualisierenden Attribute akzeptiert. Mit der Anfrage werden nur die in der Feldmaske angegebenen Attribute aktualisiert oder hinzugefügt. Vorhandene Attribute, die nicht angegeben werden, bleiben unverändert.

Beispiel für die Aktualisierung von Fahrzeugfeldern

In diesem Abschnitt wird beschrieben, wie Sie Fahrzeugfelder mit UpdateVehicleRequest aktualisieren. UpdateVehicleRequest enthält ein update_mask, mit dem angegeben wird, welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Weitere Informationen finden Sie in der Dokumentation zu Protokollzwischenspeichern zu Feldmasken.

Für Aktualisierungen von Feldern außer last_location ist Fleet Engine On-Demand erforderlich Administratorberechtigungen.

Beispiel: Neuen Fahrttyp und neues benutzerdefiniertes Attribut aktivieren

In diesem Beispiel sind back_to_back Fahrten für das Fahrzeug aktiviert und es wird auch ein neues Attribut angegeben: class. Wie bereits im Abschnitt Fahrzeugattribute aktualisieren beschrieben, Um das Feld attributes mit diesem Ansatz zu aktualisieren, müssen Sie alle benutzerdefinierte Attribute, die Sie beibehalten möchten. Daher zeigt das Beispiel einen cash_only -Wert geschrieben, damit er während eines Aktualisierungsvorgangs nicht überschrieben wird. der das Feld attributes angibt.

Wenn Sie nur den Wert eines Schlüssel/Wert-Attributpaars aktualisieren möchten, verwenden Sie stattdessen die Methode UpdateVehicleAttributes und schließen Sie das Feld attribute nicht in die Feldmaske für die UpdateVehicle-Anfrage ein.

Weitere Informationen finden Sie in der providers.vehicles.update-Referenz für gRPC und 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

Nächste Schritte