เอกสารนี้อธิบายวิธีค้นหาข้อมูลงานจากเซิร์ฟเวอร์หรือเบราว์เซอร์ Fleet Engine รองรับการค้นหางาน 2 วิธีดังนี้
ค้นหางาน: คุณสามารถค้นหางานตามรหัสต่อไปนี้
- รหัสงาน: ใช้โดยผู้ใช้ เช่น ผู้ให้บริการยานพาหนะ ซึ่งมีสิทธิ์เข้าถึงมุมมองแบบเต็มของข้อมูลงาน
- รหัสติดตาม: ใช้โดยซอฟต์แวร์ไคลเอ็นต์เพื่อแสดงข้อมูลแบบจำกัดแก่ผู้ใช้ปลายทาง เช่น เวลาที่คาดว่าจะได้รับพัสดุ
โปรดทำความเข้าใจความแตกต่างระหว่างรหัสงานกับรหัสติดตามงาน เนื่องจากรหัสทั้ง 2 ไม่เหมือนกัน ดูช่องงานพื้นฐานใน คู่มือการตั้งเวลาทำงาน
แสดงรายการงาน: การเข้าถึงงานในวงกว้าง ซึ่งมีไว้สำหรับผู้ใช้ที่เชื่อถือได้เท่านั้น
ค้นหางาน
ส่วนนี้อธิบายวิธีค้นหางานตามรหัสงานหรือรหัสติดตาม โดยมีข้อกำหนดดังนี้
การค้นหาตามรหัสติดตามต้องเป็นไปตามกฎการมองเห็น ที่ระบุไว้ใน กฎการมองเห็นสำหรับออบเจ็กต์ที่ติดตาม
ใช้โทเค็นที่แคบที่สุดเท่าที่จะเป็นไปได้เพื่อจำกัดความเสี่ยงด้านความปลอดภัย เช่น หากคุณใช้โทเค็นผู้ใช้บริการการจัดส่ง การเรียกทั้งหมดจะแสดงเฉพาะข้อมูลที่เกี่ยวข้องกับผู้ใช้ปลายทางรายนั้น เช่น ผู้จัดส่งหรือผู้รับการจัดส่ง Fleet Engine จะปกปิดข้อมูลอื่นๆ ทั้งหมดในการตอบกลับ ดูข้อมูลเพิ่มเติมเกี่ยวกับโทเค็นได้ที่ โทเค็นเว็บ JSON
ค้นหางานตามรหัสงาน
คุณสามารถค้นหางานตามรหัสงานจากสภาพแวดล้อมเซิร์ฟเวอร์โดยใช้ gRPC หรือ REST ตัวอย่างต่อไปนี้แสดงวิธีใช้ไลบรารี Java gRPC หรือ คำขอ REST เพื่อเรียก GetTask
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> คือตัวระบุที่ไม่ซ้ำกันสำหรับงาน
- <taskId> คือรหัสของงานที่จะค้นหา
- ส่วนหัวของคำขอต้องมีฟิลด์ Authorization ที่มีค่า Bearer <token> โดย <token> ออกโดยเซิร์ฟเวอร์ของคุณ ตามหลักเกณฑ์ที่อธิบายไว้ใน บทบาทบัญชีบริการ และ โทเค็นเว็บ JSON
- เนื้อหาของคำขอต้องว่างเปล่า
- หากการค้นหาสำเร็จ เนื้อหาการตอบกลับจะมีเอนทิตีงาน
ตัวอย่างคำสั่ง 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}"
ค้นหางานตามรหัสติดตาม
ตัวอย่างต่อไปนี้แสดงวิธีค้นหางานตามรหัสติดตามการจัดส่งโดยใช้ 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> คือรหัสติดตามที่เชื่อมโยงกับงาน
ส่วนหัวของคำขอต้องมีฟิลด์ 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 Reader หรือ Delivery Admin เมื่อส่งคำขอแสดงรายการงาน ดูข้อมูลเพิ่มเติมได้ที่บทบาทบัญชีบริการสำหรับ ข้อมูลเพิ่มเติม
แบ่งหน้าในรายการ
รายการงานจะแบ่งหน้า คุณระบุขนาดหน้าได้ในคำขอแสดงรายการงาน หากระบุขนาดหน้าไว้ จำนวนงานที่แสดงจะไม่เกินขนาดหน้าที่ระบุ หากไม่มีขนาดหน้า ระบบจะใช้ค่าเริ่มต้นที่เหมาะสม หากขนาดหน้าที่ขอเกินค่าสูงสุดภายใน ระบบจะใช้ค่าสูงสุดภายใน
รายการงานสามารถมีโทเค็นสำหรับอ่านผลลัพธ์หน้าถัดไป หากต้องการดึงข้อมูลหน้าถัดไป ให้ส่งคำขอเดิมอีกครั้งพร้อมกับโทเค็นหน้า เมื่อโทเค็นหน้าที่แสดงว่างเปล่า หมายความว่าไม่มีงานให้ดึงข้อมูลอีกต่อไป
ช่องเมื่อแสดงรายการงาน
Fleet Engine จะปกปิดช่องต่อไปนี้เมื่อแสดงรายการงาน
VehicleStop.planned_locationVehicleStop.stateVehicleStop.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 และ a
แอตทริบิวต์งาน ทั้งด้วย ไลบรารี 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
หากต้องการใช้ตัวกรองกับงานที่แสดง ให้ใส่พารามิเตอร์ URL "filter" ที่มีการค้นหาตัวกรองที่หลีก URL เป็นค่า
ส่วนหัวของคำขอต้องมีฟิลด์ 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}"