เอกสารนี้ถือว่าคุณเข้าใจวิธีสร้างและใช้งาน ซึ่งจะแสดงตัวอย่างที่เฉพาะเจาะจงเกี่ยวกับวิธีกำหนดค่างานการจัดส่งด้วยวิธีต่อไปนี้
กำหนดกรอบเวลาเป้าหมายสำหรับงานการจัดส่ง: กำหนดกรอบเวลาเพื่อให้งานเสร็จสมบูรณ์
ปรับแต่งระดับการเข้าถึงงาน: ปรับแต่งระดับการเข้าถึงกิจกรรมของงานเพื่อแสดงต่อลูกค้าหรือผู้ปฏิบัติการเดินรถ
ดูรายละเอียดเกี่ยวกับช่องสำหรับงานการจัดส่งได้ที่หัวข้อสร้างงานการจัดส่ง เมื่ออัปเดตข้อมูลเพิ่มเติมเกี่ยวกับงานที่มีอยู่ คุณต้องระบุตัวระบุที่เกี่ยวข้องสำหรับงานด้วย นอกเหนือจากฟิลด์ที่คุณอัปเดตสำหรับงาน
กำหนดกรอบเวลาเป้าหมาย
กรอบเวลาเป้าหมายคือ TimeWindow ในระหว่างที่งานควรเสร็จสมบูรณ์ ตัวอย่างเช่น หากคุณสื่อสารกรอบเวลาการนำส่งกับผู้รับการนำส่ง คุณสามารถใช้กรอบเวลาเป้าหมายของงานเพื่อบันทึกกรอบเวลานี้และสร้างการแจ้งเตือน หรือจะใช้เพื่อวิเคราะห์ประสิทธิภาพของการเดินทางที่ผ่านมาก็ได้
กรอบเวลาเป้าหมายประกอบด้วยเวลาเริ่มต้นและเวลาสิ้นสุด และสามารถตั้งค่าในประเภทงานใดก็ได้ กรอบเวลาเป้าหมายจะไม่ส่งผลต่อลักษณะการกําหนดเส้นทาง
ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่ากรอบเวลาโดยใช้ไลบรารี gRPC ของ Java หรือวิธีส่งคําขอ HTTP REST ไปยัง UpdateTask
คุณยังตั้งค่าช่องนี้ขณะสร้างงานได้ด้วย
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> คือตัวระบุที่ไม่ซ้ำกันสำหรับงาน ส่วนหัวคำขอต้องมีช่องการให้สิทธิ์ซึ่งมีค่าเป็น Bearer <token> โดยที่ <token> มาจากเซิร์ฟเวอร์ของคุณตามหลักเกณฑ์ที่อธิบายไว้ในบทบาทของบัญชีบริการและโทเค็นเว็บของ JSON
# 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 จะแสดงข้อมูลเกี่ยวกับกิจกรรมของงาน ซึ่งจะแสดงต่อทั้งลูกค้าที่ได้รับการจัดส่งและผู้ให้บริการขนส่งที่ติดตามการจัดส่ง ซึ่งรวมถึงข้อมูลต่างๆ เช่น ระบุจำนวนจุดจอดก่อนที่จะส่งการแจ้งเตือนเกี่ยวกับสถานะการนำส่งพัสดุให้ลูกค้า คุณปรับแต่งข้อมูลนี้ในแต่ละงานเพื่อให้เหมาะกับรูปแบบธุรกิจของคุณมากขึ้นได้
ส่วนนี้อธิบายกฎการแสดงผลสำหรับวัตถุที่ติดตามบนแผนที่ กฎเหล่านี้มีผลกับออบเจ็กต์ 2 หมวดหมู่ ได้แก่
- ระดับการมองเห็นเครื่องหมายระบุตำแหน่ง
- ระดับการเข้าถึงข้อมูลงานสำหรับงานยานพาหนะที่ทำงานอยู่ เช่น รูปหลายเหลี่ยมและเวลาถึงโดยประมาณ
กฎการแสดงผลเครื่องหมายตำแหน่ง
เครื่องมือจัดการยานพาหนะจะแสดงเครื่องหมายตำแหน่งสำหรับสถานที่นำส่งของการจัดส่งซึ่งแสดงบนแผนที่ โดยไม่คำนึงถึงสถานะการนำส่ง
กฎระดับการเข้าถึงข้อมูลงาน
ส่วนนี้อธิบายกฎการแสดงผลเริ่มต้นที่ใช้กับข้อมูลงาน คุณปรับแต่งได้เฉพาะงานยานพาหนะที่ใช้งานอยู่ ซึ่งหมายความว่ามีเพียงงานรับส่งเท่านั้นที่จะใช้กฎการแสดงผลที่กำหนดเองได้
คุณไม่สามารถปรับแต่งงานต่อไปนี้
- จุดจอดรถตามกำหนดการ
- งานที่ไม่พร้อมให้บริการ
- งานยานพาหนะที่ไม่ได้ใช้งาน
กฎระดับการเข้าถึงงานที่ไม่พร้อมให้บริการ
โดยค่าเริ่มต้น ยานพาหนะจะไม่ปรากฏในแผนที่หากมีการมอบหมายงาน "ไม่พร้อมใช้งาน" อย่างน้อย 1 งานให้กับงานที่ติดตาม เช่น หากคนขับหยุดพักหรือรถกำลังเติมน้ำมันบนเส้นทางไปยังการจัดส่งที่มีการติดตาม เวลาถึงโดยประมาณและเวลาเสร็จสิ้นงานโดยประมาณจะยังคงแสดงอยู่ โปรดทราบว่าคุณปรับแต่งกฎนี้ไม่ได้
ระดับการเข้าถึงงานยานพาหนะที่ใช้งานอยู่
ออบเจ็กต์ TaskTrackingInfo
มีองค์ประกอบข้อมูลจำนวนหนึ่งที่คุณสามารถทำให้ปรากฏได้โดยใช้คลังการติดตามการจัดส่ง โดยค่าเริ่มต้น ช่องเหล่านี้จะปรากฏขึ้นเมื่อมอบหมายงานให้กับยานพาหนะและเมื่อยานพาหนะอยู่ห่างจากงานไม่เกิน 5 ป้าย ระดับการเข้าถึงจะสิ้นสุดลงเมื่องานเสร็จสมบูรณ์หรือถูกยกเลิก
คุณสามารถปรับแต่งการกำหนดค่าระดับการเข้าถึงตามแต่ละงานได้โดยการตั้งค่า TaskTrackingViewConfig
ในงานเมื่อสร้างหรืออัปเดตงานภายใน Fleet Engine ซึ่งจะสร้างกฎสำหรับองค์ประกอบข้อมูลแต่ละรายการให้พร้อมใช้งาน
ตารางต่อไปนี้แสดงช่องที่คุณใช้กฎการแสดงผลได้
ช่องงานยานพาหนะสำหรับกฎการแสดงผล |
---|
|
ตารางนี้แสดงตัวเลือกระดับการเข้าถึงที่ใช้ได้กับช่องที่ระบุไว้ด้านบน
ตัวเลือกระดับการเข้าถึง |
---|
|
กฎการแสดงผลรูปหลายเหลี่ยมของเส้นทางและตำแหน่งยานพาหนะ
สำหรับเส้นทางที่ติดตาม ระดับการมองเห็นเส้นประกอบของเส้นทางจะขึ้นอยู่กับระดับการมองเห็นยานพาหนะ หากเห็นเส้นประกอบเส้นทางบนเส้นทางที่ใช้งานอยู่ซึ่งไม่เห็นยานพาหนะ ระบบจะยังคงอนุมานตำแหน่งของยานพาหนะได้จากปลายเส้นประกอบที่มองเห็นได้ ดังนั้น ระดับการแชร์เส้นประกอบของเส้นทางต้องจํากัดเท่ากับหรือมากกว่าระดับการแชร์ยานพาหนะ
โปรดทำตามกฎเหล่านี้เพื่อให้ได้การผสมผสานของเส้นประกอบเส้นทาง / ตำแหน่งยานพาหนะที่มองเห็นได้ซึ่งถูกต้อง
เส้นประกอบของเส้นทางและตำแหน่งรถระบุตัวเลือกการแสดงผลเดียวกัน
ในกรณีนี้ ทั้งเส้นประกอบและตำแหน่งรถตั้งค่าตัวเลือกเดียวกัน ซึ่งได้แก่
- จํานวนป้ายจอดรถที่เหลือ
- ระยะเวลาจนถึงเวลาถึงโดยประมาณ
- ระยะทางในการขับขี่ที่เหลือ
ค่าสำหรับระดับการแชร์เส้นประกอบของเส้นทางต้องน้อยกว่าหรือเท่ากับค่าที่กำหนดไว้สำหรับระดับการแชร์ยานพาหนะ เพื่อให้เป็นไปตามกฎ ในตัวอย่างนี้ ระบบตั้งค่าเกณฑ์การหยุดที่เหลือสำหรับเส้นประกอบเป็น 3 ซึ่งน้อยกว่าค่า 5 ที่ระบุไว้สำหรับยานพาหนะ ซึ่งหมายความว่าเมื่อการเดินทางที่ติดตามอยู่ห่างจากสถานที่ทำงาน 5 ป้ายรถเมล์ ยานพาหนะจะปรากฏขึ้น แต่เส้นทางของยานพาหนะนั้นจะไม่ปรากฏจนกว่าการเดินทางจะห่างจากสถานที่ทำงาน 3 ป้ายรถเมล์
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
เส้นประกอบของเส้นทางและตำแหน่งยานพาหนะจะระบุตัวเลือกการแสดงผลที่แตกต่างกัน
เมื่อเส้นประกอบของเส้นทางและตำแหน่งของยานพาหนะมีตัวเลือกระดับการเข้าถึงต่างกัน ตำแหน่งของยานพาหนะจะแสดงก็ต่อเมื่อตัวเลือกระดับการเข้าถึงทั้ง 2 รายการตรงกัน โปรดทราบว่าการแสดงผลของเส้นประกอบจะขึ้นอยู่กับกฎการแสดงผลของยานพาหนะ ดังนี้
- มองเห็นได้เสมอ: เส้นประกอบของเส้นทางต้องใช้ตัวเลือกระดับการมองเห็นมองเห็นได้เสมอเมื่อตำแหน่งของยานพาหนะมีตัวเลือกระดับการมองเห็นมองเห็นได้เสมอเดียวกันด้วย
- ไม่แสดงเลย: เส้นประกอบของเส้นทางต้องใช้ตัวเลือกระดับการมองเห็นไม่แสดงเลยเมื่อตำแหน่งยานพาหนะใช้ตัวเลือกระดับการมองเห็นไม่แสดงเลย
ตัวอย่างมีดังนี้
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingDrivingDistanceMetersThreshold": 3000
},
}
ในตัวอย่างนี้ ตำแหน่งของยานพาหนะจะปรากฏขึ้นก็ต่อเมื่อจำนวนจุดจอดที่เหลืออย่างน้อย 3 จุด และระยะทางในการขับขี่ที่เหลืออย่างน้อย 3, 000 เมตร
ตัวอย่างการปรับแต่งระดับการเข้าถึงงาน
ตัวอย่างต่อไปนี้แสดงวิธีตั้งค่างานที่มีกฎการแสดงผลต่อไปนี้
- แสดงเส้นประกอบของเส้นทางหากยานพาหนะอยู่ภายใน 3 จุดจอด
- แสดงเวลาถึงโดยประมาณหากระยะทางที่เหลือในการขับรถน้อยกว่า 5,000 เมตร
- ไม่แสดงจำนวนป้ายที่เหลือ
- ช่องอื่นๆ แต่ละช่องจะยังคงมีระดับการแชร์เริ่มต้นที่แสดงเมื่อยานพาหนะอยู่ห่างจากงานไม่เกิน 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