|
В этом документе описаны важные поля, которые можно обновлять при создании транспортных средств и управлении ими.
|
Полный список полей транспортных средств приведен в следующих статьях:
|
Поле "Состояние транспортного средства"
Система может установить для автомобиля статус OFFLINE или ONLINE. Например, вы можете задать для состояния автомобиля значение ONLINE каждый день в 9:00 и OFFLINE каждый день в 17:00.
| Офлайн-режим | Режим ONLINE |
|---|---|
Используйте OFFLINE, чтобы указать, что транспортное средство не принимает новые поездки. Обратите внимание, что в этом состоянии транспортное средство по-прежнему может выполнять назначенные рейсы. |
|
Поле атрибутов транспортного средства
Используйте поле attributes, чтобы создать собственные критерии поиска, которые помогут клиентам или операторам автопарка находить транспортные средства. Это расширяет возможности ваших приложений по подбору автомобилей по сравнению с использованием критериев поиска, основанных исключительно на других полях. У каждого транспортного средства может быть не более 100 атрибутов, и у каждого из них должен быть уникальный ключ. Значения могут быть строками, логическими значениями или числами.
Например, вы можете объявить настраиваемый атрибут class, чтобы различать автомобили по классам. Для обозначения классов автомобилей используются следующие строковые значения: ECONOMY, STANDARD и LUXURY.
Однако значения настраиваемых атрибутов не обязательно должны быть взаимоисключающими. Вы можете использовать такие критерии, как можно с животными, некурящий и готов к длительным поездкам. Каждый из этих параметров может быть отдельным настраиваемым атрибутом, использующим логические значения. Для одного автомобиля можно указать все три настраиваемых атрибута, а также настраиваемый атрибут class с подходящим строковым значением.
Такое использование атрибутов позволяет реализовать множество полезных функций, которые помогут находить транспортные средства для поездок с определенными требованиями. Инструкции по использованию настраиваемых атрибутов в качестве фильтров запросов приведены в статье Поиск автомобилей.
Обновление атрибутов транспортного средства
Вы можете обновить атрибуты транспортного средства с помощью UpdateVehicle или UpdateVehicleAttributes. Каждый ключ attributes может иметь только одно значение для каждого автомобиля. Вы объявляете настраиваемые атрибуты автомобиля, используя attributes в маске поля, а затем указываете значения на основе метода ниже.
UpdateVehicle |
UpdateVehicleAttributes |
|
|---|---|---|
Этот API не позволяет обновлять только один атрибут. При использовании этого метода любое использование поля attributes в маске поля приводит к повторному объявлению всего набора атрибутов автомобиля. В результате будут перезаписаны все существующие атрибуты, которые не были явно включены в маску поля. Если вы используете этот метод для объявления нового настраиваемого атрибута, вы также должны повторно объявить каждый настраиваемый атрибут, который вы хотите сохранить для транспортного средства. Если вы исключите attributes из маски поля, то этот метод оставит существующие настраиваемые атрибуты в том виде, в котором они были определены для автомобиля ранее. Если вы используете attributes в маске поля, но не задаете значения, это эквивалентно удалению всех настраиваемых атрибутов из автомобиля.
|
Этот метод принимает определенный список атрибутов, которые нужно обновить. Запрос обновляет или добавляет только те атрибуты, которые указаны в маске поля. Существующие атрибуты, которые не указаны, остаются без изменений. |
Пример обновления полей транспортного средства
В этом разделе рассказывается, как обновить поля транспортного средства с помощью UpdateVehicleRequest, в котором есть update_mask, указывающий, какие поля нужно обновить. Подробную информацию можно найти в документации по буферам протокола в разделе Маски полей.
Для обновления других полей, кроме last_location, требуются права администратора Fleet Engine On-demand.
Пример: включение нового типа поездки и настраиваемого атрибута
В этом примере для транспортного средства разрешается 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.
REST
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