Zaktualizuj pola pojazdu

Ten dokument zawiera ważne pola pojazdu, 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 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ż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 Stan 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 OFFLINE, aby wskazać, że pojazd nie przyjmuje nowych zleceń. 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.
  • W przypadku pojazdów utworzonych w stanie ONLINE należy użyć pola last_location w wywołaniu CreateVehicle.

Pole Atrybuty 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. Dzięki temu aplikacje mogą lepiej dopasowywać pojazdy niż przy użyciu 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óżnić pojazdy w usługach przewozu osób na tle poziomów klasy. 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ę 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.

Aktualizowanie atrybutów pojazdu

Atrybuty pojazdu możesz aktualizować za pomocą UpdateVehicle lub UpdateVehicleAttributes. Każdy klucz attributes może mieć tylko jedną wartość na pojazd. Atrybuty własne pojazdu deklarujesz za pomocą atrybutu attributesw 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. W przypadku korzystania z tej metody każde użycie pola attributes w masce pól powoduje ponowne zadeklarowanie całego zestawu atrybutów pojazdu. Spowoduje to zastąpienie wszystkich istniejących atrybutów, które nie zostały wyraźnie uwzględnione w masce pola. Jeśli użyjesz 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, które są określone w masce pola. Istniejące atrybuty, które nie zostały określone, pozostają 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, które pola należy zaktualizować. Szczegółowe informacje znajdziesz w dokumentacji Protocol Buffers dotyczącej 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

W tym przykładzie włączono back_to_back podróży dla pojazdu i 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 klucz-wartość, użyj metody UpdateVehicleAttributes i nie uwzględniaj pola attribute w masce pola żą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?