Actualizar campos de vehículos de entrega

Este documento abarca campos importantes de vehículos que puedes cuando crees y administres vehículos.

  • type: Es el tipo de este vehículo de entrega. Esto afecta rutas generadas para este vehículo.
  • attributes[]: Es un array de opciones de tipo. DeliveryVehicleAttribute Usa definir criterios personalizados para vehículos en tu servicio y así mejorar el comportamiento del filtro cuando se buscan o muestran vehículos.
 

Para obtener una lista completa de los campos de vehículos, consulta lo siguiente:

Campo de atributos del vehículo

Usa el campo attributes del vehículo para crear criterios personalizados que permitan habilitar tu consumidores o operadores de flota para encontrar vehículos en tu flota en una zona más amplia diversos criterios de búsqueda. Esto mejora las capacidades de tus apps para Proporcionar mejores coincidencias de vehículos respecto de lo que usarías si usaras los criterios de búsqueda basada únicamente en otros campos de vehículos. Cada vehículo puede tener como máximo 100 atributos y cada uno debe tener una clave única. Los valores pueden ser cadenas, booleanos o números.

Por ejemplo, podrías declarar un atributo personalizado llamado zone para hacer lo siguiente: diferenciar en qué zona de la ciudad operan tus vehículos de entrega. Le usa valores de cadena como los siguientes para representar diferentes zonas: 1B, 2C y 3A. Luego, podrías usar un filtro en el seguimiento de flotas para solo mostrar vehículos que trabajan en una zona específica al operador responsable de esa zona.

Sin embargo, no es necesario que los valores de los atributos personalizados sean mutuamente excluyentes. Quizás usa criterios como disponible por la noche y con refrigeración. Cada uno de estos Podría ser un atributo personalizado independiente que use valores booleanos. Un vehículo determinado se le pueden asignar estos tres atributos personalizados junto con el campo zone el atributo personalizado con el valor de cadena adecuado.

Actualiza los atributos del vehículo

Cada clave de attributes solo puede tener un valor por vehículo. Usted declara atributos personalizados del vehículo con attributes en la máscara de campo y, luego, y proporciona valores basados en el método que se indica a continuación.

Esta API de UpdateDeliveryVehicle no permite actualizar solo un . Cuando uses este método, cualquier uso del campo attributes en el La máscara de campo hace que se vuelva a declarar el conjunto completo de atributos del vehículo. para el vehículo. Esto provocará que se reemplacen los atributos preexistentes se incluye explícitamente en la máscara de campo. Si usas este método para declarar un nuevo atributo personalizado, también debe volver a declarar cada atributo personalizado que desee que vehículo para retener. Si excluyes attributes en la máscara de campo, este deja los atributos personalizados existentes como se definió anteriormente para el vehículo. Si usas attributes en la máscara de campo, pero sin configurar valores, lo que equivale a quitar todos los atributos personalizados del vehículo.

Ejemplo de actualización de campos de vehículos

En esta sección, se muestra cómo actualizar los campos de vehículos con UpdateDeliveryVehicleRequest, que incluye un update_mask para indicar qué campos actualizar. Consulta la documentación sobre búferes de protocolo máscaras de campo para obtener más detalles.

Las actualizaciones de campos que no sean last_location requieren la entrega de Flet Engine Privilegios de administrador

Ejemplo: establecer un atributo personalizado

En este ejemplo, se especifica un nuevo atributo: zone. Como se indica en Actualiza los atributos del vehículo antes y actualiza el campo attributes usando Este enfoque requiere que indiques todos los atributos personalizados que deseas conservar. Por lo tanto, en el ejemplo, se muestra un valor available-at-night escrito para preservarlo. se reemplace durante una operación de actualización que especifique la attributes.

Consulta la referencia de 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

¿Qué sigue?