Felder für Lieferfahrzeug aktualisieren

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

  • type: Der Typ dieses Lieferfahrzeugs. Dies wirkt sich auf die für dieses Fahrzeug generierten Routen aus.
  • attributes[]: Ein Optionsarray vom Typ DeliveryVehicleAttribute. Verwenden Sie sie, um benutzerdefinierte Kriterien für Fahrzeuge in Ihrem Dienst zu definieren und das Filterverhalten bei der Suche oder Auflistung von Fahrzeugen zu optimieren.
 

Eine vollständige Liste der Fahrzeugfelder finden Sie unter:

Feld für Fahrzeugattribute

Mit dem Feld „Fahrzeug“ attributes können Sie benutzerdefinierte Kriterien erstellen, damit Ihre Kunden oder Flottenbetreiber Fahrzeuge in Ihrer Flotte anhand einer Vielzahl von Suchkriterien finden können. Dadurch werden die Möglichkeiten Ihrer Apps erweitert, bessere Fahrzeugübereinstimmungen zu erzielen, als wenn Sie Suchkriterien verwenden, die ausschließlich auf anderen Fahrzeugfeldern basieren. Jedes Fahrzeug kann maximal 100 Attribute haben und jedes Attribut 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 unterwegs sind. Sie können Stringwerte wie 1B, 2C und 3A verwenden, um verschiedene Zonen darzustellen. Sie könnten dann in Fleet Tracking einen Filter verwenden, um dem für diese Zone zuständigen Bediener nur Fahrzeuge anzuzeigen, die in einer bestimmten Zone unterwegs sind.

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önnten alle drei benutzerdefinierten Attribute sowie das benutzerdefinierte Attribut zone mit dem entsprechenden Stringwert zugewiesen werden.

Fahrzeugattribute aktualisieren

Jeder attributes-Schlüssel kann nur einen Wert pro Fahrzeug haben. Sie deklarieren benutzerdefinierte Fahrzeugattribute mit attributes in der Feldmaske und geben dann Werte basierend auf 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 alle Fahrzeugattribute für das Fahrzeug neu deklariert werden. 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 für das Fahrzeug beibehalten werden sollen. Wenn Sie 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 das Aktualisieren von Fahrzeugfeldern

In diesem Abschnitt wird beschrieben, wie Sie Fahrzeugfelder mit UpdateDeliveryVehicleRequest aktualisieren. Dazu gehört auch ein update_mask, um anzugeben, welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Protocol Buffers-Dokumentation zu 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 unter Fahrzeugattribute aktualisieren erwähnt, müssen Sie bei dieser Methode alle benutzerdefinierten Attribute angeben, die Sie beibehalten möchten, wenn Sie das Feld attributes aktualisieren. Im Beispiel wird daher ein available-at-night-Wert geschrieben, um zu verhindern, dass er bei einem Aktualisierungsvorgang, bei dem das Feld attributes angegeben wird, überschrieben wird.

Weitere Informationen finden Sie in der providers.deliveryVehicles.patch-Referenz.

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