Как создать поездку с одним пунктом назначения

В этом документе описывается, как создать поездку с одним пунктом назначения, задать правильные поля и назначить ее транспортному средству для выполнения. Предполагается, что вы настроили Fleet Engine, создали транспортные средства, у вас есть работающее приложение для водителей и, возможно, приложение для клиентов. См. следующие руководства:

Основы создания поездок

В этом разделе описываются сведения о запросе, необходимые для создания поездки в Fleet Engine. Вы отправляете запрос на создание с помощью gRPC или REST.

  • CreateTrip() метод: gRPC или REST
  • Сообщение CreateTripRequest: только gRPC

Поля поездки

Чтобы создать рейс в Fleet Engine, используйте следующие поля. Для разных типов поездок можно использовать разные поля: с одним или несколькими пунктами назначения, последовательные или совместные. Необязательные поля можно заполнить при создании рейса или позже, при его обновлении.

Поля поездки
Название Обязательно? Описание
parent Да Строка, содержащая идентификатор проекта. Этот идентификатор должен быть таким же, как и во всей интеграции Fleet Engine, с теми же ролями сервисного аккаунта.
trip_id Да Строка, которую вы создаете для уникальной идентификации этой поездки. Для идентификаторов поездок действуют определенные ограничения, указанные в справочной документации.
trip_type Да Задайте для параметра TripType одно из следующих значений в зависимости от типа поездки:
  • Один целевой URL. Задайте значение SHARED или EXCLUSIVE.
  • Multi-destination (Несколько целевых страниц): EXCLUSIVE.
  • Back-to-back (Последовательные встречи): EXCLUSIVE.
  • Общий пул. Задайте значение SHARED.
pickup_point Да Пункт отправления.
Промежуточные пункты Да

Только для поездок с несколькими пунктами назначения. Список промежуточных пунктов назначения, которые водитель посещает между посадкой и высадкой. Как и в случае с dropoff_point, это поле также можно задать позже, вызвав UpdateTrip, но поездка с несколькими пунктами назначения по определению содержит промежуточные пункты назначения.

vehicle_waypoints Да

Только для совместных поездок. В этом поле можно чередовать путевые точки из разных поездок. Он содержит все оставшиеся путевые точки для назначенного транспортного средства, а также путевые точки посадки и высадки для этой поездки. Чтобы задать это поле, вызовите метод CreateTrip или UpdateTrip. Вы также можете обновить путевые точки транспортного средства через поле waypoints с помощью вызова UpdateVehicle. Из соображений конфиденциальности сервис не возвращает эту информацию при вызовах GetTrip.

number_of_passengers Нет Количество пассажиров.
dropoff_point Нет Пункт назначения.
vehicle_id Нет Идентификатор транспортного средства, назначенного для поездки.

Пример: поездка в один пункт назначения

В примере ниже показано, как создать поездку в торговый центр Grand Indonesia East Mall. В поездке участвуют два пассажира, она эксклюзивная, а ее статус – NEW. Значение provider_id поездки должно совпадать с идентификатором проекта Google Cloud. В примере показан проект Google Cloud с идентификатором my-rideshare-co-gcp-project. В этом проекте также должен быть сервисный аккаунт для вызова Fleet Engine. Подробнее о ролях сервисных аккаунтов…

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

Дальнейшие действия