Teslimat aracı alanlarını güncelle

Bu dokümanda, araç oluşturup yönetirken güncelleyebileceğiniz önemli araç alanları ele alınmaktadır.

  • type: Bu teslimat aracının türü. Bu durum, bu araç için oluşturulan rotaları etkiler.
  • attributes[]: DeliveryVehicleAttribute türüne sahip bir seçenek dizisi. Araç arama veya listeleme sırasında filtreleme davranışını iyileştirmek için hizmetinizdeki araçlarla ilgili özel ölçütler tanımlamak üzere bu ölçütleri kullanın.
 

Araç alanlarının tam listesi için:

Araç özellikleri alanı

Tüketicilerinizin veya filo operatörlerinizin filonuzdaki araçları daha geniş bir arama ölçütü yelpazesinde bulmasını sağlamak için özel ölçütler oluşturmak üzere araç attributes alanını kullanın. Bu sayede, uygulamalarınızın yalnızca diğer araç alanlarına dayalı arama ölçütlerini kullanarak elde edebileceğinizden daha iyi araç eşleşmeleri sunma özellikleri geliştirilir. Her araç en fazla 100 özelliğe sahip olabilir ve her birinin benzersiz bir anahtarı olmalıdır. Değerler dize, boole veya sayı olabilir.

Örneğin, teslimat araçlarınızın şehrin hangi bölgesinde faaliyet gösterdiğini ayırt etmek için zone adlı bir özel özellik tanımlayabilirsiniz. Farklı bölgeleri temsil etmek için aşağıdaki gibi dize değerleri kullanırsınız: 1B, 2C ve 3A. Ardından, filo takibi filtresini kullanarak belirli bir bölgede çalışan araçları yalnızca bu bölgeden sorumlu operatöre gösterebilirsiniz.

Ancak özel özellik değerlerinin birbirini dışlaması gerekmez. gece-kullanılabildiği ve buzdolabı-var gibi ölçütleri kullanabilirsiniz. Bunların her biri, boole değerleri kullanan ayrı bir özel özellik olabilir. Belirli bir araca, uygun dize değerine ayarlanmış bölge özel özelliğiyle birlikte bu özel özelliklerin üçü de atanabilir.

Araç özelliklerini güncelleme

Her attributes anahtarı araç başına yalnızca bir değere sahip olabilir. Özel araç özelliklerini, alan maskesinde attributes kullanarak ve ardından aşağıdaki yönteme göre değerler sağlayarak bildirirsiniz.

Bu UpdateDeliveryVehicle API, yalnızca tek bir özelliğin güncellenmesine izin vermez. Bu yöntem kullanılırken alan maskesinde attributes alanının kullanılması, araç özellikleri grubunun tamamının araç için yeniden tanımlanmasına neden olur. Bu işlem, alan maskesine açıkça dahil edilmeyen önceden var olan özelliklerin üzerine yazılmasına neden olur. Yeni bir özel özellik tanımlamak için bu yöntemi kullanırsanız aracın korumasını istediğiniz her özel özelliği de yeniden tanımlamanız gerekir. Alan maskesinde attributes değerini hariç tutarsanız bu yöntem, mevcut özel özellikleri araç için daha önce tanımlandığı şekilde bırakır. Alan maskesinde attributes değerini kullanır ancak değer ayarlamazsanız bu, tüm özel özelliklerin araçtan kaldırılmasına eşdeğerdir.

Araç alanlarını güncelleme örneği

Bu bölümde, hangi alanların güncelleneceğini belirten bir update_mask içeren UpdateDeliveryVehicleRequest kullanılarak araç alanlarının nasıl güncelleneceği gösterilmektedir. Ayrıntılar için Protocol Buffers'ın alan maskeleri ile ilgili dokümanlarına bakın.

last_location dışındaki alanlarda yapılan güncellemeler için Fleet Engine Delivery Yöneticisi ayrıcalıkları gerekir.

Örnek: set custom attribute

Bu örnekte yeni bir özellik belirtilmiştir: zone. Daha önce Araç özelliklerini güncelleme bölümünde belirtildiği gibi, bu yaklaşımı kullanarak attributes alanını güncellemek için, korumak istediğiniz tüm özel özellikleri belirtmeniz gerekir. Bu nedenle örnekte, attributes alanını belirten bir güncelleme işlemi sırasında üzerine yazılmasını önlemek için yazılmış bir available-at-night değeri gösterilmektedir.

providers.deliveryVehicles.patch referansına bakın.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .addAllAttributes(ImmutableList.of(
          DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
          DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("attributes"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
      "attributes": [
        {"key": "zone", "value": "1B"},
        {"key": "available-at-night", "value": "true"}
      ]
  }
  EOM

Sırada ne var?