Actualizar campos de vehículos

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

  • vehicle_state: Determina la disponibilidad del vehículo. para viajes nuevos.
  • vehicle_type: Es un campo obligatorio cuando se crea un vehículo. El campo también puede servir como criterio de filtro para las coincidencias de vehículos. Consulta Crea un vehículo para obtener detalles sobre cómo configurar este campo.
  • attributes[]: Es un array opcional de tipo. VehicleAttribute Usa definir criterios personalizados para 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 estado del vehículo

El sistema puede establecer el estado del vehículo en OFFLINE o ONLINE. Por ejemplo, podría establecer el estado del vehículo en ONLINE todos los días a las 9 a.m. y OFFLINE todos los días a las 5 p.m.

Modo OFFLINE Modo EN LÍNEA
Usa OFFLINE para indicar que un vehículo no acepta nuevos viajes. Ten en cuenta que el vehículo aún puede completar los viajes asignados mientras en este estado.
  • Un Vehicle creado en el estado ONLINE puede devolverse de inmediato en respuesta a consultas SearchVehicles. Consulta Buscar vehículos. para obtener más información más detalles.
  • Los vehículos creados en el estado ONLINE deben usar last_location en la llamada CreateVehicle.

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, puedes declarar un atributo personalizado llamado class para diferenciar tus vehículos de transporte compartido en los diferentes niveles de clase. Usarías el los siguientes valores de cadena para representar los niveles de clase de vehículo: ECONOMY, STANDARD y LUXURY.

Sin embargo, no es necesario que los valores de los atributos personalizados sean mutuamente excluyentes. Quizás usa criterios como apto para mascotas, no fumar y puede llevar más tiempo viajes. Cada uno de ellos puede ser un atributo personalizado independiente que use valores booleanos de salida. A un vehículo determinado se le podrían asignar los tres atributos personalizados. junto con el atributo personalizado class establecido en el valor de cadena adecuado.

Usar atributos de esta manera puede proporcionarte una amplia variedad de funciones útiles para encontrar vehículos para viajes con necesidades específicas. Para obtener instrucciones sobre cómo Si quieres usar atributos personalizados como filtros de consulta, consulta Buscar vehículos.

Actualiza los atributos del vehículo

Puedes actualizar los atributos del vehículo con UpdateVehicle o UpdateVehicleAttributes Cada clave attributes solo puede tener un valor por vehículo. Puedes declarar atributos personalizados de vehículos con el atributo attributes en la máscara de campo y, luego, proporcionará valores según el método que se indica a continuación.

UpdateVehicle UpdateVehicleAttributes
Esta API no permite actualizar un solo atributo. Al usar este método, cualquier uso de attributes en la máscara de campo da como resultado el conjunto completo de atributos de vehículos que se vuelvan a declarar para el vehículo. Esto da como resultado un reemplazo de cualquier atributo preexistente que no se haya incluido explícitamente en el máscara de campo. Si usas este método para declarar un nuevo atributo personalizado, haz lo siguiente: También debes volver a declarar cada atributo personalizado que quieras que el vehículo retener. Si excluyes attributes en la máscara de campo, este método deja los atributos personalizados existentes como se definió anteriormente para el vehículo. Si usas attributes en la máscara de campo, pero sin establecer valores, eso equivale a quitar todas atributos del vehículo. Este método acepta una lista específica de atributos para actualización. La solicitud actualiza o agrega solo los atributos especificados en la máscara de campo. Los atributos preexistentes que no se especifican permanecen sin alteraciones.

Ejemplo de actualización de campos de vehículos

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

Las actualizaciones de campos que no sean last_location requieren Fleet Engine a pedido Privilegios de administrador

Ejemplo: Habilitar un nuevo tipo de viaje y un atributo personalizado

En este ejemplo, se habilitan los viajes de back_to_back para el vehículo y también se especifica un nuevo atributo: class. Como se mencionó antes en Actualiza los atributos de vehículos, actualizar el campo attributes con este enfoque requiere que indiques todos atributos personalizados que quieras conservar. Por lo tanto, en el ejemplo se muestra un cash_only. valor escrito para evitar que se reemplace durante una operación de actualización. que especifique el campo attributes.

Para actualizar solo el valor de un par de atributos de clave-valor, usa el atributo UpdateVehicleAttributes en su lugar, sin incluir el campo attribute en la máscara de campo de la solicitud UpdateVehicle.

Consulta la referencia de providers.vehicles.update para gRPC y REST.

gRPC

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.ONLINE)
    .addAllAttributes(ImmutableList.of(
        VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
        VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
    .setBackToBackEnabled(true)
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("vehicle_state")
        .addPaths("attributes")
        .addPaths("back_to_back_enabled"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

REST

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "ONLINE",
    "attributes": [
      {"key": "class", "value": "LUXURY"},
      {"key": "cash_only", "value": "false"}
    ],
    "backToBackEnabled": true
}
EOM

¿Qué sigue?