本文假設您已瞭解如何建立及使用工作。這項服務提供 具體範例,說明如何以下列方式設定運送工作:
設定運送工作目標時間範圍:設定工作完成的時間範圍。
自訂工作可見度:自訂工作活動的可見度,以便向客戶或車隊操作員顯示。
如要進一步瞭解出貨工作欄位,請參閱「建立出貨工作」。更新現有工作相關的其他資訊時,除了要更新的工作欄位外,還必須提供工作相關的 ID。
設定目標時間範圍
目標時間範圍是指應完成工作時的 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。要求標頭必須包含「Authorization」欄位,其值為「Bearer <token>」,其中 <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
物件提供許多資料元素,
可以透過出貨追蹤資料庫顯示。根據預設,當工作指派給車輛,且車輛距離工作地點 5 個站內時,系統就會顯示這些欄位。工作完成或取消後,就會停止顯示。
您可以在 Fleet Engine 中建立或更新工作時,在工作上設定 TaskTrackingViewConfig
,即可根據每項工作自訂瀏覽權限設定。這會建立規則,規定個別資料元素
廣告。
下表列出可套用瀏覽權限規則的欄位。
顯示規則的車輛工作欄位 |
---|
|
下表列出上述欄位的可見度選項。
瀏覽權限選項 |
---|
|
路線折線和車輛位置顯示規則
對於已追蹤的路線,路線折線的顯示與否取決於車輛的顯示狀態。如果在有效路線上顯示路線多邊形,但車輛未顯示,系統仍可透過可見多邊形的結尾推斷車輛位置。因此,路線多邊形的能見度必須與車輛能見度相同或更嚴格。
請遵守這些規則,提供有效的路線折線 / 車輛位置 瀏覽權限組合。
路線折線和車輛位置指定的顯示設定選項相同
在這種情況下,多邊形和車輛位置都會設定相同的選項,包括:
- 剩餘停靠站數量
- 距離預計到達時間還有
- 剩餘行車距離
遵循規則時,路線折線可見性的值必須為 較少 等於或等於為車輛顯示設定設定的值。在這個例子中 折線的剩餘停靠站門檻設為 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 個停靠站內時顯示。
如要瞭解 gRPC 或 REST,請參閱 TaskTrackingViewConfig
。
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