In diesem Dokument werden wichtige Fahrzeugfelder behandelt, die Sie beim Erstellen und Verwalten von Fahrzeugen.
|
Eine vollständige Liste der Fahrzeugfelder finden Sie hier: |
Feld „Fahrzeugattribute“
Im Feld attributes
des Fahrzeugs können Sie benutzerdefinierte Kriterien erstellen,
Verbrauchern oder Flottenbetreibern nach Fahrzeugen in Ihrem Fuhrpark
die Vielfalt der Suchkriterien. Dadurch können Ihre Apps
Bessere Übereinstimmungen mit Fahrzeugen im Vergleich zu Suchkriterien
die nur auf anderen Fahrzeugfeldern basieren. Jedes Fahrzeug darf maximal 100
und jedes muss einen eindeutigen Schlüssel haben. Werte können Zeichenfolgen,
Booleschen oder Zahlen verwenden.
So können Sie beispielsweise ein benutzerdefiniertes Attribut namens zone
in welcher Zone der Stadt Ihre Lieferfahrzeuge fahren. Sie würden
Verwenden Sie Stringwerte wie die folgenden, um verschiedene Zonen darzustellen: 1B
,
2C
und 3A
. Sie können dann im Flotten-Tracking einen Filter verwenden,
von Fahrzeugen, die in einer bestimmten Zone arbeiten, an den für diese Zone zuständigen Bediener.
Benutzerdefinierte Attributwerte müssen sich jedoch nicht gegenseitig ausschließen. Möglicherweise Verwenden Sie Kriterien wie beliefert verfügbar und hat-gekühlt. Jede dieser Optionen kann ein separates benutzerdefiniertes Attribut mit booleschen Werten sein. Ein bestimmtes Fahrzeug können alle drei benutzerdefinierten Attribute zusammen mit dem Feld zone benutzerdefiniertes Attribut, das auf den entsprechenden Zeichenfolgenwert festgelegt ist.
Fahrzeugattribute aktualisieren
Für jeden attributes
-Schlüssel kann pro Fahrzeug nur ein Wert angegeben werden. Sie erklären
benutzerdefinierten Fahrzeugattributen mithilfe des attributes
in der Feldmaske und dann
Werte basierend auf der folgenden Methode angeben.
Mit dieser UpdateDeliveryVehicle
API kann nicht nur ein einzelner
. Bei Verwendung dieser Methode wird der gesamte Satz der Fahrzeugattribute für das Fahrzeug neu deklariert, wenn das Feld attributes
in der Feldmaske verwendet wird. Dies führt zum Überschreiben von bereits vorhandenen Attributen,
explizit in der Feldmaske enthalten ist. Wenn Sie mit dieser Methode ein neues benutzerdefiniertes Attribut deklarieren, müssen Sie auch jedes benutzerdefinierte Attribut neu deklarieren, das für das Fahrzeug beibehalten werden soll. Wenn Sie attributes
in der Feldmaske ausschließen,
lassen die zuvor für das Fahrzeug definierten benutzerdefinierten Attribute unverändert.
Wenn Sie attributes
in der Feldmaske verwenden, aber keine Werte festlegen, ist das
Dies entspricht dem Entfernen aller benutzerdefinierten Attribute aus dem Fahrzeug.
Beispiel für Fahrzeugfelder aktualisieren
In diesem Abschnitt wird gezeigt, wie Sie Fahrzeugfelder mit
UpdateDeliveryVehicleRequest
mit einem update_mask
, das angibt,
welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Dokumentation zu Protokollpuffern unter „Feldmasken“.
Für Aktualisierungen anderer Felder als last_location
ist Fleet Engine Delivery erforderlich
Administratorberechtigungen.
Beispiel: Benutzerdefiniertes Attribut festlegen
In diesem Beispiel wird ein neues Attribut angegeben: zone
. Wie bereits unter Fahrzeugattribute aktualisieren erwähnt, müssen Sie beim Aktualisieren des Felds attributes
mit diesem Ansatz alle benutzerdefinierten Attribute angeben, die beibehalten werden sollen.
Deshalb zeigt das Beispiel einen available-at-night
-Wert, der geschrieben wird, um ihn beizubehalten.
während eines Aktualisierungsvorgangs, der die
attributes
.
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