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 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 namens zone deklarieren, um zu unterscheiden, in welcher Zone der Stadt Ihre Lieferfahrzeuge unterwegs sind. Sie können Stringwerte wie 1B
, 2C
und 3A
verwenden, um verschiedene Zonen darzustellen. Sie könnten dann in Fleet Tracking einen Filter verwenden, um dem für diese Zone zuständigen Bediener nur Fahrzeuge anzuzeigen, die in einer bestimmten Zone unterwegs sind.
Werte für benutzerdefinierte Attribute müssen sich jedoch nicht gegenseitig ausschließen. Sie können Kriterien wie available-at-night und has-refrigeration verwenden. Jedes dieser Attribute könnte ein separates benutzerdefiniertes Attribut mit booleschen Werten sein. Einem bestimmten Fahrzeug könnten alle drei benutzerdefinierten Attribute sowie das benutzerdefinierte Attribut zone mit dem entsprechenden Stringwert zugewiesen werden.
Fahrzeugattribute 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.
Mit dieser UpdateDeliveryVehicle
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.
Beispiel für das Aktualisieren von Fahrzeugfeldern
In diesem Abschnitt wird beschrieben, wie Sie Fahrzeugfelder mit UpdateDeliveryVehicleRequest
aktualisieren. Dazu gehört auch ein update_mask
, um anzugeben, 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 Delivery Admin-Berechtigungen erforderlich.
Beispiel: Benutzerdefiniertes Attribut festlegen
In diesem Beispiel wird ein neues Attribut angegeben: zone
. Wie bereits unter Fahrzeugattribute aktualisieren erwähnt, müssen Sie bei dieser Methode alle benutzerdefinierten Attribute angeben, die Sie beibehalten möchten, wenn Sie das Feld attributes
aktualisieren.
Im Beispiel wird daher ein available-at-night
-Wert geschrieben, um zu verhindern, dass er bei einem Aktualisierungsvorgang, bei dem das Feld attributes
angegeben wird, überschrieben wird.
Weitere Informationen finden Sie in der providers.deliveryVehicles.patch-Referenz.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
.addAllAttributes(ImmutableList.of(
DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(myDeliveryVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("attributes"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"attributes": [
{"key": "zone", "value": "1B"},
{"key": "available-at-night", "value": "true"}
]
}
EOM