Ten dokument zawiera ważne pola pojazdu, które możesz aktualizować podczas tworzenia pojazdów i zarządzania nimi.
|
Pełną listę pól pojazdu znajdziesz w: |
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 strefa, aby odróżnić strefy miasta, w których działają Twoje pojazdy dostawcze. Aby reprezentować różne strefy, użyj wartości ciągu znaków, takich jak 1B
, 2C
i 3A
. Następnie możesz użyć filtra w obsłudze śledzenia floty, aby wyświetlać operatorowi odpowiedzialnemu za daną strefę tylko pojazdy pracujące w konkretnej strefie.
Wartości atrybutów niestandardowych nie muszą się wykluczać. Możesz użyć kryteriów takich jak available-at-night (dostępne w nocy) i has-refrigeration (posiada lodówkę). Każdy z nich może być osobnym atrybutem niestandardowym, który używa wartości logicznych. Danemu pojazdowi można przypisać wszystkie 3 te atrybuty niestandardowe oraz atrybut niestandardowy strefa ustawiony na odpowiednią wartość ciągu znaków.
Aktualizowanie atrybutów pojazdu
Każdy klucz attributes
może mieć tylko 1 wartość na pojazd. Atrybuty niestandardowe pojazdu deklarujesz za pomocą atrybutu attributes
w masce pola, a następnie podajesz wartości zgodnie z poniższą metodą.
Interfejs API UpdateDeliveryVehicle
nie pozwala na aktualizowanie tylko jednego atrybutu. W przypadku korzystania z 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śniejszych 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 z pojazdu.
Przykład aktualizowania pól pojazdu
W tej sekcji dowiesz się, jak aktualizować pola pojazdu za pomocą interfejsu UpdateDeliveryVehicleRequest
, który zawiera pole update_mask
wskazujące, które pola należy zaktualizować. Więcej informacji znajdziesz w dokumentacji Protocol Buffers na temat masek pól.
Aktualizacje pól innych niż last_location
wymagają uprawnień Fleet Engine Delivery
Administrator.
Przykład: ustawienie atrybutu niestandardowego
W tym przykładzie określamy nowy atrybut: zone
. 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ść available-at-night
zapisaną w celu ochrony przed nadpisaniem podczas operacji aktualizacji, która określa pole attributes
.
Zobacz odwołanie providers.deliveryVehicles.patch.
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String VEHICLE_ID = "vehicle-8241890";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Vehicle settings
String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
.addAllAttributes(ImmutableList.of(
DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
.build();
// DeliveryVehicle request
UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
UpdateDeliveryVehicleRequest.newBuilder() // No need for the header
.setName(vehicleName)
.setDeliveryVehicle(myDeliveryVehicle)
.setUpdateMask(FieldMask.newBuilder()
.addPaths("attributes"))
.build();
try {
DeliveryVehicle updatedDeliveryVehicle =
deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case NOT_FOUND:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
# Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
# environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"attributes": [
{"key": "zone", "value": "1B"},
{"key": "available-at-night", "value": "true"}
]
}
EOM