本文假設您已瞭解如何建立及使用工作。這項服務提供 具體範例,說明如何以下列方式設定運送工作:
設定運送工作的目標時間範圍:設定運送時間 以完成工作
自訂工作瀏覽權限:自訂工作活動的顯示設定 向客戶或車隊操作人員展示
如要進一步瞭解運送工作的欄位,請參閱建立運送工作。 更新現有工作的其他相關資訊時,您必須一併更新 除了 模型也會更新
設定目標時間範圍
目標時間範圍是工作應期間的 TimeWindow 已完成舉例來說,如果您提供交貨時段 收件者,您可以使用工作目標的時間範圍擷取這個時間範圍 並產生快訊,或用此資訊分析過往行程成效。
目標時間範圍包含開始時間和結束時間,且可設定 執行任何任務目標時間範圍不會影響轉送作業 行為
以下範例說明如何使用 Java gRPC 設定時間範圍
程式庫,或是如何向 UpdateTask
發出 HTTP REST 要求。你可以
也可以在建立工作時設定這個欄位。
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
.setName(taskName)
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
.build();
try {
Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
如要使用 HTTP 設定工作時間範圍,請呼叫 PATCH
並
請使用 updateMask
更新 targetTimeWindow
參數:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow
這裡的 <id> 是工作的專屬 ID。要求標頭 必須包含一個值為 Bearer <token> 的「Authorization」欄位, 其中 <token> 會根據指南核發給您的伺服器 ,詳見服務帳戶角色和 JSON Web 權杖。
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
自訂工作瀏覽權限
根據預設,Fleet Engine 可讓您掌握工作活動, 向正在運送出貨和運送給艦隊業者的客戶顯示 出貨追蹤。這些資訊包括指出 停止,然後傳送通知給客戶,告知他們包裹送達 狀態。您可以逐一自訂每項任務的資訊,取得更符合需求的結果 和商業模式
本節將說明地圖上追蹤物件的顯示規則。 這些規則適用於兩種物件類別:
- 位置標記顯示設定
- 顯示進行中車輛工作的工作資料,例如折線和預計到達時間
位置標記瀏覽權限規則
Fleet Engine 會顯示送貨地點的位置標記 無論運送狀態為何
工作資料瀏覽權限規則
本節說明工作資料適用的預設瀏覽權限規則。 只能自訂進行中的車輛工作,也就是只有 上車和下車工作可以套用自訂瀏覽權限規則。
您無法自訂以下工作:
- 已排定的停靠站
- 無法使用的工作
- 非使用中的車輛工作
無法使用狀態工作瀏覽權限規則
根據預設,車輛至少不應出現在地圖上 任務無法使用。舉例來說, 駕駛正在休息,或是車輛在前往 追蹤運送狀態預估抵達時間與預估工作完成時間 仍可使用。再次提醒,您可能無法自訂這項規則。
使用中的車輛工作顯示設定
TaskTrackingInfo
物件提供許多資料元素,
可以透過出貨追蹤資料庫顯示。根據預設
任務是指派給車輛和車輛時才會顯示
再繼續下去當工作完成或工作完成時,顯示設定就會結束
已取消。
您可以為每個任務自訂顯示設定,只要設定
建立或更新工作時,工作上的 TaskTrackingViewConfig
也就是 Fleet Engine 的介面這會建立規則,規定個別資料元素
廣告。
下表列出可套用瀏覽權限規則的欄位。
瀏覽權限規則的車輛工作欄位 |
---|
|
下表列出上述欄位可用的瀏覽權限選項。
瀏覽權限選項 |
---|
|
路線折線和車輛位置顯示規則
如果是追蹤的路線,路線折線的顯示設定取決於 車輛的能見度。是否在有效路線上顯示路線折線 看不到車輛時,車輛位置資訊仍可 透過可見折線的結尾所推斷。因此,透過這種方式 顯示設定必須是比車輛可見範圍的限製或更嚴格的限制。
請遵守這些規則,提供有效的路線折線 / 車輛位置 瀏覽權限組合。
路線折線和車輛位置指定的顯示設定選項相同
在此情況下,折線與車輛位置設定相同 選項包括:
- 剩餘停靠站計數
- 距離預計到達時間還有
- 剩餘行車距離
遵循規則時,路線折線可見性的值必須為 較少 等於或等於為車輛顯示設定設定的值。在這個例子中 折線的剩餘停靠站門檻設為 3,小於 車輛指定的 5 值。也就是說 行程距離工作地點 5 個停靠站後,車輛就能顯示, 直到行程經過 3 個停靠站後,車輛才會顯示該車輛的路線。
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
路線折線和車輛位置指定「不同的」顯示設定選項
如果路線折線和車輛位置有不同顯示設定選項, 只有當「同時」同時設定這兩個瀏覽權限,系統才會顯示車輛位置資訊 滿意折線的顯示設定也受可見規則所規範 車輛類型:
- 一律顯示:路線折線必須使用「一律顯示」 顯示選項時,車輛位置也提供相同 顯示設定。
- 一律隱藏:路線折線必須使用「一律隱藏」的顯示設定 選項,以永不顯示顯示設定選項。
範例如下:
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
在本例中,只有剩餘的停靠站才會顯示車輛位置資訊 計數至少 3 且剩餘行車距離至少 3,000 次 公尺。
自訂工作瀏覽權限範例
下列範例說明如何設定下列工作 顯示規則:
- 如果車輛位於 3 站內,顯示路線折線。
- 如果剩餘行車距離短於 5000 公尺,則顯示預計到達時間。
- 一律不顯示剩餘的停靠站計數。
- 其他欄位保留了 車輛與車輛停靠站的 5 個停靠站內。
請參閱 TaskTrackingViewConfig
以瞭解 gRPC 或 REST。
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
.setName(taskName)
.setTaskTrackingViewConfig(
TaskTrackingViewConfig.newBuilder()
.setRoutePolylinePointsVisibility(
VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
.setEstimatedArrivalTimeVisibility(
VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
.setRemainingStopCountVisibility(
VisibilityOption.newBuilder().setNever(true)))
.build();
// Task request
UpdateTaskRequest updateTaskRequest =
UpdateTaskRequest.newBuilder() // No need for the header
.setTask(task)
.setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
.build();
try {
Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
如要使用 HTTP 設定工作追蹤檢視設定視窗,請呼叫 PATCH
並
請使用 updateMask
更新 taskTrackingViewConfig
參數:
PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig
例如:
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"estimatedArrivalTimeVisibility": {
"remainingDrivingDistanceMetersThreshold": 5000
},
"remainingStopCountVisibility": {
"never": true
}
}
}
EOM