更新外送車輛欄位

這份文件介紹重要的車輛欄位, 在建立及管理車輛時更新。

  • type:這輛交車的類型。影響範圍 為這輛車產生的路線
  • attributes[]:類型的選項陣列 DeliveryVehicleAttribute。使用 定義你的服務中車輛的自訂條件,以提升 過濾車輛的行為。
 

如需車輛欄位的完整清單,請參閱:

車輛屬性欄位

請使用車輛 attributes 欄位建立自訂條件,以便啟用 或車隊操作員,為你旗下車隊 多樣化的搜尋條件這可提升應用程式的能力 比起使用搜尋條件,系統會提供更合適的車輛比對結果 僅依據其他車輛欄位為依據。每輛車最多可有 100 個 屬性,且每個屬性都必須有其專屬的鍵。值可以是字串 布林值或數字,

例如,您可以宣告名為 zone 的自訂屬性,以將 區分送貨車輛營運的城市位於哪個區域。你 使用字串值來代表不同的可用區,例如:1B2C3A。之後,你便可在機群追蹤中使用篩選器 在特定區域運作的車輛給負責該區域的業者。

不過,自訂屬性值不一定要彼此互斥。您可能會 使用 available-at-nightre-frigeration 等條件。每個 可以是使用布林值的獨立自訂屬性。特定車輛 指派給這三個自訂屬性和區域 自訂屬性設為適當的字串值。

更新車輛屬性

每個 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

後續步驟