|
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 „Fahrzeugattribute“
Mit dem Feld attributes des Fahrzeugs können Sie benutzerdefinierte Kriterien erstellen, damit Ihre Kunden oder Flottenbetreiber Fahrzeuge in Ihrer Flotte anhand einer größeren Vielfalt von Suchkriterien finden können. Dadurch können Ihre Apps bessere Fahrzeugübereinstimmungen liefern, als wenn Sie Suchkriterien verwenden, 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 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 eingesetzt werden. Verwenden Sie Stringwerte wie die folgenden, um verschiedene Zonen darzustellen: 1B, 2C und 3A. Sie können dann in Fleet Tracking einen Filter verwenden, um dem für diese Zone verantwortlichen Betreiber nur Fahrzeuge anzuzeigen, die in einer bestimmten Zone eingesetzt werden.
Benutzerdefinierte Attributwerte müssen sich jedoch nicht gegenseitig ausschließen. Sie können Kriterien wie available-at-night und has-refrigeration verwenden. Jedes dieser Kriterien kann ein separates benutzerdefiniertes Attribut mit booleschen Werten sein. Ein bestimmtes Fahrzeug kann alle drei benutzerdefinierten Attribute sowie das benutzerdefinierte Attribut zone mit dem entsprechenden Stringwert zugewiesen bekommen.
Fahrzeugattribute aktualisieren
Jeder attributes-Schlüssel kann pro Fahrzeug nur einen Wert haben. Sie deklarieren benutzerdefinierte Fahrzeugattribute mit attributes in der Feldmaske und geben dann Werte gemäß 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 das gesamte Set der Fahrzeugattribute für das Fahrzeug neu deklariert wird. 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 das Fahrzeug behalten soll. Wenn Sie attributes in der Feldmaske ausschließen, bleiben die vorhandenen benutzerdefinierten 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 gezeigt, wie Sie Fahrzeugfelder mit UpdateDeliveryVehicleRequest aktualisieren. Diese Anfrage enthält eine update_mask, um anzugeben, welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Dokumentation zu
Feldmasken in Protocol Buffers.
Für Aktualisierungen anderer Felder als last_location sind Berechtigungen als Fleet Engine Delivery Admin 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.attributes
Daher wird im Beispiel ein Wert für available-at-night geschrieben, damit er bei einer Aktualisierung, bei der das Feld attributes angegeben wird, nicht überschrieben wird.
Weitere Informationen finden Sie in der Referenz zu providers.deliveryVehicles.patch.
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