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 "État du véhicule"
Votre système peut définir l'état du véhicule sur OFFLINE
ou ONLINE
. Par exemple, vous pouvez définir l'état du véhicule sur ONLINE
tous les jours à 9h et sur OFFLINE
tous les jours à 17h.
Mode HORS CONNEXION | Mode EN LIGNE |
---|---|
Utilisez OFFLINE pour indiquer qu'un véhicule n'accepte pas de nouveaux trajets. Notez que le véhicule peut toujours effectuer les trajets qui lui sont attribués dans cet état. |
|
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é class pour différencier vos véhicules de covoiturage en fonction des niveaux de classe. Vous devez utiliser les valeurs de chaîne suivantes pour représenter les niveaux de classe de véhicule: ECONOMY
, STANDARD
et LUXURY
.
Toutefois, les valeurs des attributs personnalisés ne doivent pas nécessairement être mutuellement exclusives. Vous pouvez utiliser des critères tels que animaux acceptés, non-fumeurs et pouvant effectuer des trajets plus longs. Chacune de ces valeurs 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é classe défini sur la valeur de chaîne appropriée.
L'utilisation d'attributs de cette manière peut vous fournir une grande variété de fonctionnalités utiles pour trouver des véhicules pour des trajets répondant à des besoins spécifiques. Pour savoir comment utiliser des attributs personnalisés comme filtres de requête, consultez Rechercher des véhicules.
Mettre à jour les attributs du véhicule
Vous pouvez modifier les attributs du véhicule à l'aide de UpdateVehicle
ou de UpdateVehicleAttributes
. 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 en fournissant des valeurs en fonction de la méthode ci-dessous.
UpdateVehicle |
UpdateVehicleAttributes |
|
---|---|---|
Cette API 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 pour le véhicule. Tout attribut préexistant qui n'est pas explicitement inclus dans le masque de champ est é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.
|
Cette méthode accepte une liste spécifique d'attributs à mettre à jour. La requête ne met à jour ni n'ajoute que les attributs spécifiés dans le masque de champ. Les attributs préexistants qui ne sont pas spécifiés restent inchangés. |
Exemple de mise à jour des champs du véhicule
Cette section explique comment mettre à jour les champs du véhicule à l'aide de UpdateVehicleRequest
, 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 On-Demand.
Exemple: Activer un nouveau type de trajet et un attribut personnalisé
Cet exemple active les trajets back_to_back
pour le véhicule et spécifie également un nouvel attribut: class
. Comme indiqué dans la section Mettre à jour les attributs des véhicules précédemment, pour mettre à jour le champ attributes
à l'aide de cette approche, vous devez indiquer tous les attributs personnalisés que vous souhaitez conserver. Par conséquent, l'exemple montre une valeur cash_only
écrite pour éviter qu'elle ne soit écrasée lors d'une opération de mise à jour qui spécifie le champ attributes
.
Pour ne mettre à jour que la valeur d'une paire d'attributs clé-valeur, utilisez plutôt la méthode UpdateVehicleAttributes
et n'incluez pas le champ attribute
dans le masque de champ de la requête UpdateVehicle
.
Consultez la documentation de référence sur providers.vehicles.update
pour gRPC et REST.
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