Dokumen ini membahas kolom kendaraan penting yang dapat Anda perbarui saat membuat dan mengelola 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 di armada Anda dengan berbagai kriteria penelusuran yang lebih luas. Hal ini meningkatkan kemampuan aplikasi Anda untuk memberikan kecocokan kendaraan yang lebih baik daripada yang akan Anda dapatkan dari penggunaan kriteria penelusuran hanya berdasarkan 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 merepresentasikan 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 khusus tidak harus saling eksklusif. Anda dapat menggunakan kriteria seperti available-at-night dan has-refrigeration. Setiap opsi ini dapat menjadi atribut kustom terpisah yang menggunakan nilai boolean. Kendaraan tertentu dapat diberi ketiga atribut kustom ini bersama dengan atribut kustom zona 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.
API UpdateDeliveryVehicle
ini tidak mengizinkan pembaruan hanya satu
atribut. Saat menggunakan metode ini, setiap penggunaan kolom attributes
di
masker kolom akan menyebabkan seluruh set atribut kendaraan dideklarasikan ulang
untuk kendaraan. Hal ini akan mengakibatkan penimpaan atribut yang sudah ada sebelumnya yang tidak
secara eksplisit disertakan dalam mask kolom. Jika Anda menggunakan metode ini untuk mendeklarasikan atribut kustom
baru, Anda juga harus mendeklarasikan ulang setiap atribut kustom yang ingin
dipertahankan kendaraan. Jika Anda mengecualikan attributes
dalam mask kolom, metode ini akan membiarkan atribut kustom yang ada seperti yang ditentukan sebelumnya untuk kendaraan.
Jika Anda menggunakan attributes
di mask kolom, tetapi tanpa menetapkan nilai, hal itu setara dengan menghapus semua atribut kustom dari kendaraan.
Contoh memperbarui kolom kendaraan
Bagian ini menunjukkan cara memperbarui kolom kendaraan menggunakan
UpdateDeliveryVehicleRequest
, yang mencakup update_mask
untuk menunjukkan
kolom mana yang akan diperbarui. Lihat dokumentasi Buffering Protokol tentang
mask kolom untuk mengetahui detailnya.
Perubahan pada kolom selain last_location
memerlukan hak istimewa Admin Pengiriman Fleet Engine.
Contoh: setel atribut kustom
Contoh ini menentukan atribut baru: zone
. Seperti yang disebutkan dalam
Memperbarui atribut kendaraan sebelumnya, memperbarui kolom attributes
menggunakan
pendekatan ini mengharuskan Anda menunjukkan semua atribut kustom yang ingin dipertahankan.
Oleh karena itu, contoh ini menunjukkan nilai available-at-night
yang ditulis untuk mencegahnya
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