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 dienen. Weitere Informationen zum Festlegen dieses Felds finden Sie unter Fahrzeug erstellen.
  • attributes[]: Ein optionales Array vom Typ 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

Ihr System kann den Fahrzeugstatus auf OFFLINE oder ONLINE setzen. Sie können beispielsweise festlegen, dass der Fahrzeugstatus jeden Tag um 9:00 Uhr auf ONLINE und jeden Tag um 17:00 Uhr auf OFFLINE gesetzt wird.

OFFLINE-Modus ONLINE-Modus
Verwenden Sie OFFLINE, um anzugeben, dass ein Fahrzeug keine neuen Fahrten annimmt. Das Fahrzeug kann in diesem Status weiterhin zugewiesene Fahrten durchführen.
  • Ein Vehicle mit dem Status ONLINE kann sofort als Antwort auf SearchVehicles-Abfragen zurückgegeben werden. Weitere Informationen finden Sie unter Fahrzeuge suchen.
  • Für Fahrzeuge, die im Bundesstaat ONLINE erstellt wurden, sollte das Feld last_location im CreateVehicle-Aufruf verwendet werden.

Feld „Fahrzeugattribute“

Im Feld attributes des Fahrzeugs können Sie benutzerdefinierte Kriterien erstellen, damit Ihre Nutzer oder Flottenbetreiber über eine Vielzahl von Suchkriterien Fahrzeuge in Ihrem Fuhrpark 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, von denen jedes einen eindeutigen Schlüssel haben muss. Werte können Strings, boolesche Werte oder Zahlen sein.

Beispielsweise können Sie ein benutzerdefiniertes Attribut namens class deklarieren, um Ihre Mitfahrfahrzeuge nach Klassenebenen zu unterscheiden. Mit den folgenden Stringwerten stellen Sie die Fahrzeugklassenebenen dar: 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, stehen Ihnen eine Vielzahl von Funktionen zur Verfügung, mit denen Sie Fahrzeuge für Fahrten mit bestimmten Anforderungen finden können. Eine Anleitung zur Verwendung benutzerdefinierter Attribute als Abfragefilter finden Sie unter Fahrzeuge suchen.

Fahrzeugattribute aktualisieren

Sie können Fahrzeugattribute mit UpdateVehicle oder UpdateVehicleAttributes aktualisieren. Für jeden attributes-Schlüssel kann pro Fahrzeug nur ein Wert angegeben werden. 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 führt jede Verwendung des Felds attributes in der Feldmaske dazu, dass der gesamte Satz von Fahrzeugattributen noch einmal für das Fahrzeug deklariert wird. Dies führt zum Überschreiben bereits vorhandener Attribute, die nicht explizit 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 das Fahrzeug beibehalten soll. Wenn Sie das attributes in der Feldmaske ausschließen, bleiben vorhandene benutzerdefinierte Attribute für das Fahrzeug unverändert. Wenn Sie attributes in der Feldmaske verwenden, aber keine Werte festlegen, entspricht dies dem Entfernen aller benutzerdefinierten Attribute aus dem Fahrzeug. Diese Methode akzeptiert eine bestimmte Liste von Attributen, die aktualisiert werden sollen. 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 Dokumentation zu Feldmasken von Protocol Buffers.

Für Aktualisierungen von anderen Feldern als last_location sind Fleet Engine On-Demand Admin-Berechtigungen erforderlich.

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 unter Fahrzeugattribute aktualisieren beschrieben, müssen Sie beim Aktualisieren des Felds attributes mit diesem Ansatz alle benutzerdefinierten Attribute angeben, die Sie beibehalten möchten. Daher wird im Beispiel ein cash_only-Wert geschrieben, damit er nicht bei einem Aktualisierungsvorgang überschrieben wird, bei dem das Feld attributes angegeben wird.

Wenn Sie nur den Wert eines Schlüssel/Wert-Paar-Attributs aktualisieren möchten, verwenden Sie stattdessen die Methode UpdateVehicleAttributes und fügen 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