Araç alanlarını güncelle

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

  • vehicle_state: Aracın yeni geziler için kullanılabilirliğini belirler.
  • vehicle_type: Araç oluştururken zorunlu alan. Bu alan, araç eşleşmeleri için filtre ölçütü olarak da kullanılabilir. Bu alanı ayarlamayla ilgili ayrıntılar için Araç oluşturma bölümüne bakın.
  • attributes[]: VehicleAttribute türünde isteğe bağlı bir dizi. Araçları ararken veya listelerken filtreleme davranışını iyileştirmek için özel ölçütler tanımlamak amacıyla bu özellikleri kullanın.
 

Araç alanlarının tam listesi için şu sayfaları inceleyin:

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 modu ONLINE modu
Bir aracın yeni seyahatleri kabul etmediğini belirtmek için OFFLINE kullanın. Araç bu durumdayken atanmış gezileri tamamlayabilir.
  • 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 eyaletinde oluşturulan araçlar, CreateVehicle çağrısında 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 bulabilmesi için özelleştirilmiş ölçütler oluşturmak üzere araç attributes alanını kullanın. Bu sayede, yalnızca diğer araç alanlarına dayalı arama ölçütlerini kullanarak elde edeceğinizden daha iyi araç eşleşmeleri sunmak için uygulamalarınızın özelliklerini geliştirebilirsiniz. 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şımı 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.

Ancak özel özellik değerlerinin karşılıklı olarak birbirini dışlaması gerekmez. Evcil hayvan kabul eden, sigara içilmeyen ve daha uzun yolculuklar yapabilen gibi ölçütler kullanabilirsiniz. Bunların her biri, Boole değerleri kullanan ayrı bir özel özellik olabilir. Belirli bir araca, class özel özelliği uygun dize değerine ayarlanmış şekilde bu üç özel özelliğin tümü atanabilir.

Özellikleri bu şekilde kullanmak, belirli ihtiyaçları olan geziler için araç bulmanıza yardımcı olacak çok çeşitli özellikler sunabilir. Özel özellikleri sorgu filtresi olarak kullanma 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ının araç başına yalnızca bir değeri 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ıldığında, alan maskesinde attributes alanının kullanılması, araç özelliklerinin tamamının araç için yeniden tanımlanmasına neden olur. Bu işlem, alan maskesine açıkça dahil edilmeyen önceden mevcut tüm özelliklerin üzerine yazılmasına neden olur. Yeni bir özel özellik bildirmek için bu yöntemi kullanırsanız aracın korumasını istediğiniz her özel özelliği de yeniden bildirmeniz gerekir. Alan maskesinde attributes hariç tutulursa bu yöntem, mevcut özel özellikleri araç için daha önce tanımlandığı şekilde bırakır. Alan maskesinde attributes kullanır ancak değerleri ayarlamazsanız bu, araçtan tüm özel özellikleri kaldırmakla 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 mevcut özellikler değiştirilmeden kalır.

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

Bu bölümde, güncellemek istediğiniz alanları belirtmek için update_mask içeren UpdateVehicleRequest kullanarak araç alanlarını nasıl güncelleyeceğiniz açıklanmaktadır. Ayrıntılar için alan maskeleri ile ilgili protokol arabellekleri belgelerine bakın.

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

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

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

Yalnızca bir anahtar/değer özelliği çiftinin değerini güncellemek için UpdateVehicleAttributes yöntemini kullanın ve UpdateVehicle isteğinin alan maskesine attribute alanını dahil etmeyin.

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?