|
このドキュメントでは、車両の作成時と管理時に更新できる重要な車両フィールドについて説明します。
|
車両フィールドの完全なリストについては、以下をご覧ください。
|
車両状態フィールド
システムは、車両の状態を OFFLINE または ONLINE に設定できます。たとえば、車両の状態を毎日午前 9 時に ONLINE、毎日午後 5 時に OFFLINE に設定できます。
| オフライン モード | ONLINE モード |
|---|---|
OFFLINE を使用して、車両が新しいルートを受け入れていないことを示します。この状態でも、車両は割り当てられたルートを完了できます。 |
|
車両属性フィールド
車両の attributes フィールドを使用してカスタマイズされた条件を作成すると、消費者やフリート オペレーターが、より幅広い検索条件でフリート内の車両を見つけられるようになります。これにより、アプリの機能が強化され、他の車両フィールドのみに基づく検索条件を使用する場合よりも、車両の一致精度が向上します。各車両に設定できる属性は最大 100 個で、それぞれに一意のキーが必要です。値は文字列、ブール値、数値のいずれかです。
たとえば、class というカスタム属性を宣言して、ライドシェア車両をクラスレベルで区別できます。車両クラスのレベルを表すには、ECONOMY、STANDARD、LUXURY の文字列値を使用します。
ただし、カスタム属性値は相互に排他的である必要はありません。ペット可、禁煙、長距離旅行が可能などの条件を使用できます。これらはそれぞれ、ブール値を使用する個別のカスタム属性にすることができます。特定の車両に、これら 3 つのカスタム属性すべてと、適切な文字列値に設定された class カスタム属性を割り当てることができます。
このように属性を使用すると、特定のニーズに合った車両を見つけるのに役立つさまざまな機能を利用できます。カスタム属性をクエリフィルタとして使用する方法については、車両を検索するをご覧ください。
車両属性を更新する
車両属性は、UpdateVehicle または UpdateVehicleAttributes を使用して更新できます。各 attributes キーに設定できる値は、車両ごとに 1 つだけです。カスタム車両属性を宣言するには、フィールド マスクで attributes を使用し、以下のメソッドに基づいて値を指定します。
UpdateVehicle |
UpdateVehicleAttributes |
|
|---|---|---|
この API では、1 つの属性のみを更新することはできません。このメソッドを使用する場合、フィールド マスクで attributes フィールドを使用すると、車両の車両属性のセット全体が再宣言されます。これにより、フィールド マスクに明示的に含まれていない既存の属性が上書きされます。このメソッドを使用して新しいカスタム属性を宣言する場合は、車両に保持するすべてのカスタム属性を再宣言する必要があります。フィールド マスクで attributes を除外すると、このメソッドは、車両に以前に定義された既存のカスタム属性をそのままにします。フィールド マスクで attributes を使用し、値を設定しない場合は、車両からすべてのカスタム属性を削除することと同じです。 |
このメソッドは、更新する属性の特定のリストを受け入れます。このリクエストでは、フィールド マスクで指定された属性のみが更新または追加されます。指定されていない既存の属性は変更されません。 |
車両フィールドの更新の例
このセクションでは、UpdateVehicleRequest を使用して車両フィールドを更新する方法について説明します。これには、更新するフィールドを示す update_mask が含まれます。詳細については、フィールド マスクに関するプロトコル バッファのドキュメントをご覧ください。
last_location 以外のフィールドを更新するには、Fleet Engine オンデマンド管理者権限が必要です。
例: 新しい旅行タイプとカスタム属性を有効にする
この例では、車両の back_to_back の移動を有効にし、新しい属性 class も指定しています。前述の車両属性を更新するで説明したように、この方法で attributes フィールドを更新するには、保持するすべてのカスタム属性を指定する必要があります。そのため、この例では、attributes フィールドを指定する更新オペレーション中に上書きされないように、cash_only 値が書き込まれています。
1 つの Key-Value 属性ペアの値のみを更新するには、代わりに UpdateVehicleAttributes メソッドを使用し、UpdateVehicle リクエストのフィールド マスクに attribute フィールドを含めないでください。
gRPC と REST の providers.vehicles.update リファレンスをご覧ください。
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