배송 차량 필드 업데이트

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

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

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

차량 속성 필드

차량 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

다음 단계