En este documento, se supone que comprendes cómo crear y usar tareas. Se proporcionan ejemplos específicos de cómo configurar las tareas de envío de las siguientes maneras:
Establece el período objetivo para una tarea de envío: Establece el período para que se complete la tarea.
Personaliza la visibilidad de las tareas: Personaliza la visibilidad de las actividades de las tareas para mostrarlas a los clientes o a los operadores de flotas.
Consulta Crea tareas de envío para obtener detalles sobre los campos de las tareas de envío. Cuando actualizas información adicional sobre las tareas existentes, también debes incluir el identificador pertinente para la tarea, además de los campos que actualizas para las tareas.
Establece el período objetivo
La ventana de tiempo objetivo es el TimeWindow durante el cual se debe completar la tarea. Por ejemplo, si comunicas un período de entrega a los destinatarios, puedes usar el período objetivo de la tarea para capturar este período y generar alertas, o bien puedes usarlo para analizar el rendimiento de viajes anteriores.
La ventana de tiempo objetivo consta de una hora de inicio y una hora de finalización, y se puede establecer en cualquier tipo de tarea. La ventana de tiempo objetivo no afecta el comportamiento del enrutamiento.
En los siguientes ejemplos, se muestra cómo configurar el período con la biblioteca de gRPC de Java o cómo realizar una solicitud HTTP REST a UpdateTask. También puedes
configurar este campo cuando crees 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 tiempo de la 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 para la tarea. El encabezado de la solicitud debe contener un campo Authorization con el valor Bearer <token>, en el que tu servidor emite <token> según los lineamientos descritos en Roles de la cuenta 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"
}
}
EOMCómo personalizar la visibilidad de las tareas
De forma predeterminada, Fleet Engine proporciona visibilidad de las actividades de tareas que, luego, se pueden mostrar tanto a los clientes que reciben un envío como a los operadores de flota que hacen 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 para cada tarea de modo que se adapte mejor a tu modelo de negocio.
En esta sección, se describen las reglas de visibilidad de los objetos con seguimiento 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 activas del vehículo, como las polilíneas y la hora de llegada estimada
Reglas de visibilidad de los marcadores de ubicación
Fleet Engine muestra marcadores de ubicación para el lugar 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 activas del vehículo, lo que significa que solo las tareas de retiro y entrega pueden aplicar reglas de visibilidad personalizadas.
No se pueden personalizar las siguientes tareas:
- Detenciones programadas
- Tareas de indisponibilidad
- Tareas de vehículos inactivas
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 de la que se hace un seguimiento. Por ejemplo, si el conductor se toma un descanso o se está reabasteciendo el vehículo en la ruta hacia el envío con seguimiento. La hora de llegada estimada y la hora de finalización de la tarea estimada siguen estando disponibles. Tampoco puedes personalizar esta regla.
Visibilidad de las tareas activas de los vehículos
El objeto TaskTrackingInfo proporciona una serie de elementos de datos que 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 está
a 5 paradas de la tarea. La visibilidad finaliza cuando se completa o
cancela la tarea.
Puedes personalizar la configuración de visibilidad para cada tarea estableciendo
el TaskTrackingViewConfig en una tarea cuando la crees o actualices
en Fleet Engine. Esto crea reglas para que los elementos de datos individuales estén
disponibles.
En la siguiente tabla, se muestran los campos a los que puedes aplicar reglas de visibilidad.
| Campos de tareas de vehículos para las reglas de visibilidad |
|---|
|
En esta tabla, se muestran las opciones de visibilidad disponibles para los campos que se mencionaron anteriormente.
| Opciones de visibilidad |
|---|
|
Polilíneas de ruta y reglas de visibilidad de la ubicación del vehículo
En el caso de una ruta con seguimiento, la visibilidad de las polilíneas de la 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 se puede inferir por el final de la polilínea visible. Por lo tanto, la visibilidad de la polilínea de la 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:
- recuento de paradas restantes
- duración hasta la hora estimada de llegada
- distancia de conducción restante
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 con seguimiento está 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 está a 3 paradas.
```js
"taskTrackingViewConfig": {
"routePolylinePointsVisibility": {
"remainingStopCountThreshold": 3
},
"vehicleLocationVisibility": {
"remainingStopCountThreshold": 5
},
}
```
Las polilíneas de ruta y la ubicación del vehículo especifican las diferentes opciones de visibilidad.
Cuando las polilíneas de ruta y la ubicación del vehículo tienen diferentes opciones de visibilidad, la ubicación del vehículo solo es visible cuando se cumplen ambas opciones de visibilidad. Nuevamente, 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 proporcione 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 use 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 el recuento de paradas restantes es de al menos 3 Y la distancia de conducción restante 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 configurar una tarea con las siguientes reglas de visibilidad:
- Muestra las polilíneas de la ruta si el vehículo está a 3 paradas o menos.
- Muestra la hora estimada de llegada si la distancia de conducción restante es inferior a 5,000 metros.
- Nunca mostrar el recuento de paradas restantes
- Cada uno de los demás campos conserva la visibilidad predeterminada de mostrarse cuando el vehículo está 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