Создайте поездку в один пункт назначения

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

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

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

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

Поля поездок

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

Поля поездок
Имя Необходимый? Описание
родитель Да Строка, включающая идентификатор проекта. Этот идентификатор должен совпадать с идентификатором, используемым во всей вашей интеграции Fleet Engine, с теми же ролями учётной записи службы.
trip_id Да Строка, которую вы создаёте, чтобы уникально идентифицировать эту поездку. Идентификаторы поездок имеют определённые ограничения, как указано в справочнике.
тип_поездки Да Задайте для параметра TripType следующие значения для создаваемого типа поездки:
  • Один пункт назначения : установите значение SHARED или EXCLUSIVE .
  • Несколько пунктов назначения : установите значение EXCLUSIVE .
  • Спина к спине : установите значение EXCLUSIVE .
  • Общий пул : установите значение SHARED .
пункт_выдачи Да Место отправления поездки.
Промежуточные пункты назначения Да

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

точки_пути_транспортного_средства Да

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

количество_пассажиров Нет Количество пассажиров в поездке.
точка_высадки Нет Цель поездки.
идентификатор_транспортного_средства Нет Идентификатор транспортного средства, назначенного для поездки.

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

В следующем примере показано, как создать поездку в торговый центр 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;
}

Что дальше?