Criar uma viagem com um único destino

Este documento descreve como criar uma única viagem de destino, definir as campos e atribuí-los a um veículo para preenchimento. Ele pressupõe que você configurou a frota Engine e que tenha criado veículos, tenha um app de motorista funcionando e opcionalmente, um aplicativo para o consumidor. Consulte os seguintes guias relacionados para isso:

Noções básicas de 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 e REST.

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

Campos da viagem

Use os campos a seguir para criar uma viagem no Fleet Engine. É possível usar diferentes para os diferentes tipos de viagem: um ou vários destinos, em viagens consecutivas ou compartilhadas. Você você pode fornecer os campos opcionais ao criar a viagem ou pode 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 a mesma conta de serviço papéis de segurança na nuvem.
trip_id Sim Uma string criada por você que identifica exclusivamente essa viagem. Os IDs de viagem têm restrições específicas, 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.
  • Conversas: defina como EXCLUSIVE.
  • Compartilhamento de recursos: defina como SHARED.
pickup_point Sim 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 durante a viagem. embarque e desembarque. Assim como em dropoff_point, esse campo também pode ser definido posteriormente chamando UpdateTrip, mas um multidestino viagem, por definição, contém destinos intermediários.

vehicle_waypoints Sim

Somente viagens em pool compartilhado: este campo permite a intercalação dos waypoints de várias viagens. Contém todos os waypoints restantes do veículo atribuído, bem como como os waypoints de embarque e desembarque desta viagem. É possível definir esse campo chame CreateTrip ou UpdateTrip. Também é possível atualizar os pontos de passagem 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 ID do veículo atribuído à viagem.

Exemplo: viagem de destino único

O exemplo a seguir demonstra como criar uma viagem para a Grande Indonésia Shopping East Mall. A viagem envolve dois passageiros, é exclusiva e tem o status NEW. O provider_id da viagem precisa ser o mesmo do Google Cloud ID do projeto. Os exemplos mostram um projeto do Google Cloud com o ID de 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 de contas 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