配送車両フィールドを更新

このドキュメントでは、追加可能な重要な車両フィールドについて説明します。 車両の作成と管理に役立ちます。

  • type: この配送車両のタイプ。これは この車両について生成されたルートです。
  • attributes[]: 型のオプション配列 DeliveryVehicleAttribute。使用 サービス内の車両のカスタム条件を定義して 車両を検索または一覧表示する際のフィルタ動作。
 

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

車両属性フィールド

車両の attributes フィールドを使用して、カスタマイズした条件を作成し、 車両を幅広く探せるようにしました。 さまざまな検索条件を指定できます。これにより、アプリの機能が強化され、 検索条件を使用した結果よりも車両の一致率が向上します 他の車両フィールドのみに基づいて生成されます。1 台につき最大 100 台まで それぞれに一意のキーが必要です。値は文字列、 ブール値、数値などです。

たとえば、zone というカスタム属性を宣言して、 配送車両が稼働している都市のゾーンを区別する。あなたなら ゾーンを表すには、1B のような文字列値を使用します。 2C3A。その後、フリート トラッキングでフィルタを使用して、 特定のゾーンで走行中の車両を そのゾーンを担当するオペレーターに提供します

ただし、カスタム属性値は相互に排他的である必要はありません。もしかしたら、 「夜間に利用可能」や「冷蔵庫あり」などの条件を使用します。これらの ブール値を使用する個別のカスタム属性を指定できます。車両 ゾーンとともにこれら 3 つのカスタム属性をすべて割り当てることができます。 カスタム属性を適切な文字列値に設定します。

車両属性を更新する

attributes キーには、車両 1 台につき 1 つの値のみ設定できます。宣言する フィールド マスクで attributes を使用してカスタム車両属性を指定し、 以下のメソッドに基づいて値を提供します。

この UpdateDeliveryVehicle API では、1 つのバージョンのみを 属性です。このメソッドを使用する場合、attributes フィールド マスクを使用すると、車両属性のセット全体が再宣言されます。 指定します。これにより、変更されていない既存の属性が上書きされます。 明示的に指定することもできます。このメソッドを使用して新しい 必要なカスタム属性をすべて再宣言する必要もあります。 決定しますフィールド マスクで attributes を除外すると、次のようになります。 メソッドにより、車両に対して以前に定義された既存のカスタム属性がそのまま維持されます。 フィールド マスクで attributes を使用し、値を設定しないと、次のようになります。 車両からすべてのカスタム属性を削除するのと同じことです。

車両フィールドの更新の例

このセクションでは、以下を使用して車両フィールドを更新する方法について説明します。 UpdateDeliveryVehicleRequestupdate_mask を含む) 更新するフィールドを指定します。プロトコル バッファのドキュメントについては、 フィールド マスクをご覧ください。

last_location 以外のフィールドを更新するには、Fleet Engine Delivery が必要 Admin 権限が含まれます。

例: カスタム属性を設定する

この例では、新しい属性 zone を指定しています。詳しくは、 早めに車両属性を更新し、次のコマンドを使用して attributes フィールドを更新します。 この方法では、保持するカスタム属性をすべて指定する必要があります。 したがって、この例では、それを保持するために available-at-night 値が書き込まれています。 上書きされるのを防ぐことができます。 attributes フィールド。

providers.deliveryVehicles.patch リファレンスをご覧ください。

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .addAllAttributes(ImmutableList.of(
          DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
          DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("attributes"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
      "attributes": [
        {"key": "zone", "value": "1B"},
        {"key": "available-at-night", "value": "true"}
      ]
  }
  EOM

次のステップ