In diesem Dokument wird beschrieben, wie Sie Aufgabeninformationen von einem Server oder Browser abrufen können. Fleet Engine bietet zwei Möglichkeiten, Aufgaben zu finden:
Aufgaben suchen: Sie können Aufgaben anhand der folgenden IDs suchen:
- Aufgaben-ID: Wird von Nutzern wie Flottenbetreibern verwendet, die Zugriff auf die vollständige Ansicht der Aufgabendaten haben.
- Tracking-ID: Wird von Ihrer Clientsoftware verwendet, um einem Endnutzer begrenzte Informationen zu liefern, z. B. wann ein Paket bei ihm erwartet wird.
Sie müssen den Unterschied zwischen der Aufgaben-ID und der Aufgaben Tracking-ID kennen. Sie sind jedoch nicht identisch. Weitere Informationen finden Sie unter Grundlegende Aufgabenfelder im Leitfaden für geplante Aufgaben.
Aufgaben auflisten: Ein umfassender Zugriff auf Aufgaben, der nur für vertrauenswürdige Nutzer vorgesehen ist.
Aufgaben suchen
In diesem Abschnitt wird beschrieben, wie Sie Aufgaben anhand der Aufgaben-ID oder Tracking-ID suchen. Dabei gelten die folgenden Anforderungen:
Suchen nach Tracking-ID müssen den Sichtbarkeitsregeln entsprechen , die unter Sichtbarkeitsregeln für verfolgte Objekte aufgeführt sind.
Verwenden Sie das restriktivste Token, um Sicherheitsrisiken zu minimieren. Wenn Sie beispielsweise ein Delivery Consumer-Token verwenden, geben alle Aufrufe nur Informationen zurück, die für diesen Endnutzer relevant sind, z. B. den Absender oder Empfänger einer Sendung. Fleet Engine entfernt alle anderen Informationen in den Antworten. Weitere Informationen zu Tokens finden Sie unter JSON Web Tokens.
Aufgabe nach Aufgaben-ID suchen
Sie können eine Aufgabe anhand ihrer Aufgaben-ID über eine Serverumgebung mit gRPC oder REST suchen. In den folgenden Beispielen wird gezeigt, wie Sie die Java-gRPC-Bibliothek oder eine REST-Anfrage verwenden, um GetTask aufzurufen.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8597549";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task request
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder() // No need for the header
.setName(taskName)
.build();
try {
Task task = deliveryService.getTask(getTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>
- <id> ist eine eindeutige Kennung für die Aufgabe.
- <taskId> ist die ID der Aufgabe, die gesucht werden soll.
- Der Anforderungsheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> von Ihrem Server gemäß den Richtlinien unter Dienstkontorollen und JSON Web Tokens ausgestellt wird.
- Der Anfragetext muss leer sein.
- Wenn die Suche erfolgreich ist, enthält der Antworttext eine Aufgabenentität.
Beispiel für einen curl-Befehl:
# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
"https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"
Aufgaben nach Tracking-ID suchen
In den folgenden Beispielen wird gezeigt, wie Sie Aufgaben anhand ihrer Sendungs-Tracking-ID suchen. Dazu können Sie entweder gRPC oder einen HTTP-REST-Aufruf an GetTaskTrackingInfo verwenden.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder() // No need for the header
.setParent(parent)
.setTrackingId(TRACKING_ID)
.build();
try {
TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>
<tracking_id> ist die Tracking-ID, die mit der Aufgabe verknüpft ist.
Der Anforderungsheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienst kontorolle hat. Weitere Informationen finden Sie unter Dienstkontorollen.
Wenn die Suche erfolgreich ist, enthält der Antworttext eine taskTrackingInfo-Entität.
Beispiel für einen curl-Befehl:
# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
"https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"Aufgaben auflisten
Für das Auflisten von Aufgaben ist ein umfassender Zugriff auf Aufgaben erforderlich. Das Auflisten von Aufgaben ist nur für vertrauenswürdige Nutzer vorgesehen. Verwenden Sie Authentifizierungstokens für Delivery Fleet Reader oder Delivery Admin, wenn Sie Aufgaben auflisten möchten. Weitere Informationen finden Sie unter Dienstkontorollen.
Listen paginieren
Aufgabenlisten werden paginiert. In Anfragen zum Auflisten von Aufgaben kann eine Seitengröße angegeben werden. Wenn eine Seitengröße angegeben ist, ist die Anzahl der zurückgegebenen Aufgaben nicht größer als die angegebene Seitengröße. Wenn keine Seitengröße angegeben ist, wird ein angemessener Standardwert verwendet. Wenn die angeforderte Seitengröße einen internen Maximalwert überschreitet, wird der interne Maximalwert verwendet.
Eine Aufgabenliste kann ein Token zum Lesen der nächsten Ergebnisseite enthalten. Um die nächste Seite abzurufen, senden Sie dieselbe Anfrage noch einmal zusammen mit dem Seitentoken. Wenn das zurückgegebene Seitentoken leer ist, sind keine weiteren Aufgaben zum Abrufen verfügbar.
Felder beim Auflisten von Aufgaben
Fleet Engine entfernt die folgenden Felder beim Auflisten von Aufgaben:
VehicleStop.planned_locationVehicleStop.stateVehicleStop.TaskInfo.taskId
Verwenden Sie die folgenden Feldformate basierend auf den Google API Improvement Proposals:
| Feldtyp | Format | Beispiel |
|---|---|---|
| Zeitstempel | RFC-3339 | task_outcome_time = 2022-03-01T11:30:00-08:00 |
| Dauer | Anzahl der Sekunden, gefolgt von einem s |
task_duration = 120s |
| Enum | String | state = CLOSED AND type = PICKUP |
| Standort | point.latitude und point.longitude |
planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0 |
Aufgelistete Aufgaben filtern
Sie können aufgelistete Aufgaben nach den meisten Aufgabenattributen filtern. Informationen zur Syntax von Filterabfragen finden Sie unter AIP-160. Wenn keine Filterabfrage angegeben ist, werden alle Aufgaben aufgelistet.
In der folgenden Tabelle sind die gültigen Aufgabenattribute aufgeführt, die Sie zum Filtern verwenden können:
| Aufgabenattribute zum Filtern von Listen | |
|---|---|
|
|
Eine vollständige Liste der Operatoren für Filterabfragen finden Sie unter AIP-160.
Beispiele für das Auflisten von Aufgaben
Im folgenden Beispiel wird gezeigt, wie Sie Aufgaben für eine deliveryVehicleId und ein
Aufgabenattribut auflisten. Dazu werden sowohl die Java-gRPC-Bibliothek als auch ein HTTP-REST-Aufruf an
ListTasks verwendet.
Eine erfolgreiche Antwort kann leer sein. Eine leere Antwort bedeutet, dass keine Aufgaben mit der angegebenen deliveryVehicleId verknüpft sind.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Tasks request
String parent = "providers/" + PROJECT_ID;
ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder() // No need for the header
.setParent(parent)
.setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
.build();
try {
ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks
Wenn Sie einen Filter auf die aufgelisteten Aufgaben anwenden möchten, fügen Sie einen URL-Parameter „filter“ mit einer URL-codierten Filterabfrage als Wert ein.
Der Anforderungsheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienst kontorolle hat. Weitere Informationen finden Sie unter Dienstkontorollen.
Eine erfolgreiche Suche liefert einen Antworttext mit der folgenden Struktur:
// JSON representation
{
"tasks": [
{
object (Task)
}
],
"nextPageToken": string,
"totalSize": integer
}
Beispiel für einen curl-Befehl:
# Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
"https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"