車両フィールドを更新する

このドキュメントでは、車両の作成と管理時に更新できる重要な車両フィールドについて説明します。

  • vehicle_state: 新しい旅程で車両を利用できるかどうかを決定します。
  • vehicle_type: 車両の作成時に必須のフィールドです。 このフィールドは、車両の一致のフィルタ条件としても使用できます。このフィールドの設定について詳しくは、 車両を作成する をご覧ください。
  • attributes[]: 型のオプションの配列VehicleAttribute。これを使用してカスタム条件を定義し、車両の検索や一覧表示を行う際のフィルタリング動作を強化します。
 

車両フィールドの完全なリストについては、以下をご覧ください。

車両の状態フィールド

システムは、車両の状態を OFFLINE または ONLINE に設定できます。たとえば、車両の状態を毎日午前 9 時に ONLINE に、毎日午後 5 時に OFFLINE に設定できます。

オフライン モード オンライン モード
OFFLINE を使用して、車両が新しい旅程を受け付けていないことを示します。この状態でも、車両は割り当てられた旅程を完了できます。
  • Vehicle 状態で作成された ONLINE は、SearchVehicles クエリへのレスポンスとしてすぐに返されることがあります。詳しくは、車両を検索する をご覧ください。
  • ONLINE 状態で作成された車両は、last_location フィールドを CreateVehicle 呼び出しで使用する必要があります。

車両属性フィールド

車両の attributes フィールドを使用してカスタム条件を作成すると、ユーザーやフリート オペレーターは、さまざまな検索条件でフリート内の車両を見つけることができます。これにより、他の車両フィールドのみに基づく検索条件を使用する場合よりも、アプリの車両一致機能が向上します。各車両には最大 100 個の属性を設定でき、それぞれに一意のキーが必要です。値は文字列、ブール値、数値にできます。

たとえば、クラスレベルでライドシェア車両を区別するために、 class というカスタム属性を宣言できます。車両クラスレベルを表すには、ECONOMYSTANDARDLUXURY の文字列値を使用します。

ただし、カスタム属性の値は相互に排他的である必要はありません。たとえば、 ペット可禁煙長距離移動可能 などの条件を使用できます。これらはそれぞれ、ブール値を使用する個別のカスタム属性にできます。特定の車両には、これらの 3 つのカスタム属性すべてと、適切な文字列値に設定された class カスタム属性を割り当てることができます。

このように属性を使用すると、特定のニーズに対応した旅程の車両を見つけるのに役立つさまざまな機能を利用できます。カスタム属性をクエリフィルタとして使用する方法については、車両を検索するをご覧ください。

車両属性を更新する

車両属性は、UpdateVehicle または UpdateVehicleAttributes を使用して更新できます。各 attributes キーに設定できる値は、車両ごとに 1 つだけです。フィールド マスクで attributes を使用してカスタム車両属性を宣言し、以下の方法に基づいて値を指定します。

UpdateVehicle UpdateVehicleAttributes
この API では、単一の属性のみを更新することはできません。このメソッドを使用すると、フィールド マスクで attributes フィールドを使用すると、車両の車両属性の 完全なセット が再宣言されます。これにより、フィールド マスクに明示的に含まれていない既存の属性が上書きされます。このメソッドを使用して新しいカスタム属性を宣言する場合は、 車両に保持するすべてのカスタム属性を 再宣言する必要があります。フィールド マスクで attributes を除外すると、このメソッドでは、既存のカスタム属性は車両に対して以前に定義されたままになります。フィールド マスクで attributes を使用しても値を設定しない場合は、車両からすべてのカスタム属性を削除するのと同じです。 このメソッドは、更新する属性の特定のリストを 受け入れます。リクエストは、フィールド マスクで指定された属性のみを更新または追加します。指定されていない既存の属性は変更されません。

車両フィールドの更新例

このセクションでは、UpdateVehicleRequest を使用して車両フィールドを更新する方法について説明します。UpdateVehicleRequest には、更新するフィールドを示す update_mask が含まれています。詳しくは、 フィールド マスクに関する Protocol Buffers のドキュメントをご覧ください。

last_location 以外のフィールドを更新するには、Fleet Engine オンデマンド管理者の権限が必要です。

例: 新しい旅程タイプとカスタム属性を有効にする

この例では、車両の back_to_back 旅程を有効にし、新しい属性 class を指定します。前述の車両属性を更新するで説明したように、 この方法で attributes フィールドを更新するには、保持するすべての カスタム属性を指定する必要があります。そのため、この例では、attributes フィールドを指定する更新オペレーション中に上書きされないように、cash_only 値が書き込まれています。

1 つの Key-Value 属性ペアの値のみを更新するには、代わりに UpdateVehicleAttributes メソッドを使用し、attribute フィールド を UpdateVehicle リクエストのフィールド マスクに含めないでください。

gRPCREST については、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

次のステップ