列出配送車輛

本文說明如何列出外送車輛。

環境和限制

你可以從伺服器或瀏覽器環境列出廣告放送媒介。司機 SDK 不支援列出運送車輛。

列出配送車輛會要求廣泛存取配送車輛,因此僅限信任的使用者使用。提出列出配送車輛要求時,請使用配送車隊讀取者或 Fleet Engine 配送管理員權杖。

列出的配送車輛會遮蓋下列欄位,因為這些欄位會影響回應大小:

  • CurrentRouteSegment
  • RemainingVehicleJourneySegments

用量

您可以依屬性篩選器和可視區域邊界列出車輛。如未指定篩選器或可視區域,回應會包含所有外送車輛。

含屬性篩選條件的清單

您可以使用 attributes 屬性,依篩選條件列出外送車輛。舉例來說,如要查詢鍵為 my_key 且值為 my_value 的屬性,請使用 attributes.my_key = my_value。如要查詢多個屬性,請使用邏輯 AND 和 OR 運算子彙整查詢,如 attributes.key1 = value1 AND attributes.key2 = value2 所示。如需篩選器查詢語法的完整說明,請參閱 AIP-160。如果將篩選器與可視區域邊界結合,篩選器會做為可視區域邊界的 AND 運算子。詳情請參閱「車輛屬性篩選器查詢」。

含有可視區域邊界的清單

您可以使用 viewport 要求參數,依位置篩選列出的外送車輛。viewport 要求參數會使用兩個邊界座標定義可視區域:high (東北) 和 low (西南) 經緯度座標組合。如果要求中的高緯度在地理位置上低於低緯度,要求就會遭到拒絕。

列出回覆

根據預設,系統會使用合理的頁面大小,將外送車輛清單分頁。如果指定頁面大小,要求只會傳回不超過限制的車輛數量。如果要求的分頁大小超過內部上限,系統會使用內部上限。預設和最大頁面大小皆為 100 輛車。

外送車輛清單可包含權杖,用於讀取下一頁結果。只有在有更多頁面的配送車輛可供擷取時,回應中才會出現頁面權杖。如要擷取下一頁的工作,請使用頁面權杖,並傳送與先前要求完全相同的要求。

列出車輛範例

您可以使用 Java gRPC 程式庫或 REST,列出特定區域中具有特定屬性的配送車輛。成功的回應仍可能空白。這表示指定可視區域中沒有具備指定屬性的車輛。如需支援語言的完整清單,請參閱「排定工作服務的用戶端程式庫」。

Java


  static final String PROJECT_ID = "my-delivery-co-gcp-project";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Tasks request
  String parent = "providers/" + PROJECT_ID;
  ListDeliveryVehiclesRequest listDeliveryVehiclesRequest =
    ListDeliveryVehiclesRequest.newBuilder()  // No need for the header
        .setParent(parent)
        .setViewport(
              Viewport.newBuilder()
                .setHigh(LatLng.newBuilder()
                    .setLatitude(37.45)
                    .setLongitude(-122.06)
                    .build())
                .setLow(LatLng.newBuilder()
                    .setLatitude(37.41)
                    .setLongitude(-122.11)
                    .build())
        .setFilter("attributes.my_key = my_value")
        .build();

  try {
    ListDeliveryVehiclesResponse listDeliveryVehiclesResponse =
        deliveryService.listDeliveryVehicles(listDeliveryVehiclesRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
        case NOT_FOUND:
            break;

        case PERMISSION_DENIED:
            break;
    }
    return;
  }

REST

  # HTTP request
  html GET https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles

  # Request with a filter
  # Request sets JWT, PROJECT_ID, and VEHICLE_ID in the local environment
  curl -H "Authorization: Bearer ${JWT}" \
    "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles?filter=attributes.my_key%20%3D%20my_value%20&viewport.high.latitude=37.45&viewport.high.longitude=-122.06&viewport.low.latitude=37.41&viewport.low.longitude=-122.11"

如果查詢成功,回應主體會包含結構如下的資料:

  // JSON representation
  {
    "deliveryVehicles": [
      {
        object (DeliveryVehicle)
      }
    ],
    "nextPageToken": string,
    "totalSize": integer
  }

後續步驟