Configura tareas

En este documento, se supone que comprendes cómo crear y usar tareas. Se proporcionan ejemplos específicos para configurar tareas de envío de las siguientes maneras:

  • Establecer el período de destino para una tarea de envío: Establece el período en el que se debe completar la tarea.

  • Personalizar la visibilidad de las tareas: Personaliza la visibilidad de las actividades de las tareas para mostrarlas a los clientes o a los operadores de la flota.

Consulta Crea tareas de envío para obtener detalles sobre los campos de las tareas de envío. Cuando actualices información adicional sobre las tareas existentes, también debes incluir el identificador pertinente de la tarea, además de los campos que actualices para las tareas.

Establece el período de destino

El período de destino es el TimeWindow durante el cual se debe completar la tarea. Por ejemplo, si comunicas un período de entrega a los destinatarios de la entrega, puedes usar el período de destino de la tarea para capturar este período y generar alertas, o bien puedes usarlo para analizar el rendimiento de viajes anteriores.

El período de destino consta de una hora de inicio y una hora de finalización, y se puede establecer en cualquier tipo de tarea. El período de destino no afecta el comportamiento del enrutamiento.

En los siguientes ejemplos, se muestra cómo establecer el período con la biblioteca gRPC de Java o cómo realizar una solicitud HTTP REST a UpdateTask. También puedes configurar este campo en el momento de la creación de la tarea.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

Para establecer un período de tarea con HTTP, llama a PATCH y usa updateMask para actualizar el parámetro targetTimeWindow:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

Aquí <id> es un identificador único de la tarea. El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, en el que <token> lo emite tu servidor según los lineamientos que se describen en Funciones de cuentas de servicio y tokens web JSON.

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

Personaliza la visibilidad de las tareas

De forma predeterminada, Fleet Engine proporciona visibilidad de las actividades de las tareas que luego se pueden mostrar a los clientes que reciben un envío y a los operadores de la flota que realizan un seguimiento de los envíos. Esto incluye información como indicar la cantidad de paradas antes de enviar una notificación a un cliente sobre el estado de entrega de su paquete. Puedes personalizar esta información por tarea para que se adapte mejor a tu modelo de negocio.

En esta sección, se describen las reglas de visibilidad para los objetos rastreados en el mapa. Estas reglas se aplican a dos categorías de objetos:

  • Visibilidad del marcador de ubicación
  • Visibilidad de los datos de las tareas para las tareas de vehículos activos, como las polilíneas y la ETA

Reglas de visibilidad del marcador de ubicación

Fleet Engine muestra marcadores de ubicación para la ubicación de entrega del envío que se muestra en el mapa, independientemente del estado de la entrega.

Reglas de visibilidad de los datos de las tareas

En esta sección, se describen las reglas de visibilidad predeterminadas que se aplican a los datos de las tareas. Solo puedes personalizar las tareas de vehículos activos, lo que significa que solo las tareas de recolección y entrega pueden aplicar reglas de visibilidad personalizadas.

No se pueden personalizar las siguientes tareas:

  • Paradas programadas
  • Tareas de no disponibilidad
  • Tareas de vehículos inactivos

Reglas de visibilidad de las tareas de no disponibilidad

De forma predeterminada, el vehículo no aparece en el mapa si se asigna al menos una tarea de no disponibilidad a la tarea que se está rastreando. Por ejemplo, si el conductor se toma un descanso o si se reabastece el vehículo en la ruta hacia el envío rastreado. La hora estimada de llegada y la hora estimada de finalización de la tarea siguen disponibles. De nuevo, no puedes personalizar esta regla.

Visibilidad de las tareas de vehículos activos

El objeto TaskTrackingInfo proporciona varios elementos de datos que tú puedes hacer visibles con la biblioteca de seguimiento de envíos. De forma predeterminada, estos campos son visibles cuando la tarea se asigna al vehículo y cuando el vehículo se encuentra a 5 paradas de la tarea. La visibilidad finaliza cuando se completa o cancela la tarea.

Puedes personalizar la configuración de visibilidad por tarea si estableces el TaskTrackingViewConfig en una tarea cuando la creas o actualizas en Fleet Engine. Esto crea reglas para que estén disponibles los elementos de datos individuales.

En la siguiente tabla, se muestran los campos a los que puedes aplicar reglas de visibilidad.

Campos de tareas de vehículos para reglas de visibilidad
  • Polilíneas de ruta
  • Hora estimada de llegada
  • Hora estimada de finalización de la tarea
  • Distancia restante en auto hasta la tarea
  • Cantidad de paradas restantes
  • Ubicación del vehículo

En esta tabla, se muestran las opciones de visibilidad disponibles para los campos mencionados anteriormente.

Opciones de visibilidad
  • Cantidad de paradas restantes
  • Duración hasta la hora estimada de llegada
  • Distancia restante en auto
  • Siempre visible
  • Nunca visible

Reglas de visibilidad de las polilíneas de ruta y la ubicación del vehículo

En el caso de una ruta rastreada, la visibilidad de las polilíneas de ruta está sujeta a la visibilidad del vehículo. Si una polilínea de ruta es visible en una ruta activa en la que el vehículo no es visible, la ubicación del vehículo aún se puede inferir al final de la polilínea visible. Por lo tanto, la visibilidad de la polilínea de ruta debe ser tan restrictiva o más restrictiva que la visibilidad del vehículo.

Sigue estas reglas para proporcionar una combinación válida de visibilidad de polilíneas de ruta y ubicación del vehículo.

Las polilíneas de ruta y la ubicación del vehículo especifican las mismas opciones de visibilidad

En esta situación, tanto la polilínea como la ubicación del vehículo establecen las mismas opciones, que incluyen lo siguiente:

  • cantidad de paradas restantes
  • duración hasta la ETA
  • distancia restante en auto

Para cumplir con las reglas, el valor de la visibilidad de las polilíneas de ruta debe ser menor o igual que el valor establecido para la visibilidad del vehículo. En este ejemplo, el umbral de paradas restantes para la polilínea se establece en 3, que es menor que el valor de 5 especificado para el vehículo. Esto significa que, cuando el viaje rastreado llega a 5 paradas de la ubicación de la tarea, aparece el vehículo, pero la ruta de ese vehículo no aparece hasta que el viaje se encuentra a 3 paradas.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

Las polilíneas de ruta y la ubicación del vehículo especifican opciones de visibilidad diferentes

Cuando las polilíneas de ruta y la ubicación del vehículo tienen opciones de visibilidad diferentes , la ubicación del vehículo solo es visible cuando se cumplen ambas opciones de visibilidad. De nuevo, la visibilidad de la polilínea está sujeta a las reglas de visibilidad del vehículo:

  • Siempre visible: Una polilínea de ruta debe usar la opción de visibilidad siempre visible cuando la ubicación del vehículo también proporciona esa misma opción de visibilidad siempre visible.
  • Nunca visible: Una polilínea de ruta debe usar una opción de visibilidad nunca visible cuando la ubicación del vehículo usa una opción de visibilidad nunca visible.

A continuación, se muestra un ejemplo:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

En este ejemplo, la ubicación del vehículo solo es visible si la cantidad de paradas restantes es de al menos 3 Y la distancia restante en auto es de al menos 3,000 metros.

Ejemplo de personalización de la visibilidad de las tareas

En los siguientes ejemplos, se muestra cómo establecer una tarea con las siguientes reglas de visibilidad:

  • Muestra las polilíneas de ruta si el vehículo se encuentra a 3 paradas.
  • Muestra la ETA si la distancia restante en auto es inferior a 5,000 metros.
  • Nunca muestres la cantidad de paradas restantes.
  • Cada uno de los demás campos conserva la visibilidad predeterminada que se muestra cuando el vehículo se encuentra a 5 paradas de la tarea.

Consulta TaskTrackingViewConfig para gRPC o REST.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

Para establecer la ventana de configuración de la vista de seguimiento de tareas con HTTP, llama a PATCH y usa updateMask para actualizar el parámetro taskTrackingViewConfig:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

Por ejemplo:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

¿Qué sigue?