Atualizar campos de veículos

Este documento abrange campos importantes do veículo que você pode ao criar e gerenciar veículos.

  • vehicle_state: determina a disponibilidade do veículo para novas viagens.
  • vehicle_type: campo obrigatório ao criar um veículo. O campo também pode servir como um critério de filtro para correspondências de veículos. Consulte Criar um veículo para detalhes sobre como configurar este campo.
  • attributes[]: uma matriz opcional do tipo. VehicleAttribute. Usar a fim de definir critérios personalizados para aprimorar ao pesquisar ou listar veículos.
 

Para conferir uma lista completa dos campos do veículo, consulte:

Campo de estado do veículo

O sistema pode definir o estado do veículo como OFFLINE ou ONLINE. Por exemplo, pode definir o estado do veículo como ONLINE todos os dias às 9h e OFFLINE todos os dias às 17h.

Modo OFF-LINE Modo ON-LINE
Use OFFLINE para indicar que um veículo não está aceitando novas viagens. O veículo ainda pode concluir viagens atribuídas enquanto nesse estado.
  • Um Vehicle criado no estado ONLINE pode ser retornado imediatamente em resposta a consultas SearchVehicles. Consulte Pesquisar veículos. para mais detalhes.
  • Veículos criados no estado ONLINE precisam usar o last_location na chamada de CreateVehicle.

Campo de atributos do veículo

Use o campo attributes do veículo para criar critérios personalizados e ativar consumidores ou operadores de frota para encontrar veículos da sua frota em um diversos critérios de pesquisa. Isso melhora a capacidade dos aplicativos de fornecer melhores correspondências de veículos do que você usaria com critérios de pesquisa com base apenas em outros campos de veículos. Cada veículo pode ter no máximo 100 atributos, e cada um deve ter uma chave exclusiva. Os valores podem ser strings, booleanos ou números.

Por exemplo, você pode declarar um atributo personalizado chamado class para diferenciar seus veículos de transporte por aplicativo nos níveis de classe. Usaria o método seguintes valores de string para representar os níveis de classe do veículo: ECONOMY, STANDARD e LUXURY.

No entanto, os valores de atributos personalizados não precisam ser mutuamente exclusivos. Talvez você use critérios como aceitável para animais de estimação, não fumantes e capacidade de levar mais tempo viagens. Cada um deles pode ser um atributo personalizado separado que usa booleanos e a distribuição dos valores dos dados. Esses três atributos personalizados podem ser atribuídos a um veículo com o atributo personalizado class definido para o valor de string apropriado.

Usar atributos dessa forma pode fornecer uma ampla variedade de recursos úteis para para encontrar veículos para viagens com necessidades específicas. Para instruções sobre como Para usar atributos personalizados como filtros de consulta, consulte Pesquisar veículos.

Atualizar atributos do veículo

Você pode atualizar os atributos do veículo usando UpdateVehicle ou UpdateVehicleAttributes. Cada chave attributes pode ter apenas um valor por veículo. Você declara atributos personalizados do veículo usando o attributes na máscara de campo e, em seguida, fornecer valores com base no método abaixo.

UpdateVehicle UpdateVehicleAttributes
Esta API não permite atualizar apenas um atributo. Ao usar neste método, qualquer uso do método attributes na máscara de campo resulta no conjunto completo de redeclarando os atributos do veículo. Isso resulta em um substituição de qualquer atributo preexistente não incluído explicitamente no máscara de campo. Se você usar esse método para declarar um novo atributo personalizado, você também precisa declarar novamente todos os atributos personalizados que você quer que o veículo reter. Se você excluir o attributes na máscara de campo, esse método deixa os atributos personalizados atuais conforme definido anteriormente para o veículo. Se você usar attributes na máscara de campo, mas sem valores definidos, isso equivale a remover todas as atributos do veículo. Esse método aceita uma lista específica de atributos para atualizar. A solicitação atualiza ou adiciona apenas os atributos especificados na máscara de campo. Os atributos preexistentes não especificados permanecem inalterados.

Exemplo de atualização dos campos do veículo

Esta seção mostra como atualizar os campos do veículo usando UpdateVehicleRequest, que inclui um update_mask para indicar quais campos atualizar. Consulte a Documentação dos Buffers de protocolo sobre máscaras de campo para mais detalhes.

As atualizações em campos diferentes de last_location exigem o Fleet Engine On-demand Privilégios de administrador.

Exemplo: ativar novo tipo de viagem e atributo personalizado

Este exemplo ativa viagens back_to_back para o veículo e também especifica uma novo atributo: class. Como já mencionado em Atualizar atributos do veículo, para atualizar o campo attributes usando essa abordagem, é necessário indicar todos os atributos personalizados que você quer manter. Portanto, o exemplo mostra um cash_only valor gravado para preservá-lo de ser substituído durante uma operação de atualização que especifica o campo attributes.

Para atualizar somente o valor de um par de atributos de chave-valor, use o método método UpdateVehicleAttributes e não inclua o campo attribute na máscara de campo da solicitação UpdateVehicle.

Consulte a referência providers.vehicles.update para gRPC e REST (links em inglês).

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

A seguir