Tài liệu này mô tả những cách bạn có thể tìm thông tin về việc cần làm từ một máy chủ hoặc trình duyệt. Fleet Engine hỗ trợ 2 cách tìm việc cần làm:
Tra cứu việc cần làm: Bạn có thể tra cứu việc cần làm theo các mã sau:
- Mã việc cần làm: được dùng bởi những người dùng như nhà điều hành đội xe có quyền truy cập vào chế độ xem đầy đủ dữ liệu về việc cần làm.
- Mã theo dõi: được phần mềm ứng dụng của bạn dùng để cung cấp thông tin hạn chế cho người dùng cuối, chẳng hạn như thời điểm dự kiến giao một gói hàng đến nhà họ.
Hãy nhớ nắm rõ sự khác biệt giữa mã việc cần làm và mã theo dõi việc cần làm. Hai trường hợp này không phải là một. Xem Các trường cơ bản về việc cần làm trong hướng dẫn Việc cần làm theo lịch.
Liệt kê việc cần làm: quyền truy cập rộng rãi vào việc cần làm, chỉ dành cho người dùng đáng tin cậy.
Tra cứu việc cần làm
Phần này mô tả cách tra cứu việc cần làm theo mã việc cần làm hoặc mã theo dõi. Phần này có các yêu cầu sau:
Các lượt tra cứu theo mã theo dõi phải tuân thủ các quy tắc về khả năng hiển thị được nêu trong Quy tắc về khả năng hiển thị đối với các đối tượng được theo dõi.
Sử dụng mã thông báo hẹp nhất có thể để hạn chế rủi ro bảo mật. Ví dụ: nếu bạn sử dụng Mã thông báo người tiêu dùng dịch vụ giao hàng, mọi lệnh gọi chỉ trả về thông tin liên quan đến người dùng cuối đó, chẳng hạn như người gửi hàng hoặc người nhận hàng. Fleet Engine sẽ chỉnh sửa tất cả thông tin khác trong các phản hồi. Để biết thêm thông tin về mã thông báo, hãy xem bài viết Mã thông báo web JSON.
Tra cứu việc cần làm theo mã việc cần làm
Bạn có thể tra cứu một việc cần làm theo mã việc cần làm trong môi trường máy chủ bằng gRPC hoặc REST. Các ví dụ sau đây cho biết cách sử dụng thư viện gRPC Java hoặc yêu cầu 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> là giá trị nhận dạng duy nhất cho việc cần làm.
- <taskId> là mã của việc cần làm để tra cứu.
- Tiêu đề của yêu cầu phải chứa một trường Authorization có giá trị Bearer <token>, trong đó <token> do máy chủ của bạn cấp theo nguyên tắc được mô tả trong bài viết Vai trò của tài khoản dịch vụ và mã thông báo web JSON.
- Nội dung yêu cầu phải trống.
- Nếu tra cứu thành công, nội dung phản hồi sẽ chứa một thực thể việc cần làm.
Lệnh curl mẫu:
# 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}"
Tra cứu việc cần làm theo mã theo dõi
Các ví dụ sau đây cho biết cách tra cứu việc cần làm theo mã theo dõi lô hàng bằng gRPC hoặc lệnh gọi REST HTTP đến 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> là mã theo dõi được liên kết với việc cần làm.
Tiêu đề của yêu cầu phải chứa một trường Authorization có giá trị Bearer <token>, trong đó <token> mang vai trò chính xác của tài khoản dịch vụ. Xem bài viết Vai trò của tài khoản dịch vụ.
Nếu tra cứu thành công, nội dung phản hồi sẽ chứa một taskTrackingInfo.
Lệnh curl mẫu:
# 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}"Liệt kê việc cần làm
Yêu cầu liệt kê việc cần làm cung cấp quyền truy cập rộng rãi vào việc cần làm. Việc liệt kê việc cần làm chỉ dành cho người dùng đáng tin cậy. Sử dụng mã thông báo xác thực của Trình đọc đội xe giao hàng hoặc Quản trị viên giao hàng khi đưa ra yêu cầu liệt kê việc cần làm. Xem bài viết Vai trò của tài khoản dịch vụ để biết thêm thông tin.
Phân trang danh sách
Danh sách việc cần làm được phân trang. Bạn có thể chỉ định kích thước trang trong các yêu cầu liệt kê việc cần làm. Nếu bạn chỉ định kích thước trang, số lượng việc cần làm được trả về sẽ không lớn hơn kích thước trang đã chỉ định. Nếu không có kích thước trang, hệ thống sẽ sử dụng giá trị mặc định hợp lý. Nếu kích thước trang được yêu cầu vượt quá giá trị tối đa nội bộ, thì hệ thống sẽ sử dụng giá trị tối đa nội bộ.
Danh sách việc cần làm có thể bao gồm một mã thông báo để đọc trang kết quả tiếp theo. Để truy xuất trang tiếp theo đó, hãy gửi lại cùng một yêu cầu cùng với mã thông báo trang. Khi mã thông báo trang được trả về trống, sẽ không có thêm việc cần làm nào để truy xuất.
Các trường khi liệt kê việc cần làm
Fleet Engine sẽ chỉnh sửa các trường sau đây khi liệt kê việc cần làm:
VehicleStop.planned_locationVehicleStop.stateVehicleStop.TaskInfo.taskId
Sử dụng các định dạng trường sau đây dựa trên Đề xuất cải tiến API của Google:
| Loại trường | Định dạng | Ví dụ: |
|---|---|---|
| Dấu thời gian | RFC-3339 | task_outcome_time = 2022-03-01T11:30:00-08:00 |
| Thời lượng | Số giây, theo sau là s |
task_duration = 120s |
| Enum | Chuỗi | state = CLOSED AND type = PICKUP |
| Thông tin vị trí | point.latitude và point.longitude |
planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0 |
Lọc việc cần làm được liệt kê
Bạn có thể lọc việc cần làm được liệt kê theo hầu hết các thuộc tính của việc cần làm. Để biết cú pháp truy vấn bộ lọc, hãy xem AIP-160. Nếu bạn không chỉ định truy vấn bộ lọc, thì tất cả việc cần làm sẽ được liệt kê.
Bảng sau đây cho thấy các thuộc tính hợp lệ của việc cần làm mà bạn có thể dùng để lọc:
| Thuộc tính của việc cần làm để lọc danh sách | |
|---|---|
|
|
Xem AIP-160 để biết danh sách đầy đủ các toán tử truy vấn bộ lọc.
Ví dụ về việc cần làm được liệt kê
Ví dụ sau đây cho biết cách liệt kê việc cần làm cho một deliveryVehicleId và một
thuộc tính của việc cần làm, cả bằng thư viện gRPC Java và bằng lệnh gọi REST HTTP đến
ListTasks.
Phản hồi thành công vẫn có thể trống. Phản hồi trống cho biết không có việc cần làm nào được liên kết với deliveryVehicleId được cung cấp.
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
Để áp dụng bộ lọc cho việc cần làm được liệt kê, hãy thêm tham số URL "filter" có truy vấn bộ lọc đã thoát URL làm giá trị.
Tiêu đề của yêu cầu phải chứa một trường Authorization có giá trị Bearer <token>, trong đó <token> mang vai trò chính xác của tài khoản dịch vụ. Xem bài viết Vai trò của tài khoản dịch vụ.
Lượt tra cứu thành công sẽ cung cấp nội dung phản hồi có cấu trúc sau:
// JSON representation
{
"tasks": [
{
object (Task)
}
],
"nextPageToken": string,
"totalSize": integer
}
Lệnh curl mẫu:
# 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}"