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 des Typs DeliveryVehicleAttribute Verwenden Sie um benutzerdefinierte Kriterien für Fahrzeuge in Ihrem Service zu definieren, beim Suchen oder Auflisten 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

Nächste Schritte