本文件將說明如何從 伺服器或瀏覽器。Fleet Engine 支援兩種尋找工作的方式:
查詢工作:您可以使用下列 ID 查詢工作:
- 工作 ID:使用者 (例如擁有完整存取權的機群運算子) 會使用 工作資料的檢視畫面
- 追蹤 ID:供客戶軟體用於提供有限資訊 使用者,例如他們公司預計會在家中提供包裹。
請務必瞭解工作 ID 和工作之間的差異 追蹤 ID兩者並不相同。請參閱「基本工作欄位」一文 排程工作指南。
列出工作:可廣泛存取工作,僅適用於信任的使用者。
查詢工作
本節說明如何按工作 ID 或追蹤 ID 查詢工作。它有 下列要求:
按追蹤 ID 查詢時必須遵守瀏覽權限規則 詳情請見「已追蹤物件的瀏覽權限規則」一節。
盡可能使用最小的符記來降低安全性風險。舉例來說,如果您在 使用交付用戶端權杖,任何呼叫都傳回 只顯示與使用者相關的資訊,像是貨運公司 收貨者。Fleet Engine 會遮蓋 回應。如要進一步瞭解符記,請參閱 JSON 網頁符記。
依工作 ID 查詢工作
您可以使用 gRPC 或 gRPC 從伺服器環境中的工作 ID 查詢工作 REST,下列範例說明如何使用 Java gRPC 程式庫或 向 GetTask 發出的 REST 要求。
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8597549";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task request
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder() // No need for the header
.setName(taskName)
.build();
try {
Task task = deliveryService.getTask(getTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>
- <id> 是工作的專屬 ID。
- <taskId> 是要查詢的工作 ID。
- 要求標頭必須包含 Authorization 欄位,當中須有相應的值 不記名 <token>,其中 <token> 是由您的伺服器核發 服務帳戶角色中所述的指南,以及 JSON Web 權杖。
- 要求主體必須為空白。
- 如果查詢成功,回應主體會包含工作實體。
curl
指令範例:
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
"https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"
透過追蹤 ID 查詢工作
以下範例說明如何依據運送追蹤 ID 查詢工作
並透過 gRPC 或 HTTP REST 呼叫 GetTaskTrackingInfo
。
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder() // No need for the header
.setParent(parent)
.setTrackingId(TRACKING_ID)
.build();
try {
TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>
<tracking_id> 是與工作相關聯的追蹤 ID。
要求標頭必須包含 Authorization 欄位,當中須有相應的值 Bearer <token>,其中 <token> 要負責正確的服務 帳戶角色請參閱服務帳戶角色。
如果查詢成功,回應主體會包含 taskTrackingInfo 實體。
curl
指令範例:
# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
"https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"
列出工作
列出工作會要求廣泛的工作存取權。列出工作 信任的使用者使用推送機群讀取器或 Delivery 管理員驗證權杖 提出這些要求詳情請參閱「服務帳戶角色」 可能不準確或不適當
分頁清單
工作清單會分頁。您可以在清單工作要求中指定頁面大小。 如果指定了頁面大小,傳回的工作數量就不會大於 大於指定網頁大小。如果沒有網頁大小,則這是合理的預設值 如果所要求的網頁大小超過內部最大值, 就會使用內部最大值
工作清單可包含符記,用於讀取下一頁的結果。目的地: 擷取下一頁,請重新發出相同的要求以及網頁符記。 如果傳回的頁面符記為空,則 和擷取。
列出工作時的欄位
列出工作時,Fleet Engine 會遮蓋下列欄位:
VehicleStop.planned_location
VehicleStop.state
VehicleStop.TaskInfo.taskId
根據 Google API 改善提案,使用下列欄位格式:
欄位類型 | 格式 | 範例 |
---|---|---|
時間戳記 | RFC-3339 | task_outcome_time = 2022-03-01T11:30:00-08:00 |
時間長度 | 後面加上 s 的秒數 |
task_duration = 120s |
列舉 | 字串 | state = CLOSED AND type = PICKUP |
位置 | point.latitude 和point.longitude |
planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0 |
篩選列出的工作
您可以從大部分的工作屬性中篩選列出的工作。對於篩選查詢語法, 請參閱 AIP-160。如未指定篩選器查詢,則會列出所有工作。
下表列出可用於篩選的有效工作屬性:
篩選清單的工作屬性 | |
---|---|
|
|
如需篩選器查詢運算子的完整清單,請參閱 AIP-160。
列出工作範例
以下範例說明如何列出 deliveryVehicleId
和
工作屬性,包括 Java gRPC 程式庫和 HTTP REST 呼叫
ListTasks
。
成功的回應也可以留空。如果回覆空白,代表否
與提供的 deliveryVehicleId
相關聯的工作。
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Tasks request
String parent = "providers/" + PROJECT_ID;
ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder() // No need for the header
.setParent(parent)
.setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
.build();
try {
ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks
如要將篩選器套用至列出的工作,請加入「篩選器」做為網址逸出篩選器查詢的網址參數。
要求標頭必須包含 Authorization 欄位,當中須有相應的值 Bearer <token>,其中 <token> 要負責正確的服務 帳戶角色請參閱服務帳戶角色。
成功的查詢會提供具有以下結構的回應主體:
// JSON representation
{
"tasks": [
{
object (Task)
}
],
"nextPageToken": string,
"totalSize": integer
}
curl
指令範例:
# Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
"https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"