Crea un vehículo de entrega para las tareas programadas

En este documento, se describe cómo crear un vehículo desde un entorno de servidor con gRPC o REST. Puedes crear un vehículo desde el SDK de Driver, siempre que hayas aprovisionado la app como un entorno de confianza con las credenciales adecuadas.

Para comprender cómo usar el SDK de Driver para crear vehículos, consulta lo siguiente:

Para crear un vehículo nuevo desde un entorno de servidor, realiza una solicitud CreateDeliveryVehicle a Fleet Engine. Usa el objeto CreateDeliveryVehicleRequest para definir los atributos del nuevo vehículo de entrega.

Campos para vehículos con tareas programadas

Cuando creas un DeliveryVehicle, configuras los siguientes campos opcionales:

  • attributes
  • last_location
  • type

Para crear un vehículo sin configurar ningún campo opcional, puedes salir de la No se configuró el campo DeliveryVehicle en CreateDeliveryVehicleRequest.

Ejemplo de creación de vehículos

Puedes usar la biblioteca gRPC de Java para crear un vehículo o REST.

Java

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890"; // Avoid auto-incrementing IDs.

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String parent = "providers/" + PROJECT_ID;
  DeliveryVehicle vehicle = DeliveryVehicle.newBuilder()
    .addAttributes(DeliveryVehicleAttribute.newBuilder()
      .setKey("route_number").setValue("1"))  // Opaque to the Fleet Engine
    .build();

  // Vehicle request
  CreateDeliveryVehicleRequest createVehicleRequest =
    CreateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setParent(parent)
        .setDeliveryVehicleId(VEHICLE_ID)     // Vehicle ID assigned by the Provider
        .setDeliveryVehicle(vehicle)
        .build();

  // Error handling
  // If Fleet Engine does not have vehicle with that ID and the credentials of the
  // requestor pass, the service creates the vehicle successfully.

  try {
    DeliveryVehicle createdVehicle =
      deliveryService.createDeliveryVehicle(createVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case ALREADY_EXISTS:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

Para crear un vehículo desde un entorno de servidor, realiza una llamada HTTP REST a CreateDeliveryVehicle:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/deliveryVehicles?deliveryVehicleId=<id>

El cuerpo de POST representa la entidad DeliveryVehicle que se creará. Puedes especifica los siguientes campos opcionales:

  • attributes
  • lastLocation
  • type
  # Set $JWT, $PROJECT_ID, and $VEHICLE_ID in the local
  # environment
  curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles?deliveryVehicleId=${VEHICLE_ID}" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
  {
    "attributes": [{"key": "model", "value": "sedan"}],
    "lastLocation": {"location": {"latitude": 12.1, "longitude": 14.5}}
  }
  EOM

Para crear un vehículo sin configurar ningún campo, deja el cuerpo de la solicitud POST vacío. Luego, el vehículo recién creado extrae un ID de vehículo del parámetro deliveryVehicleId en la URL POST.

Ejemplo:

  # Set $JWT, $PROJECT_ID, and $VEHICLE_ID in the local
  # environment
  curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles?deliveryVehicleId=${VEHICLE_ID}" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}"

¿Qué sigue?