|
Ten dokument zawiera informacje o ważnych polach pojazdu, które możesz aktualizować podczas tworzenia pojazdów i zarządzania nimi.
|
Pełną listę pól pojazdu znajdziesz tutaj:
|
Pole stanu pojazdu
Twój system może ustawić stan pojazdu na OFFLINE lub ONLINE. Możesz na przykład ustawić stan pojazdu na ONLINE codziennie o 9:00, a na OFFLINE codziennie o 17:00.
| Tryb OFFLINE | Tryb ONLINE |
|---|---|
Użyj 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 pojazdu, aby utworzyć niestandardowe kryteria, które umożliwią klientom lub operatorom floty znajdowanie pojazdów w Twojej flocie na podstawie szerszego zakresu kryteriów wyszukiwania. Zwiększa to możliwości Twoich 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 znaków, wartościami logicznymi lub liczbami.
Możesz na przykład zadeklarować atrybut niestandardowy o nazwie class, aby odróżnić pojazdy do wspólnych przejazdów według klasy. Do reprezentowania poziomów klasy pojazdu użyjesz tych wartości ciągu znaków: ECONOMY, STANDARD i LUXURY.
Wartości atrybutów niestandardowych nie muszą się jednak wykluczać. Możesz użyć kryteriów takich jak pet-friendly, non-smoking i able to take longer trips. 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 te atrybuty niestandardowe wraz z atrybutem niestandardowym class ustawionym na odpowiednią wartość ciągu znaków.
Używanie atrybutów w ten sposób może zapewnić Ci wiele funkcji przydatnych do znajdowania pojazdów na potrzeby przejazdów o określonych potrzebach. 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 klucz attributes może mieć tylko 1 wartość na pojazd. Atrybuty niestandardowe pojazdu deklarujesz za pomocą attributes w masce pola, a następnie podajesz wartości zgodnie z metodą opisaną poniżej.
UpdateVehicle |
UpdateVehicleAttributes |
|
|---|---|---|
Ten interfejs API nie pozwala na aktualizowanie tylko jednego atrybutu. Gdy 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 każdego wcześniej istniejącego atrybutu, który nie został wyraźnie uwzględniony w masce pola. Jeśli używasz tej metody do deklarowania nowego atrybutu niestandardowego, musisz też ponownie zadeklarować każdy atrybut niestandardowy, który ma zostać zachowany w pojeździe. Jeśli wykluczysz attributes w masce pola, ta metoda pozostawi istniejące atrybuty niestandardowe w postaci wcześniej zdefiniowanej dla pojazdu. Jeśli użyjesz attributes w masce pola, ale bez ustawiania wartości, będzie to równoznaczne z usunięciem wszystkich atrybutów niestandardowych z pojazdu.
|
Ta metoda akceptuje określoną listę atrybutów do zaktualizowania. Żądanie aktualizuje lub dodaje tylko te atrybuty, które są określone w masce pola. Wcześniej istniejące atrybuty, które nie zostały określone, pozostają niezmienione. |
Przykład aktualizowania pól pojazdu
W tej sekcji pokazujemy, jak aktualizować pola pojazdu za pomocą UpdateVehicleRequest, która zawiera update_mask, aby wskazać, które pola mają zostać zaktualizowane. Więcej informacji znajdziesz w dokumentacji
Protocol Buffers na temat masek pól.
Aktualizacje pól innych niż last_location wymagają uprawnień Administrator Fleet Engine On-demand.
Przykład: włączanie nowego typu przejazdu i atrybutu niestandardowego
Ten przykład włącza przejazdy back_to_back dla pojazdu i określa nowy atrybut: class. Jak wspomnieliśmy wcześniej w sekcji Aktualizowanie atrybutów pojazdu, aktualizowanie pola attributes za pomocą tej metody wymaga wskazania wszystkich atrybutów niestandardowych, które mają zostać zachowane. Dlatego w przykładzie pokazujemy wartość cash_only zapisaną w celu ochrony przed zastąpieniem podczas operacji aktualizacji, która określa pole attributes.
Aby zaktualizować tylko wartość jednej pary klucz-wartość, użyj metody
UpdateVehicleAttributes i nie uwzględniaj pola attribute w masce pola żądania UpdateVehicle.
Więcej informacji znajdziesz w dokumentacji referencyjnej providers.vehicles.update dla 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