이 문서에서는 작업을 수행할 수 있는 중요한 차량 필드를 다룹니다. 업데이트할 때 사용됩니다.
|
차량 필드의 전체 목록은 다음을 참고하세요. |
차량 속성 필드
차량 attributes
필드를 사용하여 맞춤 기준을 만들어 소비자 또는 차량 운영자가 다양한 검색 기준을 통해 차량에서 차량을 찾을 수 있도록 합니다. 이렇게 하면 앱의 기능이 향상되어
검색 기준을 사용할 때보다 더 나은 차량 일치를 제공합니다.
다른 차량 필드에만 기반합니다. 각 차량은 최대 100대
속성이며, 각 속성에는 고유한 키가 있어야 합니다. 값은 문자열, 불리언 또는 숫자일 수 있습니다.
예를 들어 zone이라는 맞춤 속성을 선언하여 배송 차량이 운행하는 도시의 영역을 구분할 수 있습니다. 이렇게 하면
다음과 같은 문자열 값을 사용하여 다른 영역을 나타냅니다. 1B
2C
, 3A
그런 다음 차량 추적에서 필터를 사용하여 특정 구역에서 작업하는 차량만 해당 구역을 담당하는 운영자에게 표시할 수 있습니다.
하지만 맞춤 속성 값을 상호 배타적으로 사용할 필요는 없습니다. 이 숙박 가능 및 냉장 있음과 같은 기준을 사용합니다. 이러한 각 속성은 부울 값을 사용하는 별도의 맞춤 속성일 수 있습니다. 지정된 차량에는 적절한 문자열 값으로 설정된 zone 커스텀 속성과 함께 이러한 세 가지 커스텀 속성이 모두 할당될 수 있습니다.
차량 속성 업데이트
각 attributes
키에는 차량당 하나의 값만 있을 수 있습니다. 필드 마스크에서 attributes
를 사용하여 맞춤 차량 속성을 선언한 다음 아래 메서드를 기반으로 값을 제공합니다.
이 UpdateDeliveryVehicle
API는 단일 버전만 업데이트할 수 없습니다.
속성 이 메서드를 사용하면 필드 마스크에서 attributes
필드를 사용하면 차량에 대한 차량 속성의 전체 세트가 재선언됩니다. 이렇게 하면 필드 마스크에 명시적으로 포함되지 않은 기존 속성이 덮어쓰기됩니다. 이 메서드를 사용하여 새 포드를 선언하고
맞춤 속성을 사용하려는 경우 해당 광고를 표시하려는 모든 맞춤 속성도
유지되어야 합니다. 필드 마스크에서 attributes
를 제외하면 이 메서드는 기존 맞춤 속성을 차량에 이전에 정의된 대로 그대로 둡니다.
필드 마스크에 attributes
를 사용하지만 값을 설정하지 않으면
이는 차량에서 모든 맞춤 속성을 삭제하는 것과 같습니다.
차량 필드 업데이트 예시
이 섹션에서는 다음을 사용하여 차량 필드를 업데이트하는 방법을 보여줍니다.
UpdateDeliveryVehicleRequest
: 다음을 나타내는 update_mask
를 포함합니다.
업데이트할 필드입니다. 자세한 내용은 필드 마스크에 관한 프로토콜 버퍼 문서를 참고하세요.
last_location
이외의 필드를 업데이트하려면 Fleet Engine Delivery가 필요합니다.
관리자 권한이 있어야 합니다.
예: 맞춤 속성 설정
이 예시에서는 새 속성 zone
를 지정합니다. 참조:
앞서 차량 속성을 업데이트하고 다음을 사용하여 attributes
필드를 업데이트하세요.
이 접근 방식을 사용하려면 유지할 모든 커스텀 속성을 표시해야 합니다.
따라서 이 예에서는 보존을 위해 작성된 available-at-night
값을 보여줍니다.
덮어써지지 않도록 하려면
attributes
필드
providers.deliveryVehicles.patch 참조를 확인하세요.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
.addAllAttributes(ImmutableList.of(
DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(myDeliveryVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("attributes"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"attributes": [
{"key": "zone", "value": "1B"},
{"key": "available-at-night", "value": "true"}
]
}
EOM