Cómo buscar tareas

Este documento describe las formas en que puedes encontrar información de una tarea desde un servidor o navegador. Fleet Engine admite dos formas de encontrar tareas:

  • Buscar tareas: Puedes buscar tareas mediante los siguientes IDs:

    • ID de tarea: lo usan usuarios, como operadores de flota, que tienen acceso a la de los datos de la tarea.
    • ID de seguimiento: lo utiliza el software del cliente para proporcionar información limitada a un usuario final, como cuando se espera un paquete en su casa.

    Asegúrate de comprender la diferencia entre el ID de tarea y el ID de la tarea. el ID de seguimiento. pero no son lo mismo. Consulta Campos básicos de tareas en la Guía de tareas programadas.

  • Enumerar tareas: Un acceso amplio a las tareas, destinado únicamente a usuarios de confianza

Buscar tareas

En esta sección, se describe cómo buscar tareas por ID de tarea o ID de seguimiento. Tiene con los siguientes requisitos:

  • Las búsquedas por ID de seguimiento deben cumplir con las reglas de visibilidad se indica en Reglas de visibilidad para objetos con seguimiento.

  • Usar el token más estrecho posible para limitar los riesgos de seguridad Por ejemplo, si usar un token de consumidor de entrega, cualquier llamada solo información relevante para ese usuario final, como el transportista o receptor de un envío. Fleet Engine oculta toda la demás información en el de respuestas ante incidentes. Para obtener más información sobre los tokens, consulta Tokens web JSON.

Buscar tarea por ID de tarea

Puedes buscar una tarea por su ID de tarea desde un entorno de servidor con gRPC. REST En los siguientes ejemplos, se muestra cómo usar la biblioteca gRPC de Java o una solicitud de REST a 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>

  • &lt;id&gt; es un identificador único para la tarea.
  • &lt;taskId&gt; es el ID de la tarea que se buscará.
  • El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, donde tu servidor emite <token>. según los lineamientos descritos en Roles de cuentas de servicio y Tokens web JSON:
  • El cuerpo de la solicitud debe estar vacío.
  • Si la búsqueda se realiza correctamente, el cuerpo de la respuesta contendrá una entidad de tarea.

Comando curl de ejemplo

    # 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}"

Buscar tareas por ID de seguimiento

En los siguientes ejemplos, se muestra cómo buscar tareas por su ID de seguimiento del envío con gRPC o una llamada REST de HTTP a 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>

  • &lt;tracking_id&gt; es el ID de seguimiento asociado con la tarea.

  • El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, donde <token> lleva el servicio correcto. el rol de la cuenta de servicio. Consulta Funciones de la cuenta de servicio.

  • Si la búsqueda se realiza correctamente, el cuerpo de la respuesta contendrá un taskTrackingInfo.

Comando curl de ejemplo

# 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}"

Enumerar tareas

Enumerar tareas solicita un acceso amplio a las tareas. Enumerar tareas está destinada solo a usuarios de confianza. Cómo usar los tokens de autenticación del lector de flotas de entrega o administrador de entregas cuando realices solicitudes de enumeración de tareas. Consulta Roles de cuentas de servicio para obtener más información. información.

Cómo paginar listas

Las listas de tareas están paginadas. Se puede especificar un tamaño de página en las solicitudes de lista de tareas. Si se especifica un tamaño de página, la cantidad de tareas mostradas no será mayor que el tamaño de página especificado. Si no hay un tamaño de página, un valor predeterminado razonable y control sobre el uso de sus datos. Si el tamaño de página solicitado supera un valor máximo interno, y, luego, se usa el máximo interno.

Una lista de tareas puede incluir un token para leer la página siguiente de resultados. Para recuperar la página siguiente y volver a emitir la misma solicitud junto con el token de la página. Cuando el token de página que se muestra está vacío, no hay más tareas disponibles para y la recuperación de datos.

Campos cuando se enumeran las tareas

Fleet Engine oculta los siguientes campos cuando se enumeran las tareas:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Usa los siguientes formatos de campo según las propuestas de mejora de la API de Google:

Tipo de campo Formato Ejemplo
Marca de tiempo RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
Duración Cantidad de segundos seguidos de un s task_duration = 120s
Enum String state = CLOSED AND type = PICKUP
Ubicación point.latitude y point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

Filtrar tareas enumeradas

Puedes filtrar las tareas enumeradas por la mayoría de las propiedades de las tareas. Para la sintaxis de consulta de filtro, consulta AIP-160. Si no se especifica una consulta de filtro, se enumeran todas las tareas.

En la siguiente tabla, se muestran las propiedades de tarea válidas que puedes usar para filtrar:

Propiedades de tareas para filtrar listas
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

Consulta AIP-160 para ver una lista completa de los operadores de consulta de filtro.

Enumerar ejemplos de tareas

En el siguiente ejemplo, se muestra cómo enumerar tareas para un deliveryVehicleId y un de tarea, tanto con la biblioteca gRPC de Java como con la llamada REST de HTTP ListTasks

Una respuesta correcta aún puede estar vacía. Una respuesta vacía indica que no tareas asociadas al elemento deliveryVehicleId suministrado.

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

Para aplicar un filtro a las tareas de la lista, incluye un “filtro” Parámetro de URL con una búsqueda de filtro con escape de URL como su valor.

El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, donde <token> lleva el servicio correcto. el rol de la cuenta de servicio. Consulta Funciones de la cuenta de servicio.

Una búsqueda correcta proporciona un cuerpo de respuesta con la siguiente estructura:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

Comando curl de ejemplo

 # 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}"

¿Qué sigue?