В этом документе рассматриваются важные поля транспортных средств, которые вы можете обновить при создании и управлении транспортными средствами.
| Полный список полей транспортного средства см. здесь:
|
Поле состояния транспортного средства
Ваша система может установить состояние транспортного средства на OFFLINE
или ONLINE
. Например, вы можете установить состояние транспортного средства на ONLINE
каждый день в 9 утра и OFFLINE
каждый день в 5 вечера.
ОФФЛАЙН режим | ОНЛАЙН режим |
---|---|
Используйте OFFLINE , чтобы указать, что транспортное средство не принимает новые поездки. Обратите внимание, что транспортное средство все еще может выполнять назначенные поездки, находясь в этом состоянии. |
|
Поле атрибутов транспортного средства
Используйте поле attributes
транспортного средства для создания настраиваемых критериев, чтобы ваши потребители или операторы автопарка могли находить транспортные средства в вашем автопарке по более широкому спектру критериев поиска. Это расширяет возможности ваших приложений по предоставлению лучших совпадений транспортных средств по сравнению с тем, что вы могли бы получить, используя критерии поиска, основанные исключительно на других полях транспортных средств. Каждое транспортное средство может иметь не более 100 атрибутов, и каждый из них должен иметь уникальный ключ. Значения могут быть строками, логическими значениями или числами.
Например, вы можете объявить пользовательский атрибут с именем class , чтобы различать ваши автомобили для совместных поездок по уровням классов. Вы бы использовали следующие строковые значения для представления уровней классов автомобилей: ECONOMY
, STANDARD
и LUXURY
.
Однако значения пользовательских атрибутов не обязательно должны быть взаимоисключающими. Вы можете использовать такие критерии, как «домашние животные» , «некурящие» и «способные совершать длительные поездки» . Каждый из них может быть отдельным пользовательским атрибутом, использующим логические значения. Определенному транспортному средству могут быть назначены все три этих пользовательских атрибута вместе с пользовательским атрибутом class , установленным на соответствующее строковое значение.
Используя атрибуты таким образом, вы можете получить широкий спектр функций, полезных для поиска транспортных средств для поездок с определенными потребностями. Инструкции по использованию пользовательских атрибутов в качестве фильтров запросов см. в разделе Поиск транспортных средств .
Обновление атрибутов транспортного средства
Вы можете обновить атрибуты транспортного средства с помощью UpdateVehicle
или UpdateVehicleAttributes
. Каждый ключ attributes
может иметь только одно значение для транспортного средства . Вы объявляете пользовательские атрибуты транспортного средства, используя attributes
в маске поля, а затем предоставляете значения на основе метода ниже.
UpdateVehicle | UpdateVehicleAttributes | |
---|---|---|
Этот API не позволяет обновлять только один атрибут. При использовании этого метода любое использование поля attributes в маске поля приводит к повторному объявлению всего набора атрибутов транспортного средства для транспортного средства. Это приводит к перезаписи любого ранее существовавшего атрибута, явно не включенного в маску поля. Если вы используете этот метод для объявления нового настраиваемого атрибута, вы также должны повторно объявить каждый настраиваемый атрибут, который вы хотите, чтобы транспортное средство сохранило. Если вы исключаете attributes в маске поля, то этот метод оставляет существующие настраиваемые атрибуты такими, какими они были ранее определены для транспортного средства. Если вы используете attributes в маске поля, но не устанавливаете значения, это эквивалентно удалению всех настраиваемых атрибутов из транспортного средства. | Этот метод принимает определенный список атрибутов для обновления. Запрос обновляет или добавляет только те атрибуты, которые указаны в маске поля. Существующие ранее атрибуты, которые не указаны, остаются неизменными. |
Пример обновления полей транспортного средства
В этом разделе показано, как обновить поля транспортного средства с помощью UpdateVehicleRequest
, который включает update_mask
для указания полей для обновления. Подробности см. в документации Protocol Buffers о масках полей .
Для обновления полей, отличных от last_location
требуются права администратора Fleet Engine On-demand .
Пример: включить новый тип поездки и настраиваемый атрибут
Этот пример включает поездки back_to_back
для транспортного средства, а также указывает новый атрибут: class
. Как отмечалось ранее в разделе Обновление атрибутов транспортного средства , обновление поля attributes
с использованием этого подхода требует указания всех настраиваемых атрибутов, которые вы хотите сохранить. Поэтому в примере показано значение cash_only
записанное для защиты от перезаписи во время операции обновления, которая указывает поле attributes
.
Чтобы обновить только значение одной пары атрибутов «ключ-значение», используйте метод UpdateVehicleAttributes
и не включайте поле attribute
в маску поля для запроса UpdateVehicle
.
См. справочник providers.vehicles.update
для gRPC и REST .
гРПЦ
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