Mettre à jour les champs du véhicule

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

  • vehicle_state: détermine la disponibilité du véhicule. pour les nouveaux trajets.
  • vehicle_type: champ obligatoire lors de la création d'un véhicule. Le champ peut également servir de critère de filtre pour les correspondances de véhicules. Voir Créer un véhicule pour savoir comment définir ce champ.
  • attributes[]: tableau facultatif de type VehicleAttribute Utilisez de définir des critères personnalisés 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 "État du véhicule"

Votre système peut définir l'état du véhicule sur OFFLINE ou ONLINE. Par exemple : pourrait définir l'état du véhicule sur ONLINE tous les jours à 9h et 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 attribués dans cet état.
  • Un Vehicle créé à l'état ONLINE peut être immédiatement renvoyé dans réponse à des requêtes SearchVehicles. Voir Rechercher des véhicules pour en savoir plus plus de détails.
  • Les véhicules créés à l'état ONLINE doivent utiliser last_location. dans l'appel CreateVehicle.

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é classe pour différencier vos véhicules de VTC selon les niveaux de classe. Vous utiliseriez la méthode Valeurs de chaîne suivantes pour représenter des niveaux de classes de véhicules: ECONOMY, STANDARD et LUXURY.

Cependant, les valeurs d'attributs personnalisés ne doivent pas nécessairement s'exclure mutuellement. Vous pourriez Utilisez des critères comme accepte les animaux, non-fumeurs et peut prendre plus de temps trajets. Chacun de ces éléments peut être un attribut personnalisé distinct utilisant une valeur booléenne valeurs. Ces trois attributs personnalisés peuvent être attribués à un véhicule donné. avec l'attribut personnalisé class défini sur la valeur de chaîne appropriée.

En utilisant les attributs de cette façon, vous pouvez bénéficier d'une grande variété de fonctionnalités utiles à trouver des véhicules pour des trajets ayant des besoins spécifiques. Pour savoir comment pour utiliser des 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 UpdateVehicleAttributes Chaque clé attributes ne peut avoir qu'une seule valeur par clé véhicule. Vous déclarez les attributs de véhicule personnalisés à l'aide de l'attributes dans le masque de champ, puis fournir 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 de attributes du masque de champ donne l'ensemble complet de attributs du véhicule sont à nouveau déclarés pour le véhicule. Cela se traduit par remplacer 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 à nouveau chaque attribut personnalisé que vous souhaitez que le véhicule et conserver. Si vous excluez attributes dans le masque de champ, cette méthode conserve les attributs personnalisés existants pour le véhicule. Si vous utilisez attributes dans le masque de champ, mais sans définir de valeurs, cela revient à supprimer toutes les valeurs du véhicule. Cette méthode accepte une liste spécifique d'attributs pour mise à jour. La requête met à jour ou ajoute uniquement les attributs spécifiés dans le masque de champ. Les attributs préexistants non spécifiés sont conservés non modifiées.

Exemple de mise à jour de champs de véhicule

Cette section explique comment modifier les champs du véhicule avec UpdateVehicleRequest. qui inclut un update_mask pour indiquer les champs à mettre à jour. Consultez le Documentation Protocol Buffers sur les masques de champ.

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

Exemple: Activer le nouveau type de trajet et l'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 du véhicule précédemment, la mise à jour du champ attributes à l'aide de cette approche nécessite que vous indiquiez tous les les attributs personnalisés que vous souhaitez conserver. Par conséquent, l'exemple montre un cash_only valeur écrite pour éviter qu'elle ne soit écrasée lors d'une opération de mise à jour spécifiant le champ attributes.

Pour ne mettre à jour que la valeur d'une paire d'attributs clé-valeur, utilisez 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 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

Étape suivante