Mettre à jour les champs relatifs au véhicule de livraison

Ce document présente les champs importants que vous pouvez lors de la création et de la gestion des véhicules.

  • type: type de ce véhicule de livraison. Cela a un impact sur itinéraires générés pour ce véhicule.
  • attributes[]: tableau d'options de type DeliveryVehicleAttribute Utilisez afin de définir des critères personnalisés pour les véhicules de filtrage lors de la recherche ou de la création de fiches de véhicules.
 

Pour obtenir la liste complète des champs pour les véhicules, consultez les articles suivants:

Champ "Attributs du véhicule"

Utilisez le champ attributes du véhicule pour créer des critères personnalisés afin d'activer votre aux consommateurs ou aux opérateurs de flottes de véhicules de transports en commun pour trouver des véhicules dans votre flotte une variété de critères de recherche. Ainsi, vos applications peuvent mieux fournir de meilleurs véhicules par rapport à ce que vous auriez obtenu en utilisant des critères de recherche ; uniquement à partir d'autres champs du véhicule. Chaque véhicule peut en avoir 100 au maximum et chacun doit posséder une clé unique. Les valeurs peuvent être des chaînes, des valeurs booléennes ou des nombres.

Par exemple, vous pouvez déclarer un attribut personnalisé appelé zone pour différencier la zone de la ville dans laquelle vos véhicules de livraison fonctionnent. Vous Utilisez des valeurs de chaîne telles que les suivantes pour représenter différentes zones: 1B, 2C et 3A. Vous pouvez ensuite utiliser un filtre de suivi du parc pour n'afficher les véhicules circulant dans une zone spécifique à l'opérateur responsable de cette zone.

Cependant, les valeurs d'attributs personnalisés ne doivent pas nécessairement s'exclure mutuellement. Vous pourriez utilisez des critères tels que disponible la nuit et avec réfrigération. Chacun de ces éléments il peut s'agir d'un attribut personnalisé distinct qui utilise des valeurs booléennes. Un véhicule donné se voit attribuer ces trois attributs personnalisés, ainsi que la propriété zone attribut personnalisé défini sur la valeur de chaîne appropriée.

Mettre à jour les attributs du véhicule

Chaque clé attributes ne peut avoir qu'une seule valeur par véhicule. Vous déclarez les attributs de véhicule personnalisés à l'aide de attributes dans le masque de champ, puis en fournissant des valeurs selon la méthode ci-dessous.

Cette API UpdateDeliveryVehicle ne permet pas de mettre à jour un seul élément . Lorsque vous utilisez cette méthode, toute utilisation du champ attributes dans Le masque de champ entraîne la redéclaration de l'ensemble complet des attributs du véhicule. pour le véhicule. Cela entraîne le remplacement de tout attribut préexistant qui n'est pas explicitement inclus dans le masque de champ. Si vous utilisez cette méthode pour déclarer un nouveau attribut personnalisé, vous devez également redéclarer chaque attribut personnalisé à retenir. Si vous excluez attributes du masque de champ, cette conserve les attributs personnalisés existants tels qu'ils ont été définis précédemment pour le véhicule. Si vous utilisez attributes dans le masque de champ, mais sans définir de valeur, cela revient à équivaut à supprimer tous les attributs personnalisés du véhicule.

Exemple de mise à jour de champs de véhicule

Cette section explique comment modifier les champs du véhicule avec UpdateDeliveryVehicleRequest, qui inclut un update_mask pour indiquer les champs à mettre à jour. Consultez la documentation des tampons de protocole sur masques de champ.

Les mises à jour de champs autres que last_location nécessitent Fleet Engine Delivery droits d'administrateur.

Exemple: définir un attribut personnalisé

Cet exemple spécifie un nouvel attribut: zone. Comme indiqué dans Mettez à jour les attributs du véhicule plus tôt, en mettant à jour le champ attributes avec vous devez indiquer tous les attributs personnalisés que vous souhaitez conserver. Par conséquent, l'exemple montre une valeur available-at-night écrite pour la conserver. d'être écrasé lors d'une opération de mise à jour spécifiant attributes.

Consultez la 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

Étape suivante