Teslimat aracı alanlarını güncelle

Araç istekleri başlığı altındaki koşulları okuyun.

Bu belgede, araç oluşturma ve yönetme sırasında 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ünde bir seçenek dizisi. Bunları, hizmetinizdeki araçlar için özel ölçütler tanımlamak üzere kullanarak araç arama veya listeleme sırasında filtreleme davranışını iyileştirebilirsiniz.
 

Araç alanlarının tam listesi için şunlara bakın:

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 özelleştirilmiş ölçütler oluşturmak üzere araç attributes alanını kullanın. Bu, uygulamalarınızın yalnızca diğer araç alanlarına dayalı arama ölçütlerini kullanmaktan elde edeceğinizden daha iyi araç eşleşmeleri sağlamak için yeteneklerini geliştirir. Her araçta en fazla 100 özellik 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 çalıştığını ayırt etmek için bölge adlı bir özel özellik bildirebilirsiniz. Farklı bölgeleri temsil etmek için aşağıdaki gibi dize değerleri kullanırsınız: 1B, 2C ve 3A. Daha sonra, Filo Takibi'nde bir filtre kullanarak yalnızca belirli bir bölgede çalışan araçları o bölgeden sorumlu operatöre gösterebilirsiniz.

Ancak özel özellik değerleri karşılıklı olarak birbirini dışlamak zorunda değildir. available-at-night ve has-refrigeration gibi ölçütler 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 özelliğin tamamı atanabilir.

Araç özelliklerini güncelleme

Her attributes anahtarının araç başına yalnızca bir değeri olabilir. Alan maskesinde attributes kullanarak özel araç özelliklerini beyan edersiniz ve ardından aşağıdaki yönteme göre değerler sağlarsınız.

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 herhangi bir kullanımı, araç özelliklerinin tamamının araç için yeniden bildirilmesine neden olur. Bu işlem, alan maskesine açıkça dahil edilmemiş önceden var olan tüm özelliklerin üzerine yazılmasına neden olur. Yeni bir özel özelliği tanımlamak için bu yöntemi kullanırsanız aracın tutmasını istediğiniz her özel özelliği de yeniden tanımlamanız gerekir. Alan maskesinde attributes karakterini hariç tutarsanız bu yöntem, mevcut özel özellikleri araç için daha önce tanımlandığı şekilde bırakır. Alan maskesinde attributes kullanırsanız ancak değerleri ayarlamazsanız bu, tüm özel özellikleri araçtan kaldırmaya eşdeğerdir.

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

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

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

Örnek: Özel özelliği ayarlama

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

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?