Perbarui kolom kendaraan

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

  • vehicle_state: Menentukan ketersediaan kendaraan untuk perjalanan baru.
  • vehicle_type: Kolom wajib diisi saat membuat kendaraan. Kolom ini juga dapat berfungsi sebagai kriteria filter untuk kecocokan kendaraan. Lihat Membuat kendaraan untuk mengetahui detail tentang cara menyetel kolom ini.
  • attributes[]: Array jenis opsional VehicleAttribute. Gunakan mereka untuk menentukan kriteria khusus untuk meningkatkan perilaku penyaringan saat mencari atau membuat daftar kendaraan.
 

Untuk mengetahui daftar lengkap kolom kendaraan, lihat:

Kolom status kendaraan

Sistem Anda dapat menyetel status kendaraan ke OFFLINE atau ONLINE. Sebagai contoh, Anda mungkin menetapkan status kendaraan ke ONLINE setiap hari pada pukul 09.00 dan OFFLINE setiap hari pada pukul 17.00.

Mode OFFLINE Mode ONLINE
Gunakan OFFLINE untuk menunjukkan bahwa kendaraan tidak menerima perjalanan baru. Perhatikan bahwa kendaraan masih dapat menyelesaikan perjalanan yang ditetapkan saat status ini.
  • Vehicle yang dibuat dalam status ONLINE dapat segera ditampilkan di respons terhadap kueri SearchVehicles. Lihat Menelusuri kendaraan untuk selengkapnya spesifikasi pendukung.
  • Kendaraan yang dibuat di negara bagian ONLINE harus menggunakan last_location dalam panggilan CreateVehicle.

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 class untuk membedakan kendaraan {i>rideshare<i} Anda di berbagai tingkat kelas. Anda akan menggunakan nilai string berikut untuk mewakili tingkat kelas kendaraan: ECONOMY, STANDARD, dan LUXURY.

Namun, nilai atribut khusus tidak harus saling eksklusif. Anda mungkin menggunakan kriteria seperti cocok untuk hewan peliharaan, tidak merokok, dan dapat menghabiskan waktu lebih lama perjalanan. Masing-masing dapat menjadi atribut khusus terpisah yang menggunakan boolean masing-masing. Kendaraan tertentu dapat diberi ketiga atribut khusus ini bersama dengan atribut khusus class yang disetel ke nilai string yang sesuai.

Menggunakan atribut dengan cara ini dapat memberi Anda berbagai macam fitur yang berguna untuk mencari kendaraan untuk perjalanan dengan kebutuhan tertentu. Untuk mendapatkan petunjuk cara Untuk menggunakan atribut khusus sebagai filter kueri, lihat artikel Menelusuri kendaraan.

Perbarui atribut kendaraan

Anda dapat memperbarui atribut kendaraan menggunakan UpdateVehicle atau UpdateVehicleAttributes. Setiap kunci attributes hanya dapat memiliki satu nilai per kendaraan. Anda mendeklarasikan atribut kendaraan khusus menggunakan attributes pada mask kolom, lalu memberikan nilai berdasarkan metode di bawah ini.

UpdateVehicle UpdateVehicleAttributes
API ini tidak mengizinkan update satu atribut saja. Saat menggunakan metode ini, setiap penggunaan attributes di mask kolom menghasilkan seluruh set atribut kendaraan yang dideklarasikan ulang untuk kendaraan tersebut. Hal ini menghasilkan menimpa atribut yang sudah ada sebelumnya dan tidak disertakan secara eksplisit dalam mask kolom. Jika Anda menggunakan metode ini untuk mendeklarasikan atribut khusus baru, Anda juga harus mendeklarasikan ulang setiap atribut khusus yang Anda inginkan untuk kendaraan dipertahankan. Jika Anda mengecualikan attributes dalam mask kolom, metode ini membiarkan atribut khusus yang ada seperti yang ditentukan sebelumnya untuk kendaraan. Jika Anda menggunakan attributes dalam mask kolom, tetapi tanpa menetapkan nilai, itu sama dengan menghapus semua dari kendaraan. Metode ini menerima daftar atribut tertentu untuk memperbarui. Permintaan tersebut memperbarui atau menambahkan hanya atribut yang telah ditentukan di mask kolom. Atribut yang sudah ada sebelumnya dan tidak ditentukan tetap tidak diubah.

Perbarui contoh kolom kendaraan

Bagian ini menunjukkan cara memperbarui kolom kendaraan menggunakan UpdateVehicleRequest, yang menyertakan update_mask untuk menunjukkan kolom yang akan diperbarui. Lihat Dokumentasi Buffering Protokol tentang mask kolom untuk mengetahui detailnya.

Pembaruan pada kolom selain last_location memerlukan Fleet Engine On-demand Hak istimewa admin.

Contoh: aktifkan jenis perjalanan dan atribut khusus baru

Contoh ini memungkinkan perjalanan back_to_back untuk kendaraan dan juga menentukan atribut baru: class. Seperti yang disebutkan dalam Memperbarui atribut kendaraan sebelumnya, memperbarui kolom attributes menggunakan pendekatan ini mengharuskan Anda untuk menunjukkan semua atribut khusus yang ingin Anda pertahankan. Oleh karena itu, contoh ini menunjukkan cash_only yang ditulis agar tidak ditimpa selama operasi update yang menentukan kolom attributes.

Untuk memperbarui nilai dari satu pasangan atribut nilai kunci saja, gunakan metode Metode UpdateVehicleAttributes sebagai gantinya dan tidak menyertakan kolom attribute di mask kolom untuk permintaan UpdateVehicle.

Lihat referensi providers.vehicles.update untuk gRPC dan REST.

gRPC

static final String PROJECT_ID = "project-id";
static final String VEHICLE_ID = "vid-8241890";

VehicleServiceBlockingStub vehicleService = VehicleService.newBlockingStub(channel);

String vehicleName = "providers/" + PROJECT_ID + "/vehicles/" + VEHICLE_ID;
Vehicle updatedVehicle = Vehicle.newBuilder()
    .setVehicleState(VehicleState.ONLINE)
    .addAllAttributes(ImmutableList.of(
        VehicleAttribute.newBuilder().setKey("class").setValue("ECONOMY").build(),
        VehicleAttribute.newBuilder().setKey("cash_only").setValue("false").build()))
    .setBackToBackEnabled(true)
    .build();

UpdateVehicleRequest updateVehicleRequest = UpdateVehicleRequest.newBuilder()
    .setName(vehicleName)
    .setVehicle(updatedVehicle)
    .setUpdateMask(FieldMask.newBuilder()
        .addPaths("vehicle_state")
        .addPaths("attributes")
        .addPaths("back_to_back_enabled"))
    .build();

try {
  Vehicle updatedVehicle =
      vehicleService.updateVehicle(updateVehicleRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
    case NOT_FOUND:
      // Most implementations will call CreateVehicle in this case
      break;
    case PERMISSION_DENIED:
      break;
  }
  return;
}
// If no Exception, Vehicle updated successfully.

REST

curl -X PUT \
  "https://fleetengine.googleapis.com/v1/providers/project-id/vehicles/vid-8241890?updateMask=vehicle_state,attributes,back_to_back_enabled" \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  --data-binary @- << EOM
{
    "vehicleState": "ONLINE",
    "attributes": [
      {"key": "class", "value": "LUXURY"},
      {"key": "cash_only", "value": "false"}
    ],
    "backToBackEnabled": true
}
EOM

Langkah berikutnya