W tym dokumencie omawiamy ważne kwestie związane z pojazdami, które można aktualizować podczas tworzenia pojazdów i zarządzania nimi.
|
Pełną listę pól dotyczących pojazdów znajdziesz w tych sekcjach:
|
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 9:00 rano i OFFLINE
codziennie o 17:00.
Tryb OFFLINE | tryb ONLINE |
---|---|
Użyj OFFLINE , aby wskazać, że pojazd nie przyjmuje nowych zleceń. Pamiętaj, że pojazd może nadal wykonywać przypisane zadania w czasie,
w tym stanie. |
|
Pole atrybutów pojazdu
Użyj pola Pojazd attributes
, aby utworzyć niestandardowe kryteria, które umożliwią klientom lub operatorom floty znajdowanie pojazdów w Twojej flocie na podstawie większej liczby kryteriów wyszukiwania. Zwiększy to możliwości aplikacji,
lepsze dopasowanie pojazdów w porównaniu do wartości z kryteriów wyszukiwania
wyłącznie na podstawie innych danych
dotyczących pojazdów. Każdy pojazd może mieć maksymalnie 100
a każdy z nich musi mieć unikalny klucz. Wartościami mogą być ciągi znaków,
wartości logiczne czy liczby.
Możesz na przykład zadeklarować atrybut niestandardowy o nazwie class, aby odróżnić pojazdy w usługach przewozu osób na tle poziomów klasy. Użyjesz
te wartości ciągów reprezentujące poziomy klasy pojazdu: ECONOMY
,
STANDARD
i LUXURY
.
Wartości atrybutów niestandardowych nie muszą się jednak wzajemnie wykluczać. Możesz użyć kryteriów takich jak przyjazne zwierzętom, niepalarnia i możliwość 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 z atrybutem niestandardowym class ustawionym na odpowiednią wartość ciągu znaków.
Dzięki temu możesz korzystać z różnych funkcji ułatwiających znajdowanie pojazdów dostosowane do konkretnych potrzeb. Instrukcje, jak to zrobić dotyczące używania atrybutów niestandardowych jako filtrów zapytań znajdziesz w artykule Wyszukiwanie pojazdów.
Zaktualizuj atrybuty pojazdu
Atrybuty pojazdu możesz aktualizować za pomocą UpdateVehicle
lub
UpdateVehicleAttributes
Każdy klucz attributes
może mieć tylko jedną wartość na
pojazdem. Niestandardowe atrybuty pojazdu deklarujesz za pomocą atrybutu attributes
i podać wartości zgodnie z poniższą metodą.
UpdateVehicle |
UpdateVehicleAttributes |
|
---|---|---|
Ten interfejs API nie zezwala na aktualizowanie tylko jednego atrybutu. W przypadku użycia funkcji
tę metodę, dowolne użycie atrybutu attributes
zwraca cały zbiór
ponowne zadeklarowanie atrybutów pojazdu. Dzięki temu powstaje
nadpisania jakiegokolwiek istniejącego atrybutu, który nie został wyraźnie uwzględniony w atrybucie
maską pola. Jeśli używasz tej metody do zadeklarowania nowego atrybutu niestandardowego,
musisz też ponownie zadeklarować każdy atrybut niestandardowy, który ma być używany pojazd
i przechowywać. Jeśli wykluczysz attributes w masce pola,
jeśli ta metoda pozostawia istniejące atrybuty niestandardowe tak, jak zostały one wcześniej zdefiniowane
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 wszystkich niestandardowych atrybutów pojazdu.
|
Ta metoda akceptuje konkretną listę atrybutów do . Żądanie aktualizuje lub dodaje tylko określone atrybuty w masce pola. Istniejące atrybuty, które nie są określone, pozostaną bez zmian bez zmian. |
Przykład aktualizacji pól pojazdu
W tej sekcji dowiesz się, jak zaktualizować pola pojazdu za pomocą UpdateVehicleRequest
,
zawierający update_mask
wskazujący pola, które mają zostać zaktualizowane. Zobacz
Szczegółowe informacje znajdziesz w dokumentacji buforów protokołów na temat masek pól.
Aktualizacje pól innych niż last_location
wymagają uprawnień Fleet Engine On-demand
Administrator.
Przykład: włączenie nowego typu podróży i atrybutu niestandardowego
Ten przykład umożliwia przejechanie back_to_back
samochodem i określa
nowy atrybut: class
. Jak wspominaliś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ć. W tym przykładzie widać więc: cash_only
.
wartość zapisana w celu zabezpieczenia jej przed zastąpieniem podczas aktualizacji.
określające pole attributes
.
Aby zaktualizować tylko wartość jednej pary atrybutu klucz-wartość, użyj funkcji
UpdateVehicleAttributes
i nie uwzględniaj pola attribute
.
w masce pola dla żą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