차량 필드 업데이트

이 문서에서는 차량을 만들고 관리할 때 업데이트할 수 있는 중요한 차량 필드를 다룹니다.

  • vehicle_state: 새 이동에 사용할 수 있는 차량을 결정합니다.
  • vehicle_type: 차량을 만들 때 필수 필드입니다. 이 필드는 차량 일치를 위한 필터 기준 역할을 할 수도 있습니다. 이 필드 설정에 관한 자세한 내용은 차량 만들기를 참고하세요.
  • attributes[]: VehicleAttribute 유형의 배열(선택사항)입니다. 이를 사용하여 차량을 검색하거나 등록할 때 필터링 동작을 개선하는 맞춤 기준을 정의합니다.
 

차량 필드의 전체 목록은 다음을 참고하세요.

차량 상태 필드

시스템에서 차량 상태를 OFFLINE 또는 ONLINE로 설정할 수 있습니다. 예를 들어 매일 오전 9시에 차량 상태를 ONLINE로, 오후 5시에 OFFLINE로 설정할 수 있습니다.

오프라인 모드 ONLINE 모드
OFFLINE를 사용하여 차량이 새 이동을 허용하지 않음을 나타냅니다. 이 상태에서도 차량은 할당된 이동을 완료할 수 있습니다.
  • ONLINE 상태에서 생성된 VehicleSearchVehicles 쿼리에 대한 응답으로 즉시 반환될 수 있습니다. 자세한 내용은 차량 검색을 참고하세요.
  • ONLINE 상태에서 생성된 차량은 CreateVehicle 호출에서 last_location 필드를 사용해야 합니다.

차량 속성 필드

차량 attributes 필드를 사용하여 맞춤 기준을 만들어 소비자 또는 차량 관리자가 다양한 검색 기준을 통해 차량에서 차량을 찾을 수 있도록 합니다. 이렇게 하면 다른 차량 필드만을 기반으로 검색 기준을 사용하는 것보다 더 나은 차량 일치를 제공하는 앱의 기능이 향상됩니다. 각 차량에는 최대 100개의 속성이 있을 수 있으며, 각 속성에는 고유한 키가 있어야 합니다. 값은 문자열, 불리언 또는 숫자일 수 있습니다.

예를 들어 class라는 맞춤 속성을 선언하여 클래스 수준에서 차량 공유 차량을 구별할 수 있습니다. 문자열 값(ECONOMY, STANDARD, LUXURY)을 사용하여 차량 클래스 수준을 나타냅니다.

하지만 맞춤 속성 값은 상호 배타적이지 않아도 됩니다. 반려동물 동반 가능, 금연, 장거리 이동 가능과 같은 기준을 사용해 볼 수 있습니다. 이러한 속성은 불리언 값을 사용하는 별도의 맞춤 속성일 수 있습니다. 지정된 차량에는 이러한 세 가지 맞춤 속성과 함께 적절한 문자열 값으로 설정된 class 맞춤 속성이 할당될 수 있습니다.

이렇게 속성을 사용하면 특정 니즈가 있는 이동에 적합한 차량을 찾는 데 유용한 다양한 기능을 제공할 수 있습니다. 맞춤 속성을 쿼리 필터로 사용하는 방법에 관한 안내는 차량 검색을 참고하세요.

차량 속성 업데이트

UpdateVehicle 또는 UpdateVehicleAttributes를 사용하여 차량 속성을 업데이트할 수 있습니다. 각 attributes 키는 차량당 하나의 값만 가질 수 있습니다. 필드 마스크에서 attributes를 사용하여 맞춤 차량 속성을 선언한 다음 아래 메서드를 기반으로 값을 제공합니다.

UpdateVehicle UpdateVehicleAttributes
이 API는 단일 속성만 업데이트할 수 없습니다. 이 메서드를 사용하면 필드 마스크에서 attributes 필드를 사용하면 차량에 대한 차량 속성의 전체 세트가 다시 선언됩니다. 이렇게 하면 필드 마스크에 명시적으로 포함되지 않은 기존 속성이 덮어쓰기됩니다. 이 메서드를 사용하여 새 맞춤 속성을 선언하는 경우 차량에 유지하려는 모든 맞춤 속성도 다시 선언해야 합니다. 필드 마스크에서 attributes를 제외하면 이 메서드는 차량에 이전에 정의된 대로 기존 맞춤 속성을 그대로 둡니다. 필드 마스크에 attributes를 사용하지만 값을 설정하지 않으면 차량에서 모든 맞춤 속성을 삭제하는 것과 같습니다. 이 메서드는 업데이트할 속성의 특정 목록을 허용합니다. 요청은 필드 마스크에 지정된 속성만 업데이트하거나 추가합니다. 지정되지 않은 기존 속성은 변경되지 않습니다.

차량 필드 업데이트 예시

이 섹션에서는 업데이트할 필드를 나타내는 update_mask가 포함된 UpdateVehicleRequest를 사용하여 차량 필드를 업데이트하는 방법을 보여줍니다. 자세한 내용은 필드 마스크에 관한 프로토콜 버퍼 문서를 참고하세요.

last_location 이외의 필드를 업데이트하려면 Fleet Engine 주문형 관리자 권한이 필요합니다.

예: 새 이동 유형 및 맞춤 속성 사용 설정

이 예시에서는 차량에 back_to_back 이동을 사용 설정하고 새 속성 class도 지정합니다. 앞서 차량 속성 업데이트에서 설명했듯이 이 접근 방식을 사용하여 attributes 필드를 업데이트하려면 유지할 모든 맞춤 속성을 표시해야 합니다. 따라서 이 예에서는 attributes 필드를 지정하는 업데이트 작업 중에 덮어쓰지 않도록 보존하기 위해 작성된 cash_only 값을 보여줍니다.

하나의 키-값 속성 쌍 값만 업데이트하려면 대신 UpdateVehicleAttributes 메서드를 사용하고 UpdateVehicle 요청의 필드 마스크에 attribute 필드를 포함하지 마세요.

gRPCREST에 대한 providers.vehicles.update 참조를 확인하세요.

gRPC

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.ONLINE)
    .addAllAttributes(ImmutableList.of(
        VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
        VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
    .setBackToBackEnabled(true)
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("vehicle_state")
        .addPaths("attributes")
        .addPaths("back_to_back_enabled"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

REST

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "ONLINE",
    "attributes": [
      {"key": "class", "value": "LUXURY"},
      {"key": "cash_only", "value": "false"}
    ],
    "backToBackEnabled": true
}
EOM

다음 단계