В этом документе описаны важные поля транспортных средств, которые вы можете обновить при создании транспортных средств и управлении ими.
| Полный список полей для транспортных средств см. в разделе:
|
Поле состояния автомобиля
Ваша система может установить состояние автомобиля в OFFLINE
или ONLINE
. Например, вы можете установить состояние автомобиля ONLINE
каждый день в 9 утра и OFFLINE
каждый день в 17:00.
ОФЛАЙН-режим | ОНЛАЙН-режим |
---|---|
Используйте OFFLINE чтобы указать, что транспортное средство не принимает новые поездки. Обратите внимание, что в этом состоянии транспортное средство все еще может совершать назначенные поездки. |
|
Поле атрибутов автомобиля
Используйте поле attributes
транспортного средства, чтобы создать индивидуальные критерии, которые позволят вашим потребителям или операторам автопарка находить транспортные средства в вашем автопарке по более широкому спектру критериев поиска. Это расширяет возможности ваших приложений по обеспечению более точного соответствия транспортных средств по сравнению с использованием критериев поиска, основанных исключительно на других полях транспортных средств. Каждое транспортное средство может иметь не более 100 атрибутов, и каждый из них должен иметь уникальный ключ. Значения могут быть строками, логическими значениями или числами.
Например, вы можете объявить настраиваемый атрибут с именем class , чтобы различать ваши автомобили для совместного использования по уровням классов. Для представления уровней класса транспортного средства можно использовать следующие строковые значения: ECONOMY
, STANDARD
и LUXURY
.
Однако значения пользовательских атрибутов не обязательно должны быть взаимоисключающими. Вы можете использовать такие критерии, как размещение с домашними животными , курение для некурящих и возможность совершать длительные поездки . Каждый из них может быть отдельным настраиваемым атрибутом, использующим логические значения. Данному транспортному средству могут быть назначены все три этих пользовательских атрибута вместе с пользовательским атрибутом класса , которому присвоено соответствующее строковое значение.
Использование атрибутов таким образом может предоставить вам широкий спектр функций, полезных для поиска транспортных средств для поездок с особыми потребностями. Инструкции по использованию настраиваемых атрибутов в качестве фильтров запросов см. в разделе Поиск автомобилей .
Обновить атрибуты автомобиля
Вы можете обновить атрибуты транспортного средства, используя UpdateVehicle
или UpdateVehicleAttributes
. Каждый ключ attributes
может иметь только одно значение для каждого транспортного средства . Вы объявляете пользовательские атрибуты транспортного средства, используя attributes
в маске поля, а затем предоставляете значения на основе метода, описанного ниже.
UpdateVehicle | UpdateVehicleAttributes | |
---|---|---|
Этот API не позволяет обновлять только один атрибут. При использовании этого метода любое использование поля attributes в маске поля приводит к переобъявлению всего набора атрибутов транспортного средства для транспортного средства. Это приводит к перезаписи любого ранее существовавшего атрибута, не включенного явно в маску поля. Если вы используете этот метод для объявления нового настраиваемого атрибута, вам также необходимо повторно объявить каждый настраиваемый атрибут, который вы хотите сохранить в автомобиле. Если вы исключите attributes из маски поля, этот метод оставит существующие пользовательские атрибуты такими, как они были определены ранее для автомобиля. If you use attributes in the field mask, but without setting values, that is equivalent to removing all custom attributes from the vehicle. | Этот метод принимает определенный список атрибутов для обновления. Запрос обновляет или добавляет только те атрибуты, которые указаны в маске поля. Ранее существовавшие атрибуты, которые не указаны, остаются неизменными. |
Пример обновления полей транспортного средства
В этом разделе показано, как обновить поля транспортного средства с помощью UpdateVehicleRequest
, который включает в себя update_mask
указывающий, какие поля нужно обновить. Подробности см. в документации по протокольным буферам о масках полей .
Для обновления полей, отличных от last_location
требуются права администратора Fleet Engine по требованию .
Пример: включить новый тип поездки и настраиваемый атрибут
В этом примере включены поездки back_to_back
для транспортного средства, а также указан новый атрибут: class
. Как отмечалось ранее в разделе «Обновление атрибутов транспортного средства» , обновление поля attributes
с использованием этого подхода требует указания всех настраиваемых атрибутов, которые вы хотите сохранить. Поэтому в примере показано значение cash_only
, записанное для предотвращения его перезаписи во время операции обновления, которая задает поле attributes
.
Чтобы обновить только значение одной пары атрибутов «ключ-значение», используйте вместо этого метод UpdateVehicleAttributes
и не включайте поле attribute
в маску поля для запроса UpdateVehicle
.
См. справочник providers.vehicles.update
для gRPC и REST .
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.
ОТДЫХ
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