Crea altri tipi di attività

Questo documento presuppone che tu abbia letto la guida introduttiva alle Attività pianificate nella sezione Introduzione a Fleet Engine e Che cos'è un'attività pianificata? in questa sezione.

Fleet Engine per le attività pianificate fornisce diverse categorie generali di attività:

  • Attività di spedizione: utilizza questa opzione per le attività di guida, tra cui il ritiro e la consegna delle spedizioni.
  • Attività di non disponibilità: utilizzale per i periodi in cui i conducenti non sono disponibili, ad esempio per le pause obbligatorie.
  • Attività di sosta pianificata: utilizza questa opzione per le attività non di guida presso le cassette postali o le sedi dei clienti, ad esempio il tempo necessario per entrare in un edificio o individuare un punto di consegna.

Questo documento spiega come creare attività non di spedizione sul tuo server. Per i tipi di attività di spedizione, consulta Crea attività di spedizione.

Campi delle attività per le attività non di guida

Questa sezione documenta i campi delle attività necessari sia per le attività di non disponibilità sia per quelle di arresto programmato.

Campi obbligatori per le attività

Per ogni attività creata in Fleet Engine, devi fornire i campi obbligatori e puoi anche fornire uno qualsiasi dei campi facoltativi. Fleet Engine ignora tutti gli altri campi e genera un'eccezione se una richiesta di creazione di un'attività fornisce un deliveryVehicleId assegnato. Per assegnare attività a un veicolo, utilizza UpdateDeliveryVehicleRequest. Per ulteriori informazioni, consulta Aggiorna attività.

CampoValore
type

Impostalo sul tipo corrispondente al tipo di attività, che è uno dei seguenti:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id ID attività univoco. Non deve essere il numero di tracciamento della spedizione. Se non disponi di ID attività nel tuo sistema, puoi generare un identificatore univoco universale (UUID). Per informazioni dettagliate, consulta ID attività.
tracking_id Solo attività PICKUP o DELIVERY: il numero o l'identificatore che utilizzi per monitorare una spedizione. Non fornire questo campo per le attività non di spedizione.
planned_location Solo attività PICKUP, DELIVERY o SCHEDULED_STOP: la località in cui deve essere completata l'attività. Non richiesto per le attività UNAVAILABLE.
task_duration Il tempo previsto per completare l'attività. Ad esempio, per cercare un parcheggio o raggiungere a piedi il luogo di consegna.

Campi facoltativi delle attività di spedizione

CampoValore
target_time_window La finestra temporale durante la quale l'attività deve essere completata. Questo campo non influisce sul comportamento di routing.
task_tracking_view_config Solo attività PICKUP o DELIVERY: la configurazione per il monitoraggio dei tracker delle attività che specifica quali elementi di dati sono visibili agli utenti finali e in quali circostanze.
attributes Un elenco di attributi delle attività personalizzate. Ogni attributo deve avere una chiave univoca.

Crea un'attività di non disponibilità

Puoi creare un'attività che indica la non disponibilità, ad esempio per le pause dei conducenti. Per creare un'attività di non disponibilità, segui queste linee guida:

  • Imposta il tipo di attività su UNAVAILABLE.
  • Non includere un ID monitoraggio.
  • Anche se non è necessario fornire una località per un'attività di non disponibilità, se lo fai, i calcoli dell'orario di arrivo stimato saranno più precisi durante il giorno.

Alla posizione del veicolo si applicano regole di visibilità speciali quando è in un'attività UNAVAILABLE per la condivisione del percorso.

  • App per utenti finali integrate con la libreria di monitoraggio delle spedizioni: quando il veicolo è impegnato in un'attività di non disponibilità, gli utenti dell'app per utenti finali non possono vedere la posizione del veicolo, anche se possono comunque visualizzare le informazioni sullo stato della spedizione.
  • App di monitoraggio del parco veicoli integrate con la libreria di monitoraggio del parco veicoli: quando il veicolo è impegnato in un'attività di non disponibilità, i gestori del parco veicoli che utilizzano l'app di monitoraggio del parco veicoli potranno visualizzare la posizione del veicolo per le attività di non disponibilità.

Gli esempi seguenti mostrano come creare un'attività di non disponibilità pianificata utilizzando la libreria gRPC Java o come effettuare una richiesta HTTP REST 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

Per creare un'attività di non disponibilità da un ambiente server, effettua una chiamata HTTP REST a 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 dei service account e Token web JSON.

Il corpo della richiesta deve contenere un'entità Task con i campi appropriati descritti in Campi delle attività non di guida.

Comando curl di esempio:

 # 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

Crea un'attività di arresto pianificato

Puoi creare un'attività per una sosta programmata, ad esempio per attività non di guida presso le sedi dei clienti, per le soste per il rifornimento o per quando un conducente riceve spedizioni da un veicolo di alimentazione. Quando crei un'attività di arresto pianificato, utilizza le seguenti linee guida:

  • Imposta il tipo di attività su
  • Non includere un ID monitoraggio.
  • Se vuoi, puoi fornire una località.

Gli esempi seguenti mostrano come creare un'attività di non disponibilità pianificata utilizzando la libreria gRPC Java o come effettuare una richiesta HTTP REST 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

Per creare un'attività di arresto pianificato da un ambiente server, effettua una chiamata HTTP REST a 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 dei service account e Token web JSON.

Il corpo della richiesta deve contenere un'entità Task:

Comando curl di esempio:

# 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

Passaggi successivi