Dokumen ini mencakup kolom kendaraan penting yang dapat Anda saat membuat dan mengelola 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
yang 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 mendeklarasikan ulang 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