Teslimat aracı alanlarını güncelle

Bu dokümanda, kampanyalarınızda kullanabileceğiniz önemli araç alanları araç oluştururken ve yönetirken güncelleme yapar.

  • type: Bu teslimat aracının türü. Bu durum, rota oluşturuldu.
  • attributes[]: Şu türde bir seçenek dizisi DeliveryVehicleAttribute Tekliflerinizi otomatikleştirmek ve optimize etmek için hizmetinizdeki araçlar için özel ölçütler tanımlamak amacıyla (araç ararken veya listelerken) filtreleme davranışı.
 

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

Araç özellikleri alanı

Araç attributes alanını kullanarak tüketiciler veya filo operatörlerinin filonuzda bulunan araçları daha geniş bir yardımcı olabilir. 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çta en fazla 100 özellikleri olmalı ve her birinin benzersiz bir anahtarı olmalıdır. Değerler dize, boole veya sayı olabilir.

Örneğin, zone adlı özel bir özellik tanımlayarak Teslimat aracınızın şehrin hangi bölgesinde çalıştığını belirleyin. 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 İzleme'de yalnızca şunun için filtre kullanarak o bölgeden sorumlu operatöre belirli bir bölgede çalışan araçlar.

Bununla birlikte, özel özellik değerlerinin birbirini dışlamasına gerek yoktur. gece-kullanılabildiği ve buzdolabı-var gibi ölçütler kullanabilirsiniz. Bunların her biri boole değerlerini kullanan ayrı bir özel özellik olabilir. Belirli bir araç alt bölge ile birlikte bu özel özelliklerin üçü de atanabilir özel özellik, uygun dize değerine ayarlanmış olmalıdır.

Araç özelliklerini güncelleyin

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 attributes alanının alan maskesi, araç özelliklerinin tamamının yeniden bildirilmesine neden olur. araçtan bahsediyoruz. Bu işlem, alan maskesine açıkça dahil edilmeyen önceden var olan özelliklerin üzerine yazılmasına neden olur. Bu yöntemi kullanarak yeni bir özel özellik olarak kullanmak istiyorsanız, kolay bir yöntem olacaktır. Alan maskesinde attributes öğesini hariç tutarsanız yönteminde mevcut özel özellikler araç için önceden tanımlanmış olduğu gibi bırakılı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, UpdateDeliveryVehicleRequest (Bu, belirten bir update_mask içerir) hangi alanların güncelleneceği. 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: özel özellik ayarlama

Bu örnekte yeni bir özellik belirtilmektedir: 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 göz atı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?