Zaktualizuj pola pojazdu

W tym dokumencie znajdziesz 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 w przypadku nowych przejazdów.
  • vehicle_type: pole wymagane podczas tworzenia pojazdu. To pole może też służyć jako kryterium filtrowania dopasowań pojazdów. Szczegółowe informacje o ustawianiu tego pola znajdziesz w artykule Tworzenie pojazdu.
  • attributes[]: opcjonalna tablica typu VehicleAttribute. Używaj ich do definiowania niestandardowych kryteriów, aby ulepszyć filtrowanie podczas wyszukiwania lub wyświetlania pojazdów.
 

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.
  • Vehicle utworzony w stanie ONLINE może być natychmiast zwracany w odpowiedzi na zapytania SearchVehicles. Więcej informacji znajdziesz w artykule Wyszukiwanie pojazdów.
  • Pojazdy utworzone w stanie ONLINE powinny używać pola last_location w wywołaniu CreateVehicle.

Pole atrybutów pojazdu

Użyj pola attributespojazdattributes, 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, STANDARDLUXURY.

Wartości atrybutów niestandardowych nie muszą się jednak wykluczać. Możesz użyć kryteriów takich jak przyjazny dla zwierząt, dla niepalącychmoż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_onlywartość 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ą 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?