Creare un viaggio con una sola destinazione

Questo documento descrive come creare una corsa con una singola destinazione, impostare i campi corretti e assegnarla a un veicolo per l'esecuzione. Si presuppone che tu abbia configurato Fleet Engine e creato i veicoli, che tu abbia un'app per i conducenti funzionante e, facoltativamente, un'app per utenti finali. Per questo, consulta le seguenti guide correlate:

Nozioni di base sulla creazione di un viaggio

Questa sezione descrive i dettagli della richiesta necessari per creare un percorso in Fleet Engine. Puoi inviare una richiesta di creazione utilizzando gRPC e REST.

  • Metodo CreateTrip(): gRPC o REST
  • Messaggio CreateTripRequest: solo gRPC

Campi relativi ai percorsi

Utilizza i seguenti campi per creare una corsa in Fleet Engine. Puoi utilizzare campi diversi per i diversi tipi di corse: con una o più destinazioni, consecutive o in car pooling condiviso. Puoi fornire i campi facoltativi quando crei il percorso o impostarli in un secondo momento quando lo aggiorni.

Campi della corsa
Nome Obbligatorio? Descrizione
parent Sì Una stringa che include l'ID progetto. Questo ID deve essere lo stesso utilizzato nell'intera integrazione di Fleet Engine, con gli stessi ruoli del service account.
trip_id Sì Una stringa creata da te che identifica in modo univoco questa corsa. Gli ID corsa presentano alcune limitazioni, come indicato nel riferimento.
trip_type Sì Imposta TripType sui seguenti valori per il tipo di corsa che stai creando:
  • Destinazione singola: imposta su SHARED o EXCLUSIVE.
  • Multi-destination: impostato su EXCLUSIVE.
  • Back-to-back: impostato su EXCLUSIVE.
  • Pooling condiviso: impostato su SHARED.
pickup_point Sì Il punto di partenza del viaggio.
Destinazioni intermedie Sì

Solo per corse con più destinazioni: l'elenco delle destinazioni intermedie che il conducente visita tra il ritiro e la consegna. Come per dropoff_point, questo campo può essere impostato anche in un secondo momento chiamando UpdateTrip, ma una corsa con più destinazioni per definizione contiene destinazioni intermedie.

vehicle_waypoints Sì

Solo per corse con car pooling: questo campo supporta l'interfoliazione dei waypoint di più corse. Contiene tutti i waypoint rimanenti per il veicolo assegnato, nonché i waypoint di partenza e arrivo per questa corsa. Puoi impostare questo campo chiamando CreateTrip o UpdateTrip. Puoi anche aggiornare i waypoint del veicolo tramite il campo waypoints con una chiamata a UpdateVehicle. Il servizio non restituisce queste informazioni nelle chiamate GetTrip per motivi di privacy.

number_of_passengers No Il numero di passeggeri del viaggio.
dropoff_point No La destinazione del viaggio.
vehicle_id No L'ID del veicolo assegnato alla corsa.

Esempio: viaggio con una sola destinazione

L'esempio seguente mostra come creare una corsa verso il Grand Indonesia East Mall. La corsa coinvolge due passeggeri, è esclusiva e il suo stato è NEW. La provider_id della corsa deve essere uguale all'ID progetto Google Cloud. Gli esempi mostrano un progetto Google Cloud con l'ID progetto my-rideshare-co-gcp-project. Questo progetto deve includere anche un service account per chiamare Fleet Engine. Per i dettagli, consulta Ruoli degli account di servizio.

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;
}

Passaggi successivi