Cómo crear un viaje de un solo destino

En este documento, se describe cómo crear un viaje de un solo destino, configurar los campos correctos y asignarlo a un vehículo para que lo lleve a cabo. Se da por sentado que configuraste Fleet Engine y que creaste vehículos, tienes una app para conductores que funciona y, de manera opcional, una app para consumidores. Consulta las siguientes guías relacionadas para ello:

Conceptos básicos para crear viajes

En esta sección, se describen los detalles de la solicitud necesarios para crear un viaje en Fleet Engine. Emites una solicitud de creación con gRPC o REST.

  • Método CreateTrip(): gRPC o REST
  • Mensaje CreateTripRequest: Solo gRPC

Campos de viaje

Usa los siguientes campos para crear un viaje en Fleet Engine. Puedes usar diferentes campos para los diferentes tipos de viajes: con un destino o varios, consecutivos o compartidos. Puedes proporcionar los campos opcionales cuando creas el viaje o puedes configurarlos más adelante cuando lo actualices.

Campos de viaje
Nombre ¿Obligatorio? Descripción
parent Es 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 Es una cadena que creas y que identifica de forma exclusiva este viaje. Los IDs de viaje tienen ciertas restricciones, como se indica en la referencia.
trip_type Establece TripType en los siguientes valores para el tipo de viaje que estás creando:
  • Destino único: Establece SHARED o EXCLUSIVE.
  • Multidestino: Se establece como EXCLUSIVE.
  • Back-to-back: Configurado como EXCLUSIVE.
  • Agrupación compartida: Se establece en SHARED.
pickup_point Es el punto de origen del viaje.
Destinos intermedios

Solo para viajes con varios destinos: Es la lista de destinos intermedios que visita el conductor entre el punto de partida y el destino. Al igual que con dropoff_point, este campo también se puede establecer más adelante llamando a UpdateTrip, pero un viaje con varios destinos, por definición, contiene destinos intermedios.

vehicle_waypoints

Solo viajes compartidos: Este campo admite la intercalación de los puntos de referencia de varios viajes. Contiene todos los puntos de referencia restantes del vehículo asignado, así como los puntos de partida y destino de este viaje. Puedes establecer este campo llamando a CreateTrip o UpdateTrip. También puedes actualizar los puntos de referencia del vehículo a través del campo waypoints con una llamada a UpdateVehicle. El servicio no muestra esta información en las llamadas a GetTrip por motivos de privacidad.

number_of_passengers No Es la cantidad de pasajeros del viaje.
dropoff_point No El destino del viaje.
vehicle_id No Es el ID del vehículo asignado al viaje.

Ejemplo: viaje a un solo destino

En el siguiente ejemplo, se muestra cómo crear un viaje al centro comercial Grand Indonesia East Mall. El viaje incluye dos pasajeros, es exclusivo y su estado es NEW. El provider_id del viaje debe ser el mismo que el ID del proyecto de Google Cloud. En los ejemplos, se muestra un proyecto de Google Cloud con el ID del proyecto my-rideshare-co-gcp-project. Este proyecto también debe incluir una cuenta de servicio para llamar a Fleet Engine. Consulta Roles de las cuentas de servicio para obtener más información.

static final String PROJECT_ID = "my-rideshare-co-gcp-project";

TripServiceBlockingStub tripService = TripService.newBlockingStub(channel);

// Trip initial settings.
String parent = "providers/" + PROJECT_ID;

Trip trip = Trip.newBuilder()
    .setTripType(TripType.EXCLUSIVE) // Use TripType.SHARED for carpooling.
    .setPickupPoint(                 // Grand Indonesia East Mall.
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.195139).setLongitude(106.820826)))
    .setNumberOfPassengers(2)
    // Provide the drop-off point if available.
    .setDropoffPoint(
        TerminalLocation.newBuilder().setPoint(
            LatLng.newBuilder()
                .setLatitude(-6.1275).setLongitude(106.6537)))
    .build();

// Create trip request
CreateTripRequest createTripRequest = CreateTripRequest.newBuilder()
    .setParent(parent)
    .setTripId("trip-8241890")  // Trip ID assigned by the provider.
    .setTrip(trip)              // The initial state is NEW.
    .build();

// Error handling.
try {
  Trip createdTrip = tripService.createTrip(createTripRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case ALREADY_EXISTS:
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}

¿Qué sigue?