En este documento, se describe cómo crear un viaje consecutivo, establecer los campos correctos y asignarlo a un vehículo para que se complete. Se da por sentado que configuraste Fleet Engine, creaste vehículos, tienes una app para conductores que funciona y, de manera opcional, una aplicación para consumidores. También debes estar familiarizado con los distintos casos de uso de viajes disponibles para los viajes a pedido. Consulta las siguientes guías relacionadas para obtener más información:
- Configura Fleet Engine
- Crea un vehículo
- Casos de uso de viajes en la descripción general de viajes a pedido
Conceptos básicos sobre la creación de viajes
En esta sección, se describen los detalles de la solicitud necesarios para crear un viaje en Fleet Engine. Puedes emitir una solicitud de creación con gRPC o REST.
Campos de viaje
Usa los siguientes campos para crear un viaje en Fleet Engine. Puedes usar diferentes campos para los distintos tipos de viajes: de un solo destino o de varios destinos, consecutivos o de viajes compartidos. Puedes proporcionar los campos opcionales cuando creas el viaje o puedes configurarlos más adelante cuando lo actualices.
| Nombre | ¿Obligatorio? | Descripción |
|---|---|---|
| parent | Sí | Una cadena que incluye el ID del proyecto. Este ID debe ser el mismo que se usa en toda la integración de Fleet Engine, con los mismos roles de cuenta de servicio. |
| trip_id | Sí | Una cadena que creas y que identifica este viaje de forma exclusiva. Los IDs de viaje tienen ciertas restricciones, como se indica en la referencia. |
| trip_type | Sí | Establece el TripType en los siguientes valores para el tipo de viaje que estás creando:
|
| pickup_point | Sí | El punto de origen del viaje. |
| Destinos intermedios | Sí | Solo viajes de varios destinos: La lista de destinos intermedios que visita el conductor entre la recogida y el destino. Al igual que con |
| vehicle_waypoints | Sí | Solo viajes compartidos: Este campo admite la intercalación de los puntos de ruta de varios viajes.
Contiene todos los puntos de ruta restantes del vehículo asignado, así como los puntos de ruta de recogida y destino de este viaje. Puedes configurar este campo
llamando a |
| number_of_passengers | No | La cantidad de pasajeros en el viaje. |
| dropoff_point | No | El destino del viaje. |
| vehicle_id | No | El ID del vehículo asignado al viaje. |
Ejemplo: Crea un viaje consecutivo
A continuación, se muestra cómo crear un viaje consecutivo y asignarlo a un vehículo. En este caso, la creación del viaje es la misma que para un viaje de un solo destino. Solo más adelante crearás otro viaje y lo asignarás a un vehículo con un viaje ya activo.
// A vehicle with ID 'my-vehicle' is already created and it is assigned to a trip with ID 'current-trip'.
static final String PROJECT_ID = "my-rideshare-co-gcp-project";
static final String VEHICLE_ID =" my-vehicle";
static final String TRIP_ID = "back-to-back-trip");
TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);
String parent = "providers/" + PROJECT_ID;
Trip trip = Trip.newBuilder()
.setTripType(TripType.EXCLUSIVE)
.setPickupPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.195139).setLongitude(106.820826)))
.setDropoffPoint(
TerminalLocation.newBuilder().setPoint(
LatLng.newBuilder()
.setLatitude(-6.1275).setLongitude(106.6537)))
.setVehicleId(VEHICLE_ID)
.build();
// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
.setParent(parent)
.setTripId(TRIP_ID)
.setTrip(trip)
.build();
// Error handling.
try {
// Fleet Engine automatically assigns a 'waypoints' list to the trip containing
// the vehicle's current trip waypoints.
Trip createdTrip =
tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
Actualiza los viajes consecutivos
Cuando asignas un vehículo para un viaje consecutivo, asignas un viaje a un vehículo, incluso si ya se le asignó uno.
Cualquier viaje creado en Fleet Engine debe asignarse a un vehículo para que Fleet Engine pueda calcular las ETA del viaje y hacer un seguimiento de él. Puedes hacerlo durante la creación del viaje o más adelante cuando lo actualices.
Después de asignar el viaje a un vehículo, Fleet Engine agrega automáticamente los puntos de ruta asociados con los viajes consecutivos al campo de puntos de ruta del vehículo. El campo remainingWaypoints de un viaje contiene una lista de todos los puntos de ruta, incluidos los de otros viajes que se visitarán antes del destino del viaje.
Por ejemplo, considera dos viajes consecutivos: el viaje A y el viaje B. El vehículo recogió al consumidor para el viaje A y, mientras se dirigía al destino, el conductor recibió una solicitud para recoger a otro consumidor para el siguiente viaje, el viaje B.
- Si llamas a
getVehicle(), se muestraremainingWaypointsque contiene lo siguiente:
Destino A → Recogida B → Destino B. - Ya sea
getTrip()o laonTripRemainingWaypointsUpdateddevolución de llamada para el viaje A, se muestraremainingWaypointsque contiene lo siguiente:
Destino A. - Ya sea
getTrip()o laonTripRemainingWaypointsUpdateddevolución de llamada para el viaje B, se muestraremainingWaypointsque contiene lo siguiente:
Destino A → Recogida B → y Destino B.