Ce document présente les champs importants que vous pouvez lors de la création et de la gestion des 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 de permettre à vos clients ou opérateurs de parc de trouver des véhicules de votre parc à l'aide d'un plus grand nombre 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.
Toutefois, les valeurs des attributs personnalisés ne doivent pas nécessairement être mutuellement exclusives. 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é peut être associé à ces trois attributs personnalisés, ainsi qu'à l'attribut personnalisé zone 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. Tout attribut préexistant qui n'est pas explicitement inclus dans le masque de champ est alors écrasé. 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 éviter qu'elle ne soit écrasée lors d'une opération de mise à jour qui spécifie le champ 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