En este documento, se asume que ya leíste la guía introductoria a También Tareas programadas en la sección Introducción a Fleet Engine como ¿Qué es una tarea programada? en esta sección.
Fleet Engine para tareas programadas proporciona diferentes categorías amplias de tareas:
- Tareas de envío: Se usa para las tareas de conducción, incluidas la recogida y entrega de entre los envíos.
- Tareas de falta de disponibilidad: Úsalas cuando los conductores no estén disponibles, por ejemplo, durante las pausas obligatorias.
- Tareas detenidas programadas: Se usan para tareas sin conducir en buzones o clientes. locales, como la hora de entrar a un edificio o ubicar un punto de entrega.
En este documento, se explica cómo crear tareas que no son de envío en tu servidor. Para tipos de tareas de envío, consulte Cómo crear tareas de envío.
Campos de tareas para tareas que no son de conducción
En esta sección, se documentan los campos de tareas necesarios tanto para la falta de disponibilidad como para y programar tareas de detención.
Campos de tareas obligatorios
Para cada tarea que crees en Fleet Engine, debes proporcionarle
campos y también puede proporcionar cualquiera de los campos opcionales. Fleet Engine
Ignora todos los demás campos y arroja una excepción si la creación de una tarea
proporciona un deliveryVehicleId
asignado. Para asignar tareas a un vehículo, usa UpdateDeliveryVehicleRequest
. Para obtener más información, consulta
Actualiza tareas.
Campo | Valor |
---|---|
type |
Establece el tipo que coincide con el tipo de tarea, que es uno de los siguientes:
|
state |
State.OPEN |
task_id |
ID de tarea único. Este no debe ser el número de seguimiento del envío. Si no tienes IDs de tareas en tu sistema, puedes generar un identificador único universal (UUID). Para obtener información específica, consulta IDs de tareas. |
tracking_id |
Solo tareas PICKUP o DELIVERY :
Es el número o identificador que utiliza para realizar el seguimiento de un envío. No proporciones este campo para tareas que no sean de envío. |
plannedLocation |
Solo tareas PICKUP , DELIVERY o SCHEDULED_STOP : Es la ubicación en la que se debe completar la tarea. No es obligatorio para las tareas UNAVAILABLE . |
taskDuration |
El tiempo que se espera que se agregue para completar la tarea. Por ejemplo, para buscar para estacionar o caminar hasta el lugar de transferencia. |
Campos opcionales de tareas de envío
Campo | Valor |
---|---|
targetTimeWindow |
El período durante el cual se debe completar la tarea. Este campo no afecta el comportamiento del enrutamiento. |
task_tracking_view_config |
Solo tareas de PICKUP o DELIVERY :
Es la configuración del seguimiento de tareas que especifica qué elementos de datos
son visibles para los usuarios finales y en qué circunstancias. |
attributes |
Una lista de atributos de tarea personalizados. Cada atributo debe tener una clave única. |
Cómo crear una tarea de falta de disponibilidad
Puedes crear una tarea que indique la falta de disponibilidad. por ejemplo, para las pausas del conductor. Para crear una tarea de falta de disponibilidad, sigue estos lineamientos:
- Establece el tipo de tarea en
UNAVAILABLE
. - No incluyas un ID de seguimiento.
- Aunque no tienes que proporcionar una ubicación para una tarea de falta de disponibilidad, Hacerlo proporciona mejores cálculos de la hora de llegada estimada a lo largo del día.
Se aplican reglas especiales de visibilidad a la ubicación del vehículo cuando se encuentra en una
UNAVAILABLE
tarea para compartir el recorrido.
- Aplicaciones para consumidores integradas con la biblioteca de seguimiento de envíos: Cuando se vehículo está en una tarea de falta de disponibilidad, los usuarios de la app para consumidores no pueden ver la ubicación del vehículo, aunque pueden ver información de estado de su envío.
- Apps de seguimiento de flota integradas en la biblioteca de seguimiento de flotas: Cuando se vehículo tiene una tarea de falta de disponibilidad, los administradores de la flota que la usan podrá ver la ubicación del vehículo para las tareas de falta de disponibilidad.
En los siguientes ejemplos, se muestra cómo crear una tarea de falta de disponibilidad programada usando
la biblioteca gRPC de Java o cómo hacer una solicitud REST HTTP a
CreateTask
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.UNAVAILABLE)
.setState(Task.State.OPEN)
.setTaskDuration(
Duration.newBuilder().setSeconds(60 * 60)) // 1hr break
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
REST
Para crear una tarea de falta de disponibilidad desde un entorno de servidor, crea una solicitud HTTP REST
llamada a CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> es un identificador único para la tarea.
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 contener una entidad Task
con los campos adecuados que se describen en Campos de tareas para tareas que no son de conducción.
Comando curl
de ejemplo
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "UNAVAILABLE",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "300s"
}
EOM
Cómo crear una tarea de detención programada
Puedes crear una tarea para una parada programada. por ejemplo, para las tareas sin conducción en las ubicaciones de los clientes, paradas de recarga de combustible o cuando un conductor recibe envíos desde un vehículo alimentador. Cuando crees una tarea de detención programada, usa los siguientes lineamientos:
- Establece el tipo de tarea en
- No incluyas un ID de seguimiento.
- De manera opcional, puedes proporcionar una ubicación.
En los siguientes ejemplos, se muestra cómo crear una tarea de falta de disponibilidad programada usando
la biblioteca gRPC de Java o cómo hacer una solicitud REST HTTP a
CreateTask
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.SCHEDULED_STOP)
.setState(Task.State.OPEN)
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent)
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTrip(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
```
REST
Para crear una tarea de detención programada desde un entorno de servidor, crea una solicitud HTTP REST
llamada a CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> es un identificador único para la tarea.
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 contener una entidad Task
:
Comando curl
de ejemplo
# Set $JWT, $PROJECT_ID, and $TASK_ID in the local environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "SCHEDULED_STOP",
"state": "OPEN",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "600s"
}
EOM