Crea un vehículo para viajes a pedido

Para crear un vehículo en Fleet Engine para viajes on demand, usa el extremo CreateVehicle con CreateVehicleRequest. Este endpoint requiere una cuenta con el rol de administrador de Fleet Engine On-demand.

Campos para vehículos de viajes a pedido

Cuando crees vehículos para viajes a pedido, debes establecer los campos obligatorios. También debes saber cómo ciertos campos de vehículos afectan otras funciones de Fleet Engine. Para ello, consulta Actualiza los campos del vehículo.

Campos obligatorios para los viajes a pedido

  • vehicle_state: El valor predeterminado es desconocido, pero debe establecerse en ONLINE o OFFLINE. Consulta la información para configurar el campo de estado del vehículo en Actualiza los campos del vehículo.
  • supported_trip_types: El valor predeterminado es desconocido, pero se debe establecer en SHARED, EXCLUSIVE o ambos. Para obtener más información, consulta Tipos de viajes en la guía de Viajes a pedido.
  • maximum_capacity: Es la cantidad de pasajeros que puede transportar el vehículo, sin incluir al conductor (por definición).
  • vehicle_type: Los valores son AUTO, TAXI, TRUCK, TWO_WHEELER, BICYCLE o PEDESTRIAN. Se puede usar para filtrar vehículos en las búsquedas de vehículos. Esto también influye en los cálculos de la ETA y la ruta. Fleet Engine proporciona rutas y cálculos de viaje que corresponden al modo de viaje según los siguientes grupos de tipos de vehículos:
    • AUTO, TAXI o TRUCK: Por ejemplo, autopistas.
    • TWO_WHEELER: Por ejemplo, no devolverá rutas en las que no se permitan vehículos de 2 ruedas.
    • BICYCLE: Por ejemplo, rutas para bicicletas.
    • PEDESTRIAN: Por ejemplo, puentes y senderos solo para peatones.

Otros campos

Para conocer otros campos que puedes configurar cuando creas un vehículo, consulta Actualiza los campos del vehículo.

Ejemplo de creación de vehículo

El valor que se muestra de CreateVehicle es la entidad Vehicle creada.

Java

static final String PROJECT_ID = "project-id";

VehicleServiceBlockingStub vehicleService =
    VehicleService.newBlockingStub(channel);

String parent = "providers/" + PROJECT_ID;
Vehicle vehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.OFFLINE)  // Initial state
    .addSupportedTripTypes(TripType.EXCLUSIVE)
    .setMaximumCapacity(4)
    .setVehicleType(VehicleType.newBuilder().setCategory(VehicleType.Category.AUTO))
    .addAttributes(VehicleAttribute.newBuilder()
        .setKey("on_trip").setValue("false"))  // Opaque to the Fleet Engine
    // Add .setBackToBackEnabled(true) to make this vehicle eligible for trip
    // matching while even if it is on a trip.  By default this is disabled.
    .build();

CreateVehicleRequest createVehicleRequest =
    CreateVehicleRequest.newBuilder()  // no need for the header
        .setParent(parent)
        .setVehicleId("vid-8241890")  // Vehicle ID assigned by Rideshare or Delivery Provider
        .setVehicle(vehicle)  // Initial state
        .build();

// In this case, the Vehicle is being created in the OFFLINE state and
// no initial position is being provided.  When the Driver App checks
// in with the Rideshare or Delivery Provider, the state can be set to ONLINE and
// the Driver App will update the Vehicle Location.

try {
  Vehicle createdVehicle =
      vehicleService.createVehicle(createVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle created successfully.

REST

curl -X POST \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles?vehicleId=vid-8241890" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "OFFLINE",
    "supportedTripTypes": ["EXCLUSIVE"],
    "maximumCapacity": 4,
    "vehicleType": {"category": "AUTO"},
    "attributes": [{"key": "on_trip", "value": "false"}]
}
EOM

Consulta la referencia de providers.vehicles.create.

¿Qué sigue?