Araç alanlarını güncelle

Araç istekleri başlığı altındaki koşulları okuyun.

Bu belgede, araç oluşturma ve yönetme sırasında güncelleyebileceğiniz önemli araç alanları ele alınmaktadır.

  • vehicle_state: Aracın yeni yolculuklar için kullanılabilirliğini belirler.
  • vehicle_type: Araç oluştururken zorunlu alandır. Bu alan, araç eşleşmeleri için filtre ölçütü olarak da kullanılabilir. Bu alanı ayarlama hakkında ayrıntılı bilgi için Araç oluşturma başlıklı makaleyi inceleyin.
  • attributes[]: İsteğe bağlı bir tür dizisidir VehicleAttribute. Araç ararken veya listelerken filtreleme davranışını iyileştirmek için özel ölçütler tanımlamak üzere bunları kullanın.
 

Araç alanlarının tam listesi için aşağıdaki kaynaklara bakın:

Araç durumu alanı

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

ÇEVRİMDIŞI modu ONLINE modu
Bir aracın yeni yolculuk kabul etmediğini belirtmek için OFFLINE simgesini 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 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 bulmasını sağlamak için özelleştirilmiş ölçütler oluşturmak üzere araç attributes alanını kullanın. Bu, uygulamalarınızın yalnızca diğer araç alanlarına dayalı arama ölçütlerini kullanarak elde edeceğinizden daha iyi araç eşleşmeleri sağlamak için özelliklerini geliştirir. Her araçta en fazla 100 özellik olabilir ve her birinin 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 bildirebilirsiniz. Araç sınıfı seviyelerini belirtmek 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 dostu, sigara içilmeyen ve daha uzun yolculuklara çıkmaya uygun gibi ölçütler kullanabilirsiniz. Bunların her biri, Boole değerleri kullanan ayrı bir özel özellik olabilir. Belirli bir araca, uygun dize değerine ayarlanmış sınıf özel özelliğiyle birlikte bu üç özel özellik de atanabilir.

Özellikleri bu şekilde kullanmak, belirli ihtiyaçlara yönelik geziler için araç bulmanıza yardımcı olacak çeşitli özellikler sunabilir. Özel özellikleri sorgu filtresi olarak kullanmayla 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. Alan maskesinde attributes kullanarak özel araç özelliklerini tanımlar, ardından aşağıdaki yönteme göre değerler sağlarsınız.

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

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

Bu bölümde, UpdateVehicleRequest kullanılarak araç alanlarının nasıl güncelleneceği gösterilmektedir. Güncellenecek alanları belirtmek için update_mask kullanılır. Ayrıntılar için alan maskeleri ile ilgili Protocol Buffers 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 örnek, araç için back_to_back yolculuklarını etkinleştirir ve yeni bir özellik de belirtir: 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ılmış bir cash_only değeri gösterilmektedir.

Yalnızca bir anahtar/değer özellik çiftinin değerini güncellemek için 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?