|
In diesem Dokument werden wichtige Fahrzeugfelder beschrieben, die Sie beim Erstellen und Verwalten von Fahrzeugen aktualisieren können.
|
Eine vollständige Liste der Fahrzeugfelder finden Sie hier:
|
Feld „Fahrzeugstatus“
Ihr System kann den Fahrzeugstatus auf OFFLINE oder ONLINE setzen. Sie können beispielsweise den Fahrzeugstatus täglich um 9:00 Uhr auf ONLINE und täglich um 17:00 Uhr auf OFFLINE festlegen.
| OFFLINEMODUS | ONLINE-Modus |
|---|---|
Verwenden Sie OFFLINE, um anzugeben, dass ein Fahrzeug keine neuen Fahrten annimmt. Das Fahrzeug kann in diesem Zustand weiterhin zugewiesene Fahrten ausführen. |
|
Feld für Fahrzeugattribute
Mit dem Fahrzeugfeld attributes können Sie benutzerdefinierte Kriterien erstellen, damit Ihre Kunden oder Flottenbetreiber Fahrzeuge in Ihrer Flotte anhand einer größeren Auswahl an Suchkriterien finden können. Dadurch werden die Funktionen Ihrer Apps verbessert, um bessere Fahrzeugübereinstimmungen zu liefern, als wenn Sie Suchkriterien verwenden würden, die ausschließlich auf anderen Fahrzeugfeldern basieren. Jedes Fahrzeug kann maximal 100 Attribute haben, die jeweils einen eindeutigen Schlüssel haben müssen. Werte können Strings, boolesche Werte oder Zahlen sein.
Sie können beispielsweise ein benutzerdefiniertes Attribut namens class deklarieren, um Ihre Mitfahrgelegenheiten nach Klassen zu unterscheiden. Sie verwenden die folgenden Stringwerte, um die Fahrzeugklassen darzustellen: ECONOMY, STANDARD und LUXURY.
Benutzerdefinierte Attributwerte müssen sich jedoch nicht gegenseitig ausschließen. Sie könnten Kriterien wie haustierfreundlich, Nichtraucher und für längere Fahrten geeignet verwenden. Jedes dieser Attribute könnte ein separates benutzerdefiniertes Attribut sein, das boolesche Werte verwendet. Einem bestimmten Fahrzeug können alle drei dieser benutzerdefinierten Attribute zugewiesen werden, wobei das benutzerdefinierte Attribut class auf den entsprechenden Stringwert festgelegt ist.
Wenn Sie Attribute auf diese Weise verwenden, stehen Ihnen zahlreiche 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 entweder mit UpdateVehicle oder UpdateVehicleAttributes aktualisieren. Jeder attributes-Schlüssel kann nur einen Wert pro Fahrzeug haben. Sie deklarieren benutzerdefinierte Fahrzeugattribute mit attributes in der Feldmaske und geben dann Werte basierend auf der folgenden Methode an.
UpdateVehicle |
UpdateVehicleAttributes |
|
|---|---|---|
Diese API lässt nicht zu, dass nur ein einzelnes Attribut aktualisiert wird. Wenn Sie diese Methode verwenden, führt jede Verwendung des Felds attributes in der Feldmaske dazu, dass der gesamte Satz von Fahrzeugattributen für das Fahrzeug neu deklariert wird. Dies führt dazu, dass alle bereits vorhandenen Attribute überschrieben werden, 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, das das Fahrzeug beibehalten soll, noch einmal deklarieren. Wenn Sie 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. Bereits vorhandene Attribute, die nicht angegeben sind, bleiben unverändert. |
Beispiel für das Aktualisieren von Fahrzeugfeldern
In diesem Abschnitt wird beschrieben, wie Sie Fahrzeugfelder mit UpdateVehicleRequest aktualisieren. Dazu gehört auch eine update_mask, die angibt, welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Protokollzwischenspeicher-Dokumentation zu Feldmasken.
Für Aktualisierungen anderer Felder als last_location sind Fleet Engine On-Demand Admin-Berechtigungen erforderlich.
Beispiel: Neuen Reisetyp und benutzerdefiniertes Attribut aktivieren
In diesem Beispiel werden back_to_back-Fahrten für das Fahrzeug aktiviert und ein neues Attribut angegeben: class. Wie bereits unter Fahrzeugattribute aktualisieren erwähnt, 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, um zu verhindern, dass er während eines Aktualisierungsvorgangs, bei dem das Feld attributes angegeben wird, überschrieben wird.
Wenn Sie nur den Wert eines Schlüssel/Wert-Attributpaars aktualisieren möchten, verwenden Sie stattdessen die Methode UpdateVehicleAttributes und fügen Sie das Feld attribute nicht in die Feldmaske für die Anfrage UpdateVehicle 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