Este documento descreve como criar uma viagem consecutiva, definir os campos corretos e atribuí-la a um veículo para ser concluída. Ele pressupõe que você já configurou o Fleet Engine, criou veículos, tem um app de motorista funcional e, opcionalmente, um aplicativo para o consumidor. Você também precisa estar familiarizado com os vários cenários de viagem disponíveis para viagens sob demanda. Consulte os seguintes guias relacionados:
- Configurar o Fleet Engine
- Criar um veículo
- Cenários de viagem na visão geral de viagens sob demanda
Princípios básicos 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 e REST.
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: de 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.
| 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:
|
| 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 o ponto de partida e o de destino. Assim como |
| 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 partida e destino dessa viagem. Você pode definir esse campo
chamando |
| 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: criar uma viagem consecutiva
O exemplo a seguir demonstra como criar uma viagem consecutiva e atribuí-la a um veículo. Nesse cenário, a criação de viagens é a mesma de uma viagem de destino único. Só mais tarde você cria outra viagem e a atribui a um veículo com uma viagem já ativa.
// 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;
}
Atualizar viagens consecutivas
Ao atribuir um veículo para uma viagem consecutiva, você atribui uma viagem a um veículo, mesmo que ele já tenha sido atribuído a uma.
Qualquer viagem criada no Fleet Engine precisa ser atribuída a um veículo para que o Fleet Engine calcule os ETAs da viagem e a rastreie. Você pode fazer isso durante a criação da viagem ou mais tarde, ao atualizar a viagem.
Depois de atribuir a viagem a um veículo, o Fleet Engine adiciona automaticamente os waypoints associados às viagens consecutivas ao campo de waypoints do veículo. O campo remainingWaypoints de uma viagem contém uma lista de todos os waypoints, incluindo aqueles de outras viagens que serão visitados antes do destino da viagem.
Por exemplo, considere duas viagens consecutivas: viagem A e viagem B. O veículo buscou o consumidor para a viagem A e, enquanto estava a caminho do local de destino, o motorista recebeu uma solicitação para buscar outro consumidor para a próxima viagem, a viagem B.
- A chamada
getVehicle()retornaremainingWaypointsque contêm:
A Drop-off → B Pickup → B Drop-off. - Either
getTrip()or theonTripRemainingWaypointsUpdatedcallback for Trip A returnsremainingWaypointsthat contain:
A Drop-off. getTrip()ou oonTripRemainingWaypointsUpdatedcallback para viagem B retornaremainingWaypointsque contêm:
A Drop-off → B Pickup → e B Drop-off.