단일 목적지 이동 만들기

이 문서에서는 단일 대상 이동을 만들고, 올바른 필드를 설정하고, 이동을 완료할 차량에 할당하는 방법을 설명합니다. Fleet Engine을 설정하고 차량을 만들었으며, 작동하는 드라이버 앱과 선택적으로 소비자 앱이 있다고 가정합니다. 관련 가이드는 다음을 참고하세요.

이동 생성 기본사항

이 섹션에서는 Fleet Engine에서 이동을 만드는 데 필요한 요청 세부정보를 설명합니다. gRPC 또는 REST를 사용하여 생성 요청을 실행합니다.

  • CreateTrip() 메서드: gRPC 또는 REST
  • CreateTripRequest 메시지: gRPC만 해당

이동 필드

Fleet Engine에서 이동을 만들려면 다음 필드를 사용하세요. 단일 또는 다중 대상, 연속 또는 공유 풀링 이동과 같은 다양한 유형의 이동에 서로 다른 필드를 사용할 수 있습니다. 이동을 만들 때 선택적 필드를 제공하거나 나중에 이동을 업데이트할 때 설정할 수 있습니다.

이동 필드
이름 필수 여부 설명
parent 프로젝트 ID가 포함된 문자열입니다. 이 ID는 동일한 서비스 계정 역할을 사용하여 전체 Fleet Engine 통합에서 사용되는 ID와 동일해야 합니다.
trip_id 이 이동을 고유하게 식별하는 사용자가 만드는 문자열입니다. 이동 ID에는 특정 제한사항이 있습니다. 참조에 표시된 대로
trip_type 만들려는 이동 유형에 따라 TripType을 다음 값으로 설정합니다.
  • 단일 대상: SHARED 또는 EXCLUSIVE로 설정합니다.
  • 다중 대상: EXCLUSIVE로 설정합니다.
  • 연속: EXCLUSIVE로 설정합니다.
  • 공유 풀링: SHARED로 설정합니다.
pickup_point 이동의 출발지입니다.
중간 대상

다중 대상 이동만 해당: 드라이버가 픽업과 하차 사이에 방문하는 중간 대상 목록입니다. dropoff_point와 마찬가지로 이 필드는 나중에 UpdateTrip을 호출하여 설정할 수도 있지만 다중 대상 이동에는 기본적으로 중간 대상이 포함됩니다.

vehicle_waypoints

공유 풀링 이동만 해당: 이 필드는 여러 이동의 경유지를 인터리빙하는 것을 지원합니다. 할당된 차량의 나머지 모든 경유지와 이 이동의 픽업 및 하차 경유지가 포함되어 있습니다. `CreateTrip` 또는 `UpdateTrip`을 호출하여 이 필드를 설정할 수 있습니다. `UpdateVehicle`을 호출하여 `waypoints` 필드를 통해 차량 경유지를 업데이트할 수도 있습니다. 개인 정보 보호를 위해 서비스는 GetTrip 호출 에서 이 정보를 반환하지 않습니다.

number_of_passengers 아니요 이동의 승객 수입니다.
dropoff_point 아니요 이동의 대상입니다.
vehicle_id 아니요 이동에 할당된 차량의 ID입니다.

예: 단일 대상 이동

다음 예에서는 Grand Indonesia East Mall로 이동을 만드는 방법을 보여줍니다. 이동에는 두 명의 승객이 있으며, 독점적이고 상태는 NEW입니다. 이동의 provider_id는 Google Cloud 프로젝트 ID와 동일해야 합니다. 이 예에서는 프로젝트 ID가 my-rideshare-co-gcp-project인 Google Cloud 프로젝트를 보여줍니다. 이 프로젝트에는 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;
}

다음 단계