Perbarui kolom kendaraan pengiriman

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

  • type: Jenis kendaraan pengiriman ini. Hal ini berdampak rute yang dibuat untuk kendaraan ini.
  • attributes[]: Array opsi DeliveryVehicleAttribute. Gunakan menentukan kriteria khusus untuk kendaraan di servis Anda untuk meningkatkan perilaku penyaringan saat mencari atau membuat daftar kendaraan.
 

Untuk mengetahui daftar lengkap kolom kendaraan, lihat:

Kolom atribut kendaraan

Gunakan kolom attributes kendaraan untuk membuat kriteria yang disesuaikan guna memungkinkan konsumen atau operator armada untuk menemukan kendaraan di armada Anda di tempat yang lebih luas beragam kriteria pencarian. Tindakan ini akan meningkatkan kemampuan aplikasi Anda untuk memberikan kecocokan kendaraan yang lebih baik dibandingkan dengan yang Anda inginkan dari menggunakan kriteria penelusuran hanya berdasarkan kolom kendaraan lainnya. Setiap kendaraan dapat memiliki maksimal 100 dan masing-masing harus memiliki kunci yang unik. Nilai-nilai bisa berupa {i>string<i}, boolean, atau angka.

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

Namun, nilai atribut khusus tidak harus saling eksklusif. Anda mungkin gunakan kriteria seperti available-at-night dan has-refrigeration. Tiap-tiap dapat berupa atribut khusus terpisah yang menggunakan nilai boolean. Kendaraan tertentu dapat diberi ketiga atribut khusus ini beserta atribut zona atribut khusus yang disetel ke nilai string yang sesuai.

Perbarui atribut kendaraan

Setiap kunci attributes hanya dapat memiliki satu nilai per kendaraan. Anda menyatakan atribut kendaraan khusus menggunakan attributes dalam mask kolom, lalu memberikan nilai berdasarkan metode di bawah ini.

UpdateDeliveryVehicle API ini tidak memungkinkan update hanya satu kali . Saat menggunakan metode ini, setiap penggunaan kolom attributes dalam field mask menyebabkan seluruh atribut kendaraan dideklarasikan ulang untuk kendaraan. Hal ini mengakibatkan penimpaan dari atribut yang sudah ada sebelumnya dan secara eksplisit disertakan dalam mask kolom. Jika Anda menggunakan metode ini untuk mendeklarasikan Anda juga harus menyatakan kembali setiap atribut khusus yang Anda inginkan yang harus dipertahankan. Jika Anda mengecualikan attributes dalam mask kolom, meninggalkan atribut khusus yang ada seperti yang ditentukan sebelumnya untuk kendaraan. Jika Anda menggunakan attributes dalam mask kolom, tetapi tanpa menetapkan nilai, itu adalah setara dengan menghapus semua atribut khusus dari kendaraan.

Perbarui contoh kolom kendaraan

Bagian ini menunjukkan cara memperbarui kolom kendaraan menggunakan UpdateDeliveryVehicleRequest, yang menyertakan update_mask untuk menunjukkan {i>field<i} mana yang akan diperbarui. Lihat dokumentasi Buffering Protokol di field mask untuk mengetahui detailnya.

Pembaruan pada kolom selain last_location memerlukan Fleet Engine Delivery Hak istimewa admin.

Contoh: menetapkan atribut khusus

Contoh ini menetapkan atribut baru: zone. Sebagaimana tercantum dalam Perbarui atribut kendaraan lebih awal, dengan memperbarui kolom attributes menggunakan pendekatan ini mengharuskan Anda untuk menunjukkan semua atribut khusus yang ingin dipertahankan. Oleh karena itu, contoh menunjukkan nilai available-at-night yang ditulis untuk mempertahankannya agar tidak ditimpa selama operasi update 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