Araç alanlarını güncelle

Bu dokümanda, araç oluşturup yönetirken güncelleyebileceğiniz önemli araç alanları ele alınmaktadır.

  • vehicle_state: Aracın yeni seyahatler için uygun olup olmadığını belirler.
  • vehicle_type: Araç oluştururken zorunlu alandır. Bu alan, araç eşleştirmeleri için filtre ölçütü olarak da kullanılabilir. Bu alanın ayarlanmasıyla ilgili ayrıntılar için Araç oluşturma bölümüne bakın.
  • attributes[]: VehicleAttribute türüne sahip isteğe bağlı bir dizi. Araç arama veya listeleme sırasında filtreleme davranışını iyileştirmek için özel ölçütler tanımlamak amacıyla bu işlevleri kullanın.
 

Araç alanlarının tam listesi için bkz:

Araç durumu alanı

Sisteminiz, araç durumunu OFFLINE veya ONLINE olarak ayarlayabilir. Örneğin, araç durumunu her gün saat 09:00'da ONLINE ve her gün saat 17:00'de OFFLINE olarak ayarlayabilirsiniz.

ÇEVRİMDIŞI mod ÇEVRİMİÇİ modu
Bir aracın yeni seyahat kabul etmediğini belirtmek için OFFLINE kullanın. Aracın bu durumdayken atanmış gezileri tamamlamaya devam edebileceğini unutmayın.
  • ONLINE durumunda oluşturulan bir Vehicle, SearchVehicles sorgularına yanıt olarak hemen döndürülebilir. Daha fazla bilgi için Araç arama bölümüne bakın.
  • ONLINE durumunda oluşturulan araçlar, CreateVehicle çağrısındaki last_location alanını kullanmalıdır.

Araç özellikleri alanı

Tüketicilerinizin veya filo operatörlerinizin filonuzdaki araçları daha geniş bir arama ölçütü yelpazesinde bulmasını sağlamak için özel ölçütler oluşturmak üzere araç attributes alanını kullanın. Bu sayede, uygulamalarınızın yalnızca diğer araç alanlarına dayalı arama ölçütlerini kullanarak elde edebileceğinizden daha iyi araç eşleşmeleri sunma özellikleri geliştirilir. Her aracın en fazla 100 özelliği olabilir ve her özelliğin benzersiz bir anahtarı olmalıdır. Değerler dize, boole veya sayı olabilir.

Örneğin, araç paylaşma araçlarınızı sınıf düzeylerine göre ayırt etmek için class adlı bir özel özellik tanımlayabilirsiniz. Araç sınıfı seviyelerini temsil etmek için şu dize değerlerini kullanırsınız: ECONOMY, STANDARD ve LUXURY.

Bununla birlikte, özel özellik değerlerinin birbirini dışlamasına gerek yoktur. Evcil hayvana uygun, sigara içilmez ve daha uzun yolculuk yapılabilir gibi ölçütler kullanabilirsiniz. Bunların her biri, boole değerlerini kullanan ayrı bir özel özellik olabilir. Belirli bir araca, bu özel özelliklerin üçü de ve uygun dize değerine ayarlanmış class özel özelliği atanabilir.

Özelliklerin bu şekilde kullanılması, belirli ihtiyaçlara sahip geziler için araç bulmanıza yardımcı olan çok çeşitli özellikler sağlayabilir. Özel özelliklerin sorgu filtreleri olarak nasıl kullanılacağıyla ilgili talimatlar için Araç arama başlıklı makaleyi inceleyin.

Araç özelliklerini güncelleme

Araç özelliklerini UpdateVehicle veya UpdateVehicleAttributes kullanarak güncelleyebilirsiniz. Her attributes anahtarı araç başına yalnızca bir değere sahip olabilir. Özel araç özelliklerini, alan maskesinde attributes kullanarak ve ardından aşağıdaki yönteme göre değerler sağlayarak bildirirsiniz.

UpdateVehicle UpdateVehicleAttributes
Bu API yalnızca tek bir özelliğin güncellenmesine izin vermez. Bu yöntem kullanılırken alan maskesinde attributes alanının kullanılması, araç özellikleri grubunun tamamının araç için yeniden tanımlanmasına neden olur. Bu, alan maskesine açıkça dahil edilmeyen önceden var olan tüm özelliklerin üzerine yazılmasına neden olur. Bu yöntemi yeni bir özel özellik beyan etmek için kullanırsanız aracın saklamasını istediğiniz her özel özelliği de yeniden beyan etmeniz gerekir. Alan maskesinde attributes değerini hariç tutarsanız bu yöntem, mevcut özel özellikleri araç için daha önce tanımlandığı şekilde bırakır. Alan maskesinde attributes değerini kullanır ancak değer ayarlamazsanız bu, tüm özel özelliklerin araçtan kaldırılmasına eşdeğerdir. Bu yöntem, güncellenecek özelliklerin belirli bir listesini kabul eder. İstek yalnızca alan maskesinde belirtilen özellikleri günceller veya ekler. Belirtilmeyen önceden var olan özellikler değiştirilmez.

Araç alanlarını güncelleme örneği

Bu bölümde, hangi alanların güncelleneceğini belirten bir update_mask içeren UpdateVehicleRequest kullanılarak araç alanlarının nasıl güncelleneceği gösterilmektedir. Ayrıntılar için Protocol Buffers'ın alan maskeleri ile ilgili dokümanlarına bakın.

last_location dışındaki alanlarda yapılan güncellemeler için Fleet Engine On-demand Yöneticisi ayrıcalıkları gerekir.

Örnek: yeni gezi türünü ve özel özelliği etkinleştirme

Bu örnekte, araç için back_to_back gezi etkinliği etkinleştirilir ve yeni bir özellik (class) belirtilir. Daha önce Araç özelliklerini güncelleme bölümünde belirtildiği gibi, bu yaklaşımı kullanarak attributes alanını güncellemek için saklamak istediğiniz tüm özel özellikleri belirtmeniz gerekir. Bu nedenle örnekte, attributes alanını belirten bir güncelleme işlemi sırasında bu değerin üzerine yazılmaması için yazılmış bir cash_only değeri gösterilmektedir.

Yalnızca bir anahtar/değer özellik çiftinin değerini güncellemek için bunun yerine UpdateVehicleAttributes yöntemini kullanın ve UpdateVehicle isteği için alan maskesine attribute alanını eklemeyin.

gRPC ve REST için providers.vehicles.update referansına bakın.

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

Sırada ne var?