|
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 pojazd attributes, 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 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. Aby przedstawić różne strefy, możesz użyć wartości ciągu tekstowego, np. 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 strefa ustawionym na odpowiednią wartość tekstową.
Aktualizowanie atrybutów pojazdu
Każdy klucz attributes może mieć tylko jedną wartość na pojazd. Deklarujesz atrybuty niestandardowe pojazdu za pomocą znaku 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 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 ponownie zadeklarować wszystkie atrybuty niestandardowe, które mają być zachowane w przypadku pojazdu. Jeśli w masce pola wykluczysz attributes, ta metoda pozostawi istniejące atrybuty niestandardowe w takim stanie, w jakim zostały wcześniej zdefiniowane dla pojazdu.
Jeśli użyjesz attributes w masce pola, ale bez ustawiania wartości, będzie to równoznaczne z usunięciem wszystkich atrybutów niestandardowych z pojazdu.
Przykład aktualizacji pól pojazdu
W tej sekcji pokazujemy, jak aktualizować pola pojazdu za pomocą elementu UpdateDeliveryVehicleRequest, który zawiera element update_mask wskazujący, które pola mają zostać zaktualizowane. Szczegółowe informacje znajdziesz w dokumentacji dotyczącej buforów protokołu w sekcji maski 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, aktualizacja pola attributes za pomocą tej metody wymaga wskazania wszystkich atrybutów niestandardowych, które chcesz zachować.
Dlatego w przykładzie zapisano wartość available-at-night, 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