In diesem Dokument wird beschrieben, wie Sie Aufgabeninformationen von einem Server oder Browser abrufen können. Fleet Engine unterstützt 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 Endnutzern eingeschränkte Informationen bereitzustellen, z. B. wann ein Paket bei ihnen erwartet wird.
Achten Sie darauf, den Unterschied zwischen der Aufgaben-ID und der Aufgaben-Tracking-ID zu verstehen. Sie sind jedoch nicht identisch. Weitere Informationen finden Sie im Leitfaden zu geplanten Aufgaben unter Grundlegende Aufgabenfelder.
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. Es gelten folgende Anforderungen:
Für Suchvorgänge nach Tracking-ID müssen die in Sichtbarkeitsregeln für verfolgte Objekte angegebenen Sichtbarkeitsregeln eingehalten werden.
Verwenden Sie das restriktivste Token, um Sicherheitsrisiken zu begrenzen. Wenn Sie beispielsweise ein Delivery Consumer Token verwenden, werden bei allen Aufrufen nur Informationen zurückgegeben, die für diesen Endnutzer relevant sind, z. B. der Absender oder der Empfänger einer Sendung. Alle anderen Informationen in den Antworten werden von Fleet Engine unkenntlich gemacht. Weitere Informationen zu Tokens finden Sie unter JSON Web Tokens.
Aufgabe anhand der Aufgaben-ID suchen
Sie können eine Aufgabe anhand ihrer Aufgaben-ID über gRPC oder REST in einer Serverumgebung suchen. Die folgenden Beispiele zeigen, wie Sie die Java-gRPC-Bibliothek oder eine REST-Anfrage für GetTask verwenden.
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 Anfrageheader muss ein Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> von Ihrem Server gemäß den Richtlinien in Dienstkontorollen und JSON Web Tokens ausgestellt wird.
- Der Anfragetext muss leer sein.
- Wenn die Suche erfolgreich ist, enthält der Antworttext eine Task-Entität.
Beispiel eines curl
-Befehls:
# 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 anhand der Tracking-ID suchen
Die folgenden Beispiele zeigen, wie Sie Aufgaben anhand ihrer Versand-Tracking-ID über gRPC oder einen HTTP-REST-Aufruf an GetTaskTrackingInfo
suchen.
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 der Aufgabe zugeordnet ist.
Der Anfrageheader muss das Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienstkontorolle enthält. Weitere Informationen finden Sie unter Dienstkontenrollen.
Bei erfolgreicher Suche enthält der Antworttext eine taskTrackingInfo-Entität.
Beispiel eines curl
-Befehls:
# 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
Wenn Sie Aufgaben auflisten, wird ein umfassender Zugriff auf Aufgaben angefordert. Das Auflisten von Aufgaben ist nur für vertrauenswürdige Nutzer vorgesehen. Verwenden Sie Authentifizierungstokens für „Leser“ von Delivery-Flotten oder für Delivery-Administratoren, wenn Sie Anfragen zum Auflisten von Aufgaben stellen. Weitere Informationen finden Sie unter Dienstkontenrollen.
Listen paginieren
Aufgabenlisten sind 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. Wenn Sie die nächste Seite abrufen möchten, stellen Sie dieselbe Anfrage noch einmal und fügen Sie das Seitentoken hinzu. 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_location
VehicleStop.state
VehicleStop.TaskInfo.taskId
Verwenden Sie die folgenden Feldformate basierend auf 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 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 die aufgeführten Aufgaben nach den meisten Aufgabenattributen filtern. Informationen zur Syntax von Filterabfragen finden Sie unter AIP-160. Wenn keine Filterabfrage angegeben ist, werden alle Aufgaben aufgeführt.
In der folgenden Tabelle sind gültige Aufgabenattribute aufgeführt, die Sie zum Filtern verwenden können:
Aufgabenattribute zum Filtern von Listen | |
---|---|
|
|
Eine vollständige Liste der Filteranfrageoperatoren finden Sie unter AIP-160.
Beispiele für Aufgaben auflisten
Im folgenden Beispiel wird gezeigt, wie Sie Aufgaben für ein deliveryVehicleId
und ein Aufgabenattribut auflisten – sowohl mit der Java-gRPC-Bibliothek als auch mit einem HTTP-REST-Aufruf an ListTasks
.
Eine erfolgreiche Antwort kann trotzdem leer sein. Eine leere Antwort gibt an, 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 aufgeführten Aufgaben anwenden möchten, fügen Sie einen URL-Parameter „filter“ mit einer URL-escapten Filteranfrage als Wert ein.
Der Anfrageheader muss das Feld Authorization mit dem Wert Bearer <token> enthalten, wobei <token> die richtige Dienstkontorolle enthält. Weitere Informationen finden Sie unter Dienstkontenrollen.
Bei einer erfolgreichen Suche wird ein Antworttext mit der folgenden Struktur zurückgegeben:
// JSON representation
{
"tasks": [
{
object (Task)
}
],
"nextPageToken": string,
"totalSize": integer
}
Beispiel eines curl
-Befehls:
# 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}"