Felder für Lieferfahrzeug aktualisieren

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

  • type: Der Typ des Lieferfahrzeugs. Das wirkt sich auf die für dieses Fahrzeug generierten Routen aus.
  • 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 unter:

Feld „Fahrzeugattribute“

Verwenden Sie das Feld „Fahrzeug“ attributes, um benutzerdefinierte Kriterien zu erstellen, mit denen Ihre Kunden oder Flottenbetreiber Fahrzeuge in Ihrer Flotte anhand einer größeren Auswahl an Suchkriterien finden können. So können Sie mit Ihren Apps bessere Fahrzeugübereinstimmungen erzielen als mit Suchkriterien, die ausschließlich auf anderen Fahrzeugfeldern basieren. Jedes Fahrzeug kann maximal 100 Attribute haben und jedes muss einen eindeutigen Schlüssel haben. Werte können Strings, Boolesche Werte oder Zahlen sein.

Sie könnten beispielsweise ein benutzerdefiniertes Attribut namens zone deklarieren, um zu unterscheiden, in welcher Zone der Stadt Ihre Lieferfahrzeuge unterwegs sind. Sie verwenden Stringwerte wie die folgenden, um verschiedene Zonen darzustellen: 1B, 2C und 3A. Mit einem Filter in Fleet Tracking können Sie dann dem für eine bestimmte Zone zuständigen Betreiber nur Fahrzeuge anzeigen, die sich in dieser Zone befinden.

Werte für benutzerdefinierte Attribute müssen jedoch nicht sich 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 zugewiesen werden, zusammen mit dem benutzerdefinierten Attribut zone, das auf den entsprechenden Stringwert festgelegt ist.

Fahrzeugattribute aktualisieren

Jeder attributes-Schlüssel kann pro Fahrzeug nur einen Wert haben. 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 Verwendung dieser Methode wird bei jeder Verwendung des Felds attributes in der Feldmaske der gesamte Satz der Fahrzeugattribute für das Fahrzeug neu deklariert. Dadurch werden alle vorhandenen Attribute überschrieben, die nicht ausdrücklich in der Feldmaske enthalten sind. 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 die 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 erfahren Sie, wie Sie Fahrzeugfelder mit UpdateDeliveryVehicleRequest aktualisieren. update_mask gibt an, welche Felder aktualisiert werden sollen. Weitere Informationen finden Sie in der Protocol Buffers-Dokumentation zu Feldmasken.

Für Aktualisierungen an anderen Feldern als last_location sind die Berechtigungen Fleet Engine Delivery Admin erforderlich.

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 Sie beibehalten möchten. Daher wird im Beispiel ein available-at-night-Wert geschrieben, damit er bei einem Aktualisierungsvorgang, bei dem das Feld attributes angegeben wird, nicht überschrieben wird.

Weitere Informationen finden Sie in der Referenz 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