Felder für Lieferfahrzeug aktualisieren

In diesem Dokument werden wichtige Fahrzeugfelder behandelt, die Sie beim Erstellen und Verwalten von Fahrzeugen.

  • type: Der Typ dieses Lieferfahrzeugs. Dies wirkt sich auf Routen, die für dieses Fahrzeug generiert wurden.
  • attributes[]: Ein Optionsarray vom Typ DeliveryVehicleAttribute. Mithilfe dieser Kriterien können Sie benutzerdefinierte Kriterien für Fahrzeuge in Ihrem Dienst definieren, um das Filterverhalten bei der Suche oder Auflistung von Fahrzeugen zu verbessern.
 

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. So können Sie mit Ihren Apps bessere Fahrzeugübereinstimmungen erzielen als mit Suchkriterien, die ausschließlich 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 verwenden Stringwerte wie die folgenden, um verschiedene Zonen darzustellen: 1B, 2C und 3A. Sie können dann mit einem Filter im Flotten-Tracking nur Fahrzeuge anzeigen, die sich in einer bestimmten Zone befinden, für die der für diese Zone zuständige Einsatzleiter verantwortlich ist.

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önnen alle drei dieser benutzerdefinierten Attribute sowie das benutzerdefinierte Zonenattribut mit dem entsprechenden Stringwert zugewiesen werden.

Fahrzeugattribute aktualisieren

Für jeden attributes-Schlüssel kann pro Fahrzeug nur ein Wert angegeben werden. Sie deklarieren benutzerdefinierte Fahrzeugattribute mithilfe von attributes in der Feldmaske und geben dann Werte anhand der folgenden Methode an.

Mit dieser UpdateDeliveryVehicle API kann nicht nur ein einzelnes Attribut aktualisiert werden. 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. Dadurch werden alle bereits vorhandenen Attribute überschrieben, die nicht ausdrücklich in der Feldmaske enthalten sind. 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 das 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 die Aktualisierung von Fahrzeugfeldern

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 sind Fleet Engine Delivery Admin-Berechtigungen erforderlich.

Beispiel: Benutzerdefiniertes Attribut festlegen

In diesem Beispiel wird ein neues Attribut angegeben: zone. Wie bereits im Abschnitt 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

Nächste Schritte