Perbarui kolom kendaraan

Dokumen ini membahas kolom kendaraan penting yang dapat Anda perbarui 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 opsional berjenis VehicleAttribute. Gunakan parameter ini untuk menentukan kriteria kustom guna meningkatkan perilaku pemfilteran saat menelusuri atau mencantumkan kendaraan.
 

Untuk mengetahui daftar lengkap kolom kendaraan, lihat:

Kolom status kendaraan

Sistem Anda dapat menyetel status kendaraan menjadi OFFLINE atau ONLINE. Misalnya, Anda dapat menyetel 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 dalam status ini.
  • Vehicle yang dibuat dalam status ONLINE dapat langsung ditampilkan sebagai respons terhadap kueri SearchVehicles. Lihat Menelusuri kendaraan untuk mengetahui detail selengkapnya.
  • Kendaraan yang dibuat dalam status ONLINE harus menggunakan kolom last_location dalam panggilan CreateVehicle.

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 class untuk membedakan kendaraan layanan transportasi online Anda di berbagai tingkat kelas. Anda akan menggunakan nilai string berikut untuk merepresentasikan tingkat kelas kendaraan: ECONOMY, STANDARD, dan LUXURY.

Namun, nilai atribut khusus tidak harus saling eksklusif. Anda dapat menggunakan kriteria seperti ramah hewan peliharaan, non-smoking, dan dapat melakukan perjalanan yang lebih jauh. Setiap opsi ini dapat berupa atribut kustom terpisah yang menggunakan nilai boolean. Kendaraan tertentu dapat diberi ketiga atribut kustom ini bersama dengan atribut kustom class yang ditetapkan ke nilai string yang sesuai.

Dengan menggunakan atribut seperti ini, Anda dapat memperoleh berbagai fitur yang berguna untuk menemukan kendaraan bagi perjalanan dengan kebutuhan tertentu. Untuk mengetahui petunjuk tentang cara menggunakan atribut kustom sebagai filter kueri, lihat Menelusuri kendaraan.

Memperbarui 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 kustom menggunakan attributes di mask kolom, lalu memberikan nilai berdasarkan metode di bawah.

UpdateVehicle UpdateVehicleAttributes
API ini tidak mengizinkan pembaruan hanya satu atribut. Saat menggunakan metode ini, setiap penggunaan kolom attributes dalam mask kolom akan menyebabkan seluruh set atribut kendaraan dideklarasikan ulang untuk kendaraan tersebut. Hal ini akan menimpa atribut yang sudah ada sebelumnya yang 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 kendaraan. Jika Anda mengecualikan attributes dalam mask kolom, maka 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 ini sama dengan menghapus semua atribut kustom dari kendaraan. Metode ini menerima daftar spesifik atribut yang akan diperbarui. Permintaan hanya memperbarui atau menambahkan atribut yang ditentukan dalam mask kolom. Atribut yang sudah ada dan tidak ditentukan akan tetap tidak berubah.

Contoh memperbarui kolom kendaraan

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

Perubahan pada kolom selain last_location memerlukan hak istimewa Admin Fleet Engine On-demand.

Contoh: mengaktifkan jenis perjalanan baru dan atribut kustom

Contoh ini mengaktifkan 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 menunjukkan semua atribut kustom yang ingin dipertahankan. Oleh karena itu, contoh menunjukkan nilai cash_only yang ditulis untuk mencegahnya ditimpa selama operasi pembaruan yang menentukan kolom attributes.

Untuk memperbarui hanya nilai satu pasangan atribut nilai kunci, gunakan metode UpdateVehicleAttributes sebagai gantinya dan jangan sertakan kolom attribute dalam 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