W tym dokumencie znajdziesz ważne pola pojazdów, które możesz aktualizować podczas tworzenia pojazdów i zarządzania nimi.
|
Pełną listę pól dotyczących pojazdów znajdziesz w tych artykułach:
|
Pole stanu pojazdu
System może ustawić stan pojazdu na OFFLINE
lub ONLINE
. Możesz na przykład ustawić stan pojazdu na ONLINE
codziennie o godzinie 9:00 i OFFLINE
codziennie o godzinie 17:00.
Tryb OFFLINE | Tryb ONLINE |
---|---|
Użyj symbolu OFFLINE , aby wskazać, że pojazd nie przyjmuje nowych przejazdów. Pamiętaj, że w tym stanie pojazd może nadal realizować przypisane przejazdy. |
|
Pole atrybutów pojazdu
Użyj pola attributes
pojazdattributes
, aby utworzyć niestandardowe kryteria, które umożliwią konsumentom lub operatorom flot znajdowanie pojazdów we flocie na podstawie szerszego zakresu kryteriów wyszukiwania. Zwiększa to możliwości aplikacji w zakresie lepszego dopasowywania pojazdów niż w przypadku korzystania z kryteriów wyszukiwania opartych wyłącznie na innych polach pojazdu. Każdy pojazd może mieć maksymalnie 100 atrybutów, a każdy z nich musi mieć unikalny klucz. Wartości mogą być ciągami tekstowymi, wartościami logicznymi lub liczbami.
Możesz na przykład zadeklarować atrybut niestandardowy o nazwie class, aby odróżniać pojazdy do przewozu osób na podstawie klasy. Do przedstawienia poziomów klasy pojazdu użyjesz tych wartości ciągu tekstowego: ECONOMY
, STANDARD
i LUXURY
.
Wartości atrybutów niestandardowych nie muszą się jednak wykluczać. Możesz użyć kryteriów takich jak przyjazny dla zwierząt, dla niepalących i możliwość odbywania dłuższych podróży. Każdy z nich może być osobnym atrybutem niestandardowym, który używa wartości logicznych. Do danego pojazdu można przypisać wszystkie 3 atrybuty niestandardowe, a także atrybut niestandardowy class ustawiony na odpowiednią wartość tekstową.
Korzystanie z atrybutów w ten sposób może zapewnić Ci wiele funkcji przydatnych do wyszukiwania pojazdów na potrzeby przejazdów o specyficznych wymaganiach. Instrukcje korzystania z atrybutów niestandardowych jako filtrów zapytań znajdziesz w artykule Wyszukiwanie pojazdów.
Aktualizowanie atrybutów pojazdu
Atrybuty pojazdu możesz aktualizować za pomocą UpdateVehicle
lub UpdateVehicleAttributes
. Każdy attributes
klucz może mieć tylko jedną wartość na pojazd. Deklarujesz niestandardowe atrybuty pojazdu za pomocą attributes
w masce pola, a następnie podajesz wartości zgodnie z poniższą metodą.
UpdateVehicle |
UpdateVehicleAttributes |
|
---|---|---|
Ten interfejs API nie umożliwia aktualizowania tylko jednego atrybutu. Jeśli używasz tej metody, każde użycie pola attributes w masce pola powoduje ponowne zadeklarowanie całego zestawu atrybutów pojazdu. Spowoduje to zastąpienie wszystkich wcześniej istniejących atrybutów, które nie zostały wyraźnie uwzględnione w masce pola. Jeśli używasz tej metody do deklarowania nowego atrybutu niestandardowego, musisz ponownie zadeklarować wszystkie atrybuty niestandardowe, które mają być zachowane w przypadku pojazdu. Jeśli wykluczysz attributes w masce pola, ta metoda pozostawi istniejące atrybuty niestandardowe zdefiniowane wcześniej dla pojazdu. Jeśli w masce pola użyjesz wartości attributes , ale nie ustawisz wartości, będzie to równoznaczne z usunięciem z pojazdu wszystkich atrybutów niestandardowych.
|
Ta metoda akceptuje określoną listę atrybutów do zaktualizowania. Żądanie aktualizuje lub dodaje tylko te atrybuty, które zostały określone w masce pola. Wcześniejsze atrybuty, które nie zostały określone, pozostaną niezmienione. |
Przykład aktualizacji pól pojazdu
W tej sekcji dowiesz się, jak aktualizować pola pojazdu za pomocą UpdateVehicleRequest
, w tym update_mask
, aby wskazać, które pola mają zostać zaktualizowane. Szczegółowe informacje znajdziesz w dokumentacji Protocol Buffers na temat masek pól.
Aktualizowanie pól innych niż last_location
wymaga uprawnień administratora Fleet Engine On-Demand.
Przykład: włączanie nowego typu przejazdu i atrybutu niestandardowego
Ten przykład umożliwia back_to_back
przejazdy pojazdem i określa nowy atrybut: class
. Jak wspomnieliśmy wcześniej w sekcji Aktualizowanie atrybutów pojazdu, aktualizacja pola attributes
za pomocą tej metody wymaga wskazania wszystkich atrybutów niestandardowych, które chcesz zachować. Dlatego w przykładzie pokazano cash_only
wartość zapisaną w celu ochrony przed zastąpieniem podczas operacji aktualizacjiattributes
, która określa pole.
Aby zaktualizować tylko wartość jednej pary atrybutów klucz-wartość, użyj metody UpdateVehicleAttributes
i nie uwzględniaj pola attribute
w masce pola w przypadku żądania UpdateVehicle
.
Zapoznaj się z dokumentacją providers.vehicles.update
dotyczącą gRPC i REST.
gRPC
static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";
VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);
String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
.setVehicleState(VehicleState.ONLINE)
.addAllAttributes(ImmutableList.of(
VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
.setBackToBackEnabled(true)
.build();
UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
.setName(vehicleName)
.setVehicle(updatedVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("vehicle_state")
.addPaths("attributes")
.addPaths("back_to_back_enabled"))
.build();
try {
Vehicle updatedVehicle =
vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
// Most implementations will call CreateVehicle in this case
break;
case PERMISSION_DENIED:
break;
}
return;
}
// If no Exception, Vehicle updated successfully.
REST
curl -X PUT \
"https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
--data-binary @- << EOM
{
"vehicleState": "ONLINE",
"attributes": [
{"key": "class", "value": "LUXURY"},
{"key": "cash_only", "value": "false"}
],
"backToBackEnabled": true
}
EOM