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, 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 ve araç arama veya listeleme sırasında filtreleme davranışını iyileştirmek için 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 ö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 kullanarak 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ğerlerini kullanırsınız: 1B, 2C ve 3A. Daha sonra, belirli bir bölgede çalışan araçları yalnızca o bölgeden sorumlu operatöre göstermek için Filo Takibi'nde filtre kullanabilirsiniz.

Ancak özel özellik değerlerinin karşılıklı olarak birbirini dışlaması gerekmez. available-at-night ve has-refrigeration 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 özellik de 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 bildirmek için bu yöntemi kullanırsanız aracın saklamasını istediğiniz her özel özelliği de yeniden bildirmeniz 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, araçtan tüm özel özelliklerin kaldırılmasına 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 özellik 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üncellerken korumak istediğiniz tüm özel özellikleri belirtmeniz gerekir. Bu nedenle, örnekte attributes alanı belirtilen bir güncelleme işlemi sırasında üzerine yazılmasını önlemek için available-at-night değeri yazılmıştır.

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?