Criar uma viagem com um único destino

Este documento descreve como criar uma viagem de destino único, definir os campos corretos e atribuí-la a um veículo para ser concluída. Ele pressupõe que você configurou o Fleet Engine e criou veículos, tem um app de motorista em funcionamento e, opcionalmente, um app para o consumidor. Consulte os seguintes guias relacionados para isso:

Noções básicas da criação de viagens

Esta seção descreve os detalhes da solicitação necessários para criar uma viagem no Fleet Engine. Você emite uma solicitação de criação usando gRPC ou REST.

  • CreateTrip() método: gRPC ou REST
  • Mensagem CreateTripRequest: gRPC somente

Campos de viagem

Use os campos a seguir para criar uma viagem no Fleet Engine. É possível usar campos diferentes para os diferentes tipos de viagens: destino único ou múltiplo, consecutivas ou de compartilhamento. Você pode fornecer os campos opcionais ao criar a viagem ou defini-los mais tarde ao atualizar a viagem.

Campos de viagem
Nome Obrigatório? Descrição
parent Sim Uma string que inclui o ID do projeto. Esse ID precisa ser o mesmo usado em toda a integração do Fleet Engine, com os mesmos papéis da conta de serviço
trip_id Sim Uma string que você cria e que identifica exclusivamente essa viagem. Os IDs de viagem têm algumas restrições, conforme indicado na referência.
trip_type Sim Defina o TripType com os seguintes valores para o tipo de viagem que você está criando:
  • Destino único: defina como SHARED ou EXCLUSIVE.
  • Vários destinos: defina como EXCLUSIVE.
  • Consecutivas: defina como EXCLUSIVE.
  • Compartilhamento: defina como SHARED.
pickup_point Sim O ponto de origem da viagem.
Destinos intermediários Sim

Somente viagens com vários destinos: a lista de destinos intermediários que o motorista visita entre a retirada e o desembarque. Assim como dropoff_point, esse campo também pode ser definido mais tarde chamando UpdateTrip, mas uma viagem com vários destinos, por definição, contém destinos intermediários.

vehicle_waypoints Sim

Somente viagens de compartilhamento: esse campo oferece suporte à intercalação dos waypoints de várias viagens. Ele contém todos os waypoints restantes do veículo atribuído, bem como os waypoints de embarque e desembarque dessa viagem. É possível definir esse campo chamando CreateTrip ou UpdateTrip. Também é possível atualizar os waypoints do veículo pelo campo waypoints com uma chamada para UpdateVehicle. O serviço não retorna essas informações em chamadas GetTrip por motivos de privacidade.

number_of_passengers Não O número de passageiros na viagem.
dropoff_point Não O destino da viagem.
vehicle_id Não O ID do veículo atribuído à viagem.

Exemplo: viagem de destino único

O exemplo a seguir demonstra como criar uma viagem para o Grand Indonesia East Mall. A viagem envolve dois passageiros, é exclusiva e o status dela é NEW. O provider_id da viagem precisa ser igual ao ID do projeto do Google Cloud. Os exemplos mostram um projeto do Google Cloud com o ID do projeto my-rideshare-co-gcp-project. Esse projeto também precisa incluir uma conta de serviço para chamar o Fleet Engine. Consulte Papéis da conta de serviço para mais detalhes.

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

A seguir