В этом документе описываются способы, которыми вы можете найти информацию о задачах с сервера или браузера. Fleet Engine поддерживает два способа поиска задач:
Поиск задач : Вы можете искать задачи по следующим идентификаторам:
- Идентификатор задачи: используется такими пользователями, как операторы автопарка, которые имеют доступ к полному представлению данных задачи.
- Идентификатор отслеживания: используется вашим клиентским программным обеспечением для предоставления ограниченной информации конечному пользователю, например, когда посылка должна прибыть к нему домой.
Обязательно поймите разницу между идентификатором задачи и идентификатором отслеживания задачи. Это не одно и то же. См. раздел Основные поля задач в руководстве по запланированным задачам.
Список задач : широкий доступ к задачам, предназначенный только для доверенных пользователей.
Поиск задач
В этом разделе описывается, как искать задачи по идентификатору задачи или идентификатору отслеживания. Он имеет следующие требования:
Поиск по идентификатору отслеживания должен соответствовать правилам видимости, указанным в Правилах видимости отслеживаемых объектов .
Используйте максимально узкий токен, чтобы ограничить риски безопасности. Например, если вы используете Delivery Consumer Token, любые вызовы возвращают только информацию, относящуюся к данному конечному пользователю, например, грузоотправителю или получателю груза. Fleet Engine редактирует всю остальную информацию в ответах. Для получения дополнительной информации о токенах см. JSON Web tokens .
Поиск задачи по идентификатору задачи
Вы можете найти задачу по ее идентификатору из серверной среды, используя gRPC или REST. В следующих примерах показано, как использовать библиотеку Java gRPC или запрос REST к GetTask .
гРПЦ
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;
}
ОТДЫХ
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
.
гРПЦ
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;
}
ОТДЫХ
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_location
-
VehicleStop.state
-
VehicleStop.TaskInfo.taskId
Используйте следующие форматы полей на основе предложений по улучшению API Google:
Тип поля | Формат | Пример |
---|---|---|
Временная метка | 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
и атрибута задачи как с помощью библиотеки Java gRPC , так и с помощью HTTP REST-вызова ListTasks
.
Успешный ответ все еще может быть пустым. Пустой ответ указывает на отсутствие задач, связанных с предоставленным deliveryVehicleId
.
гРПЦ
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;
}
ОТДЫХ
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}"