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 für 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 nachts 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
Jeder attributes
-Schlüssel kann pro Fahrzeug nur einen Wert haben. 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 dieser Methode ist jede Verwendung des Felds attributes
im
Feldmaske führt dazu, dass der gesamte Satz von Fahrzeugattributen neu deklariert wird
für das Fahrzeug. Dies führt zum Überschreiben von bereits vorhandenen Attributen,
explizit in der Feldmaske enthalten ist. Wenn Sie mit dieser Methode eine neue
eines benutzerdefinierten Attributs hinzufügen, müssen Sie auch jedes benutzerdefinierte Attribut, für das der
das Fahrzeug zurückzubekommen. 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 Protocol Buffers auf
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 erwähnt,
Aktualisieren Sie die Fahrzeugattribute früher und aktualisieren Sie das Feld attributes
mit
Bei diesem Ansatz müssen Sie alle benutzerdefinierten Attribute angeben, die Sie beibehalten möchten.
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