Crea altri tipi di attività

Questo documento presuppone che tu abbia letto la guida introduttiva alle attività pianificate nella sezione Introduzione a Fleet Engine, nonché la sezione 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à non di spedizione sul server. Per Consulta la sezione Creare attività di spedizione.

Campi delle attività per le attività non di guida

Questa sezione descrive i campi delle attività necessari sia per le attività di interruzione pianificata sia per quelle di interruzione programmata.

Campi attività obbligatori

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 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à.

CampoValore
type

Imposta il 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 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 Solo attività PICKUP, DELIVERY o SCHEDULED_STOP: la posizione in cui deve essere completata l'attività. Non obbligatorio per UNAVAILABLE attività.
taskDuration Il tempo stimato per completare l'attività. Ad esempio, per cercare per il parcheggio o a piedi fino al punto di consegna.

Campi facoltativi delle attività di spedizione

CampoValore
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 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 indisponibilità

Puoi creare un'attività che indichi l'interruzione, ad esempio per le pause del conducente. Per creare un'attività di indisponibilità, segui queste linee guida:

  • Imposta il tipo di attività su UNAVAILABLE.
  • Non includere un ID monitoraggio.
  • Anche se non devi fornire una località per un'attività di temporanea indisponibilità, se lo fai puoi usufruire di calcoli dell'orario di arrivo stimato (ETA) migliorati durante la giornata.

Alla posizione del veicolo si applicano regole speciali di visibilità quando si trova su un Attività UNAVAILABLE per la condivisione del percorso.

  • App consumer integrate con la libreria Shipment Tracking: quando il veicolo è in un'attività di indisponibilità, gli utenti dell'app consumer non possono vedere la posizione del veicolo, pur continuando a vedere le informazioni sullo stato la spedizione.
  • App di monitoraggio della flotta integrate con la libreria Fleet Tracking: quando il veicolo è sottoposto a un'attività di indisponibilità, i gestori della flotta che utilizzano il parco dispositivi L'app di monitoraggio potrà vedere la posizione del veicolo per le attività relative alla mancata disponibilità.

I seguenti esempi mostrano come creare un'attività di indisponibilità pianificata utilizzando la libreria Java gRPC 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.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 indisponibilità 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 Token web JSON.

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

Esempio di comando curl:

 # 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

Creare un'attività di interruzione pianificata

Puoi creare un'attività per una fermata programmata, ad esempio per le attività non di guida nelle sedi dei clienti, per le soste per il rifornimento o per quando un conducente riceve le spedizioni da un veicolo feeder. Quando crei un'attività di interruzione pianificata, segui le seguenti linee guida:

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

I seguenti esempi mostrano come creare un'attività di indisponibilità pianificata utilizzando la libreria Java gRPC 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.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 interruzione pianificata 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 Token web JSON.

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

Esempio di comando curl:

# 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