Ce document décrit les champs importants que vous pouvez modifier lorsque vous créez et gérez des véhicules.
|
Pour obtenir la liste complète des champs de véhicule, consultez les pages suivantes: |
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'une plus grande variété de critères de recherche. Cela améliore les fonctionnalités de vos applications pour fournir de meilleures correspondances de véhicules que celles que vous obtiendriez en utilisant des critères de recherche basés uniquement sur d'autres champs de véhicule. Chaque véhicule peut avoir au maximum 100 attributs, et chacun d'eux doit avoir 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 opèrent. Vous utiliserez 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 dans le suivi de flotte pour n'afficher que les véhicules qui travaillent 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 pouvez utiliser des critères tels que available-at-night (disponible la nuit) et has-refrigeration (possède un réfrigérateur). Chacun d'eux peut être 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 des attributs de véhicule personnalisés à l'aide de attributes
dans le masque de champ, puis fournissez des valeurs en fonction de la méthode ci-dessous.
Cette API UpdateDeliveryVehicle
ne permet pas de mettre à jour un seul attribut. Lorsque vous utilisez cette méthode, toute utilisation du champ attributes
dans le masque de champ entraîne la ré-déclaration de l'ensemble des attributs du 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 nouvel attribut personnalisé, vous devez également déclarer à nouveau tous les attributs personnalisés que vous souhaitez conserver pour le véhicule. Si vous excluez attributes
dans le masque de champ, cette méthode laisse les attributs personnalisés existants tels que définis précédemment pour le véhicule.
Si vous utilisez attributes
dans le masque de champ, mais sans définir de valeurs, cela équivaut à supprimer tous les attributs personnalisés du véhicule.
Exemple de mise à jour des champs du véhicule
Cette section explique comment mettre à jour les champs du véhicule à l'aide de UpdateDeliveryVehicleRequest
, qui inclut un update_mask
pour indiquer les champs à mettre à jour. Pour en savoir plus, consultez la documentation Protocol Buffers sur les masques de champ.
Les mises à jour de champs autres que last_location
nécessitent des droits d'administrateur Fleet Engine Delivery.
Exemple: définir un attribut personnalisé
Cet exemple spécifie un nouvel attribut: zone
. Comme indiqué dans la section Mettre à jour les attributs des véhicules précédemment, la mise à jour du champ attributes
à l'aide de cette approche nécessite d'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 documentation de référence sur 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