Questo documento presuppone che tu abbia letto la guida introduttiva per Attività pianificate nella sezione Introduzione a Fleet Engine come Che cos'è un'attività pianificata? in questa sezione.
Fleet Engine per le attività pianificate offre diverse ampie categorie di attività:
- Attività di spedizione: da utilizzare per le attività di guida, tra cui il ritiro e la consegna di spedizioni.
- Attività non disponibili: da utilizzare per i momenti in cui i conducenti non sono disponibili, ad esempio come per le interruzioni obbligatorie.
- Attività di interruzione pianificate: da utilizzare per le attività non in linea con le caselle personali o quelle associate ai clienti quali l'ora di entrare in un edificio o di individuare un punto di consegna.
Questo documento spiega come creare attività di spedizione sul tuo server. Per altro consulta la sezione Creare altri tipi di attività.
Campi dell'attività di spedizione
Questa sezione documenta i campi delle attività necessari per il ritiro e la consegna attività di machine learning.
Campi attività obbligatori
Per ogni attività creata in Fleet Engine, devi fornire le risorse
e può anche fornire uno qualsiasi dei campi facoltativi. Fleet Engine
ignora tutti gli altri campi e genera un'eccezione se la creazione di un'attività
la richiesta fornisce un deliveryVehicleId
assegnato. Per assegnare attività a un veicolo:
usa UpdateDeliveryVehicleRequest
. Per ulteriori informazioni, vedi
Aggiorna le attività.
Campo | Valore |
---|---|
type |
Imposta il tipo corrispondente al tipo di attività, che è uno dei seguenti:
|
state |
State.OPEN |
task_id |
ID attività univoco. Non deve essere il numero di riferimento della spedizione. Se non hai ID attività nel tuo sistema, potresti generare un identificativo (UUID). Per informazioni specifiche, vedi ID attività. |
tracking_id |
Solo attività PICKUP o DELIVERY :
Il numero o l'identificatore che stai utilizzando per tracciare una spedizione. Azioni sconsigliate
indica questo campo per le attività non legate alla spedizione. |
plannedLocation |
PICKUP , DELIVERY o
Solo attività di SCHEDULED_STOP :
posizione in cui deve essere completata l'attività. Non obbligatorio per
UNAVAILABLE attività. |
taskDuration |
Il tempo previsto da aggiungere per completare l'attività. Ad esempio, per cercare per il parcheggio o a piedi fino al punto di consegna. |
Campi facoltativi per le attività di spedizione
Campo | Valore |
---|---|
targetTimeWindow |
L'intervallo di tempo durante il quale deve essere completata l'attività. Questo campo non influisce sul comportamento del routing. |
task_tracking_view_config |
Solo attività PICKUP o DELIVERY :
La configurazione per il monitoraggio delle attività che specifica quali elementi dei dati
siano visibili agli utenti finali in quali circostanze. |
attributes |
Un elenco di attributi delle attività personalizzati. Ogni attributo deve avere una chiave univoca. |
Crea un'attività di ritiro della spedizione
Per utilizzare Fleet Engine per seguire l'attività di un conducente che ritira una spedizione,
creare un'attività di ritiro della spedizione. Ciò comporta l'impostazione dell'attributo tipo di attività su
PICKUP
. L'esempio seguente illustra un ritiro in spedizione presso la Grand
Indonesia East Mall
I seguenti esempi mostrano come creare un'attività di ritiro della spedizione utilizzando l'attributo
Libreria gRPC Java o come effettuare una richiesta REST HTTP
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.PICKUP)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.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 a 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
Per creare un'attività di ritiro della spedizione da un ambiente server, crea un REST HTTP
chiamata al numero CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> è un identificatore univoco dell'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal tuo server in base alle linee guida descritte in Ruoli dell'account di servizio e JSON Web di token.
Il corpo della richiesta deve contenere un'entità Task
con i campi appropriati
descritti nei campi delle attività di spedizione.
Esempio di comando curl
:
# Set $JWT, $PROJECT_ID, $TRACKING_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": "PICKUP",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
Creare un'attività di consegna della spedizione
Per utilizzare Fleet Engine per seguire l'attività di un conducente che consegna una spedizione,
creare un'attività di consegna della spedizione. Ciò comporta l'impostazione dell'attributo tipo di attività
a DELIVERY
. L'esempio seguente illustra la consegna di una spedizione alla Gran
Indonesia East Mall
I seguenti esempi mostrano come creare un'attività di ritiro della spedizione utilizzando l'attributo
Libreria gRPC Java o come effettuare una richiesta REST HTTP
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.DELIVERY)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.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
Per creare un'attività di ritiro della spedizione da un ambiente server, crea un REST HTTP
chiamata al numero CreateTask
:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>
<id> è un identificatore univoco dell'attività.
L'intestazione della richiesta deve contenere un campo Authorization con il valore Bearer <token>, dove <token> viene emesso dal tuo server in base alle linee guida descritte in Ruoli dell'account di servizio e JSON Web di token.
Il corpo della richiesta deve contenere un'entità Task
:
Esempio di comando curl
:
# Set $JWT, $PROJECT_ID, $TRACKING_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": "DELIVERY",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
```