In diesem Dokument werden wichtige Fahrzeugfelder behandelt, die Sie beim Erstellen und Verwalten von Fahrzeugen aktualisieren können.
|
Eine vollständige Liste der Fahrzeugfelder finden Sie unter:
|
Feld „Fahrzeugstatus“
Ihr System kann den Fahrzeugstatus auf OFFLINE
oder ONLINE
festlegen. 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. Hinweis: Das Fahrzeug kann weiterhin zugewiesene Fahrten durchführen, während es sich in diesem Zustand befindet. |
|
Feld für Fahrzeugattribute
Mit dem Feld „Fahrzeug“ attributes
können Sie benutzerdefinierte Kriterien erstellen, damit Ihre Kunden oder Flottenbetreiber Fahrzeuge in Ihrer Flotte anhand einer Vielzahl von Suchkriterien finden können. Dadurch werden die Möglichkeiten Ihrer Apps erweitert, bessere Fahrzeugübereinstimmungen zu erzielen, als wenn Sie Suchkriterien verwenden, die ausschließlich auf anderen Fahrzeugfeldern basieren. Jedes Fahrzeug kann maximal 100 Attribute haben und jedes Attribut muss einen eindeutigen Schlüssel haben. Werte können Strings, boolesche Werte oder Zahlen sein.
Sie können beispielsweise ein benutzerdefiniertes Attribut mit dem Namen class deklarieren, um Ihre Mitfahrgelegenheitsfahrzeuge nach Klassen zu unterscheiden. Die folgenden Stringwerte werden verwendet, um Fahrzeugklassen darzustellen: ECONOMY
, STANDARD
und LUXURY
.
Werte für benutzerdefinierte Attribute müssen sich jedoch nicht gegenseitig ausschließen. Sie können Kriterien wie tierfreundlich, Nichtraucher und für längere Fahrten geeignet verwenden. Jedes dieser Elemente könnte ein separates benutzerdefiniertes Attribut mit booleschen Werten sein. Einem bestimmten Fahrzeug können alle drei benutzerdefinierten Attribute zugewiesen werden, wobei das benutzerdefinierte Attribut class auf den entsprechenden String-Wert festgelegt wird.
Wenn Sie Attribute auf diese Weise verwenden, können Sie auf eine Vielzahl von Funktionen zugreifen, die nützlich sind, um Fahrzeuge für Fahrten mit besonderen Anforderungen zu finden. 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 |
|
---|---|---|
Mit dieser API kann nicht nur ein einzelnes Attribut aktualisiert werden. Wenn Sie diese Methode verwenden, führt jede Verwendung des Felds attributes in der Feldmaske dazu, dass alle Fahrzeugattribute für das Fahrzeug neu deklariert werden. Dadurch werden alle vorhandenen Attribute überschrieben, die nicht explizit in der Feldmaske enthalten sind. Wenn Sie mit dieser Methode ein neues benutzerdefiniertes Attribut deklarieren, müssen Sie auch alle benutzerdefinierten Attribute neu deklarieren, die für das Fahrzeug beibehalten werden sollen. 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 das 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 sind, bleiben unverändert. |
Beispiel für das Aktualisieren von Fahrzeugfeldern
In diesem Abschnitt wird gezeigt, wie Sie Fahrzeugfelder mit UpdateVehicleRequest
aktualisieren. Dazu gehört auch ein update_mask
, der angibt, welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Protocol Buffers-Dokumentation zu Feldmasken.
Für Aktualisierungen anderer Felder als last_location
sind Fleet Engine On-Demand Admin-Berechtigungen erforderlich.
Beispiel: Neuen Fahrtentyp 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 bei dieser Methode zum Aktualisieren des Felds attributes
alle benutzerdefinierten Attribute angeben, die Sie beibehalten möchten. Im Beispiel wird daher ein cash_only
-Wert geschrieben, um zu verhindern, dass er bei einem Aktualisierungsvorgang, 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 schließen 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