배송 차량 필드 업데이트

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

  • type: 이 배송 수단의 유형입니다. 이로 인해 이 차량에 대해 생성된 경로입니다.
  • attributes[]: 유형의 옵션 배열 DeliveryVehicleAttribute 사용 차량의 커스텀 기준을 정의하여 차량의 성능을 향상 차량 검색 또는 나열 시 필터링 동작
 

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

차량 속성 필드

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

예를 들어 zone이라는 맞춤 속성을 선언하여 배송 차량이 운행되는 도시의 구역을 구별하세요. 이렇게 하면 다음과 같은 문자열 값을 사용하여 다른 영역을 나타냅니다. 1B 2C, 3A 그런 다음 Fleet 추적에서 필터를 사용하여 특정 구역에서 작동하는 차량을 해당 구역을 담당하는 운영자에게 보냅니다.

하지만 맞춤 속성 값을 상호 배타적으로 사용할 필요는 없습니다. 이 숙박 가능냉장 있음과 같은 기준을 사용합니다. 이러한 각 부울 값을 사용하는 별도의 맞춤 속성이 될 수 있습니다. 특정 차량 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

다음 단계