Perbarui kolom kendaraan pengiriman

Dokumen ini membahas kolom kendaraan penting yang dapat Anda perbarui saat membuat dan mengelola kendaraan.

  • type: Jenis kendaraan pengiriman ini. Hal ini memengaruhi rute yang dibuat untuk kendaraan ini.
  • attributes[]: Array opsi berjenis DeliveryVehicleAttribute. Gunakan array ini untuk menentukan kriteria kustom bagi kendaraan dalam layanan Anda guna meningkatkan perilaku pemfilteran saat menelusuri atau mencantumkan kendaraan.
 

Untuk mengetahui daftar lengkap kolom kendaraan, lihat:

Kolom atribut kendaraan

Gunakan kolom attributes kendaraan untuk membuat kriteria yang disesuaikan agar konsumen atau operator armada dapat menemukan kendaraan dalam armada Anda di berbagai kriteria penelusuran yang lebih luas. Hal ini meningkatkan kemampuan aplikasi Anda untuk memberikan kecocokan kendaraan yang lebih baik daripada yang Anda dapatkan dari penggunaan kriteria penelusuran yang hanya didasarkan pada kolom kendaraan lainnya. Setiap kendaraan dapat memiliki maksimal 100 atribut, dan setiap atribut harus memiliki kunci unik. Nilai dapat berupa string, boolean, atau angka.

Misalnya, Anda dapat mendeklarasikan atribut kustom yang disebut zone untuk membedakan zona kota tempat kendaraan pengiriman Anda beroperasi. Anda akan menggunakan nilai string seperti berikut untuk mewakili zona yang berbeda: 1B, 2C, dan 3A. Kemudian, Anda dapat menggunakan filter di Pelacakan Armada untuk hanya menampilkan kendaraan yang beroperasi di zona tertentu kepada operator yang bertanggung jawab atas zona tersebut.

Namun, nilai atribut kustom tidak harus saling eksklusif. Anda dapat menggunakan kriteria seperti available-at-night dan has-refrigeration. Setiap kriteria ini dapat menjadi atribut kustom terpisah yang menggunakan nilai boolean. Kendaraan tertentu dapat ditetapkan ke ketiga atribut kustom ini bersama dengan atribut kustom zone yang ditetapkan ke nilai string yang sesuai.

Memperbarui atribut kendaraan

Setiap kunci attributes hanya dapat memiliki satu nilai per kendaraan. Anda mendeklarasikan atribut kendaraan kustom menggunakan attributes di mask kolom, lalu memberikan nilai berdasarkan metode di bawah.

UpdateDeliveryVehicle API ini tidak mengizinkan pembaruan hanya satu atribut. Saat menggunakan metode ini, penggunaan kolom attributes di mask kolom akan menyebabkan seluruh kumpulan atribut kendaraan dideklarasikan ulang untuk kendaraan tersebut. Hal ini akan menimpa atribut yang sudah ada dan tidak disertakan secara eksplisit dalam mask kolom. Jika Anda menggunakan metode ini untuk mendeklarasikan atribut kustom baru, Anda juga harus mendeklarasikan ulang setiap atribut kustom yang ingin dipertahankan oleh kendaraan tersebut. Jika Anda mengecualikan attributes di mask kolom, metode ini akan mempertahankan atribut kustom yang ada seperti yang sebelumnya ditentukan untuk kendaraan tersebut. Jika Anda menggunakan attributes di mask kolom, tetapi tanpa menetapkan nilai, hal ini setara dengan menghapus semua atribut kustom dari kendaraan tersebut.

Contoh memperbarui kolom kendaraan

Bagian ini menunjukkan cara memperbarui kolom kendaraan menggunakan UpdateDeliveryVehicleRequest, yang mencakup update_mask untuk menunjukkan kolom yang akan diperbarui. Lihat dokumentasi Protocol Buffers tentang mask kolom untuk mengetahui detailnya.

Pembaruan pada kolom selain last_location memerlukan hak istimewa Admin Pengiriman Fleet Engine.

Contoh: menetapkan atribut kustom

Contoh ini menentukan atribut baru: zone. Seperti yang disebutkan di Memperbarui atribut kendaraan sebelumnya, memperbarui kolom attributes menggunakan pendekatan ini mengharuskan Anda untuk menunjukkan semua atribut kustom yang ingin dipertahankan. Oleh karena itu, contoh ini menunjukkan nilai available-at-night yang ditulis untuk mencegahnya ditimpa selama operasi pembaruan yang menentukan kolom attributes.

Lihat referensi providers.deliveryVehicles.patch.

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

Langkah berikutnya