В этом документе описаны способы получения информации о задачах с сервера или из браузера. Fleet Engine поддерживает два способа поиска задач:
Поиск задач : Вы можете искать задачи по следующим идентификаторам:
- Идентификатор задачи: используется пользователями, такими как операторы автопарков, которые имеют доступ к полному представлению данных о задаче.
- Идентификатор отслеживания: используется программным обеспечением вашего клиента для предоставления ограниченной информации конечному пользователю, например, о том, когда ожидается доставка посылки к нему домой.
Обязательно разберитесь в разнице между идентификатором задачи (Task ID) и идентификатором отслеживания задачи (Task Tracking ID). Это не одно и то же. См. раздел «Основные поля задачи» в руководстве по запланированным задачам.
Список задач : широкий доступ к задачам, предназначенный только для доверенных пользователей.
Поиск заданий
В этом разделе описывается, как искать задачи по идентификатору задачи или идентификатору отслеживания. Для этого необходимо выполнить следующие требования:
Поиск по идентификатору отслеживания должен соответствовать правилам видимости, указанным в разделе «Правила видимости для отслеживаемых объектов» .
Используйте максимально узкий токен, чтобы ограничить риски безопасности. Например, если вы используете токен потребителя доставки, все вызовы будут возвращать только информацию, относящуюся к конечному пользователю, такую как отправитель или получатель груза. Fleet Engine скрывает всю остальную информацию в ответах. Для получения дополнительной информации о токенах см. раздел «JSON Web tokens» .
Поиск задачи по идентификатору задачи.
Вы можете найти задачу по ее идентификатору (Task ID) в серверной среде, используя 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;
}
ОТДЫХ
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>
- <id> — это уникальный идентификатор задачи.
- <taskId> — это идентификатор задачи, которую нужно найти.
- В заголовке запроса должно содержаться поле Authorization со значением Bearer <token> , где <token> выдается вашим сервером в соответствии с рекомендациями, описанными в разделах «Роли учетных записей служб» и «JSON Web tokens» .
- Тело запроса должно быть пустым.
- Если поиск пройден успешно, тело ответа содержит сущность задачи.
Пример команды 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;
}
ОТДЫХ
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 и атрибута task, используя как библиотеку 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;
}
ОТДЫХ
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}"