Ce document décrit les champs importants que vous pouvez mettre à jour lorsque vous créez et gérez des véhicules.
|
Pour obtenir la liste complète des champs de véhicule, consultez :
|
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
pour créer des critères personnalisés permettant à vos consommateurs ou aux gestionnaires de flotte de trouver des véhicules dans votre flotte en fonction d'un plus grand nombre de critères de recherche. Cela améliore la capacité de vos applications à 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éhicules. Chaque véhicule peut comporter 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 de leur classe. Vous devez utiliser les valeurs de chaîne suivantes pour représenter les niveaux de classe de véhicules : ECONOMY
, STANDARD
et LUXURY
.
Toutefois, les valeurs des attributs personnalisés ne doivent pas nécessairement être uniques. Vous pouvez utiliser des critères tels que accepte les animaux, non-fumeur et peut effectuer des trajets plus longs. Chacun d'eux peut être un attribut personnalisé distinct utilisant des valeurs booléennes. Un véhicule donné peut se voir attribuer ces trois attributs personnalisés, ainsi que l'attribut personnalisé class défini sur la valeur de chaîne appropriée.
L'utilisation des attributs de cette manière peut vous fournir une grande variété de fonctionnalités utiles pour trouver des véhicules adaptés à des besoins spécifiques. Pour savoir comment utiliser les attributs personnalisés comme filtres de requête, consultez Rechercher des véhicules.
Mettre à jour les attributs du véhicule
Vous pouvez mettre à jour 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 vous fournissez 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 redéclaration de l'ensemble des attributs du véhicule. Cela entraîne l'écrasement 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 nouvel attribut personnalisé, vous devez également redéclarer tous les attributs personnalisés que vous souhaitez que le véhicule conserve. Si vous excluez attributes dans le masque de champ, cette méthode laisse 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 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 met à jour ou ajoute uniquement 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 de véhicule
Cette section explique comment mettre à jour les champs de 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.
Pour modifier des champs autres que last_location
, vous devez disposer des droits 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 Mettre à jour les attributs du véhicule plus haut, la mise à jour du champ attributes
à l'aide de cette approche nécessite que vous indiquiez 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 mettre à jour uniquement la valeur d'une paire clé/valeur d'attribut, utilisez plutôt la méthode UpdateVehicleAttributes
et n'incluez pas le champ attribute
dans le masque de champ pour la requête UpdateVehicle
.
Consultez la documentation de référence 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