차량 필드 업데이트

이 문서에서는 작업을 수행할 수 있는 중요한 차량 필드를 다룹니다. 업데이트할 때 사용됩니다.

  • vehicle_state: 새 이동에 사용할 수 있는 차량을 결정합니다.
  • vehicle_type: 차량을 만들 때 필수 필드입니다. 이 필드는 차량 일치의 필터 기준으로도 사용할 수 있습니다. 이 필드 설정에 관한 자세한 내용은 차량 만들기를 참고하세요.
  • attributes[]: VehicleAttribute 유형의 선택적 배열입니다. 사용 맞춤 기준을 정의하여 더욱 효과적인 차량 검색 또는 나열 시 필터링 동작
 

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

차량 상태 필드

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

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

차량 속성 필드

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

예를 들어 class라는 맞춤 속성을 선언하여 클래스 수준에 따라 차량 공유 차량을 차별화합니다. 차량 등급 수준을 나타내는 문자열 값은 ECONOMY, STANDARD, LUXURY입니다.

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

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

차량 속성 업데이트

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

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

차량 필드 업데이트 예시

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

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

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

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

하나의 키-값 속성 쌍의 값만 업데이트하려면 UpdateVehicleAttributes 메서드를 사용하고 attribute 필드를 포함하지 마세요. UpdateVehicle 요청에 대한 필드 마스크에 지정되었는지 확인합니다.

gRPCRESTproviders.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

다음 단계