|
W tym dokumencie znajdziesz ważne pola pojazdów, które możesz aktualizować podczas tworzenia pojazdów i zarządzania nimi.
|
Pełną listę pól dotyczących pojazdów znajdziesz w tych artykułach: |
Pole atrybutów pojazdu
Użyj pola attributes pojazd, 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 zone, aby odróżnić, w której strefie miasta działają Twoje pojazdy dostawcze. Do reprezentowania różnych stref możesz używać wartości ciągu tekstowego, takich jak: 1B, 2C i 3A. Następnie możesz użyć filtra w śledzeniu floty, aby wyświetlać operatorowi odpowiedzialnemu za daną strefę tylko pojazdy pracujące w tej strefie.
Wartości atrybutów niestandardowych nie muszą się jednak wykluczać. Możesz użyć kryteriów takich jak available-at-night i has-refrigeration. 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 wraz z atrybutem niestandardowym zone ustawionym na odpowiednią wartość ciągu znaków.
Aktualizowanie atrybutów pojazdu
Każdy klucz attributes może mieć tylko jedną wartość na pojazd. Deklarujesz atrybuty niestandardowe pojazdu za pomocą attributes w masce pola, a następnie podajesz wartości zgodnie z poniższą metodą.
Ten interfejs API UpdateDeliveryVehicle 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 każdego wcześniej istniejącego atrybutu, który nie został wyraźnie uwzględniony w masce pola. Jeśli używasz tej metody do deklarowania nowego atrybutu niestandardowego, musisz ponownie zadeklarować każdy atrybut niestandardowy, który ma być zachowany w przypadku pojazdu. Jeśli w masce pola wykluczysz attributes, ta metoda pozostawi istniejące atrybuty niestandardowe w pojeździe w dotychczasowej postaci.
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.
Przykład aktualizacji pól pojazdu
W tej sekcji pokazujemy, jak aktualizować pola pojazdu za pomocą metody UpdateDeliveryVehicleRequest, która zawiera parametr update_mask wskazujący pola do zaktualizowania. Szczegółowe informacje znajdziesz w dokumentacji Protocol Buffers na temat masek pól.
Aktualizacje pól innych niż last_location wymagają uprawnień administratora Fleet Engine Delivery.
Przykład: ustawianie atrybutu niestandardowego
W tym przykładzie określono nowy atrybut: zone. Jak wspomnieliśmy wcześniej w sekcji Aktualizowanie atrybutów pojazdu, aktualizowanie pola attributes za pomocą tej metody wymaga podania wszystkich atrybutów niestandardowych, które chcesz zachować.
Dlatego w przykładzie pokazano wartość available-at-night, która została zapisana, aby zapobiec jej zastąpieniu podczas operacji aktualizacji, która określa pole attributes.
Zapoznaj się z dokumentacją 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