Zaktualizuj pola pojazdu

Ten dokument zawiera ważne pola pojazdów, które możesz aktualizować podczas tworzenia pojazdów i zarządzania nimi.

  • vehicle_state: określa dostępność pojazdu na potrzeby nowych przejazdów.
  • vehicle_type: pole wymagane podczas tworzenia pojazdu. To pole może służyć też jako kryterium filtrowania dopasowań do pojazdów. Szczegółowe informacje o ustawianiu tego pola znajdziesz w sekcji Tworzenie pojazdu.
  • attributes[]: opcjonalna tablica typu VehicleAttribute. Użyj ich, aby zdefiniować kryteria niestandardowe, które ułatwią filtrowanie podczas wyszukiwania lub wyświetlania pojazdów.
 

Pełną listę pól pojazdu znajdziesz w:

Pole stanu pojazdu

System może ustawić stan pojazdu jako 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 wartości OFFLINE, aby wskazać, że dany pojazd nie akceptuje nowych przejazdów. Pamiętaj, że w tym stanie pojazd może nadal realizować przypisane przejazdy.
  • Vehicle utworzony w stanie ONLINE może zostać natychmiast zwrócony w odpowiedzi na zapytania SearchVehicles. Więcej informacji znajdziesz w artykule Wyszukiwanie pojazdów.
  • W przypadku pojazdów utworzonych w stanie ONLINE należy użyć pola last_location w wywołaniu CreateVehicle.

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ększa to możliwości aplikacji i umożliwia lepsze dopasowanie pojazdów w porównaniu z kryteriami wyszukiwania opartych wyłącznie na innych polach dotyczących pojazdów. 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 rozróżnić pojazdy wspólne na różnych poziomach klas. Aby reprezentować poziomy klasy pojazdu, użyj tych wartości ciągu znaków: 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. Danemu pojazdowi można przypisać wszystkie te atrybuty niestandardowe, a atrybut niestandardowy class ustawić na odpowiednią wartość ciągu znaków.

Dzięki temu możesz korzystać z różnych funkcji ułatwiających znajdowanie pojazdów dostosowanej do konkretnych potrzeb. Instrukcje korzystania z 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 1 wartość na pojazd. Deklarujesz niestandardowe atrybuty pojazdu za pomocą atrybutu attributes w masce pola, a następnie podajesz wartości zgodnie z poniższą metodą.

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 dla pojazdu całego zestawu atrybutów pojazdu. Spowoduje to zastąpienie każdego istniejącego atrybutu, który nie został wyraźnie uwzględniony w masce pola. Jeśli używasz tej metody do zadeklarowania nowego atrybutu niestandardowego, musisz też ponownie zadeklarować każdy atrybut niestandardowy, który chcesz zachować. Jeśli wykluczysz pole attributes w masce pola, ta metoda pozostawi dotychczasowe atrybuty niestandardowe w postaci zdefiniowanej 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 wszystkich niestandardowych atrybutów pojazdu. Ta metoda akceptuje określoną listę atrybutów do zaktualizowania. Żądanie aktualizuje lub dodaje tylko te atrybuty określone w masce pola. Istniejące atrybuty, które nie są określone, pozostaną niezmienione.

Przykład aktualizowania pól pojazdu

W tej sekcji dowiesz się, jak aktualizować pola pojazdu za pomocą UpdateVehicleRequest, które zawiera update_mask wskazujący pola do zaktualizowania. Szczegółowe informacje znajdziesz w dokumentacji buforów protokołów na temat masek pola.

Aktualizacje pól innych niż last_location wymagają uprawnień administratora floty na żądanie.

Przykład: włączenie nowego typu podróży i atrybutu niestandardowego

W tym przykładzie umożliwiamy przejazdy back_to_back pojazdem oraz określono nowy atrybut: class. Jak już wspomnieliśmy w sekcji Aktualizowanie atrybutów pojazdu, aby zaktualizować pole attributes, musisz wskazać wszystkie atrybuty niestandardowe, które chcesz zachować. Dlatego przykład pokazuje wartość cash_only, która jest zapisywana, aby nie została zastąpiona podczas operacji aktualizacji, która określa pole attributes.

Aby zaktualizować tylko wartość jednej pary atrybutów klucz-wartość, użyj metody UpdateVehicleAttributes – nie uwzględniaj pola attribute w masce pola dla żądania UpdateVehicle.

Zapoznaj się z dokumentacją providers.vehicles.update dotyczącą interfejsów gRPCREST.

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

Co dalej?