वाहन के फ़ील्ड अपडेट करें

इस दस्तावेज़ में, वाहन के उन अहम फ़ील्ड के बारे में बताया गया है जिन्हें वाहन बनाते और मैनेज करते समय अपडेट किया जा सकता है.

  • vehicle_state: इससे यह तय होता है कि नई यात्राओं के लिए वाहन उपलब्ध है या नहीं.
  • vehicle_type: वाहन बनाते समय यह फ़ील्ड भरना ज़रूरी है. इस फ़ील्ड का इस्तेमाल, वाहन के मिलान के लिए फ़िल्टर की शर्त के तौर पर भी किया जा सकता है. इस फ़ील्ड को सेट करने के बारे में ज़्यादा जानने के लिए, वाहन की जानकारी जोड़ना लेख पढ़ें.
  • attributes[]: टाइप VehicleAttribute का एक ऐसा कलेक्शन जिसे शामिल करना ज़रूरी नहीं है. इनका इस्तेमाल करके, कस्टम शर्तें तय करें. इससे वाहनों को खोजने या उनकी लिस्टिंग करते समय, फ़िल्टर करने की सुविधा को बेहतर बनाया जा सकता है.
 

वाहन के फ़ील्ड की पूरी सूची देखने के लिए, यहां जाएं:

वाहन की स्थिति वाला फ़ील्ड

आपका सिस्टम, वाहन की स्थिति को OFFLINE या ONLINE पर सेट कर सकता है. उदाहरण के लिए, वाहन की स्थिति को हर दिन सुबह 9 बजे ONLINE और हर दिन शाम 5 बजे OFFLINE पर सेट किया जा सकता है.

ऑफ़लाइन मोड ऑनलाइन मोड
OFFLINE का इस्तेमाल करके यह बताएं कि वाहन नई यात्राएं स्वीकार नहीं कर रहा है. ध्यान दें कि इस स्थिति में भी वाहन को असाइन की गई यात्राएं पूरी की जा सकती हैं.
  • ONLINE स्थिति में बनाया गया Vehicle, SearchVehicles क्वेरी के जवाब में तुरंत दिखाया जा सकता है. ज़्यादा जानकारी के लिए, वाहन ढूंढना लेख पढ़ें.
  • ONLINE स्थिति में बनाए गए वाहनों के लिए, CreateVehicle कॉल में last_location फ़ील्ड का इस्तेमाल किया जाना चाहिए.

वाहन के एट्रिब्यूट फ़ील्ड

वाहन attributes फ़ील्ड का इस्तेमाल करके, अपनी पसंद के मुताबिक मानदंड बनाएं. इससे आपके खरीदारों या फ्लीट ऑपरेटर को, खोज के अलग-अलग मानदंडों के आधार पर आपकी फ्लीट में मौजूद वाहन ढूंढने में मदद मिलेगी. इससे आपके ऐप्लिकेशन की क्षमताएं बेहतर होती हैं. इससे, वाहन के अन्य फ़ील्ड के आधार पर खोज के मानदंड का इस्तेमाल करने के बजाय, बेहतर तरीके से वाहन मैच किए जा सकते हैं. हर वाहन के लिए ज़्यादा से ज़्यादा 100 एट्रिब्यूट हो सकते हैं. साथ ही, हर एट्रिब्यूट की एक यूनीक कुंजी होनी चाहिए. वैल्यू, स्ट्रिंग, बूलियन या संख्याएं हो सकती हैं.

उदाहरण के लिए, क्लास लेवल के हिसाब से राइडशेयर वाहनों को अलग-अलग दिखाने के लिए, class नाम का कस्टम एट्रिब्यूट तय किया जा सकता है. वाहन की क्लास के लेवल दिखाने के लिए, आपको स्ट्रिंग की इन वैल्यू का इस्तेमाल करना होगा: ECONOMY, STANDARD, और LUXURY.

हालांकि, कस्टम एट्रिब्यूट की वैल्यू यूनीक होना ज़रूरी नहीं है. पालतू जानवरों को साथ ले जाने की अनुमति, धूम्रपान की अनुमति नहीं है, और लंबी यात्राएं करने की अनुमति है जैसे मानदंड इस्तेमाल किए जा सकते हैं. इनमें से हर एक को अलग कस्टम एट्रिब्यूट के तौर पर इस्तेमाल किया जा सकता है. इनमें बूलियन वैल्यू का इस्तेमाल किया जाता है. किसी वाहन को इन तीनों कस्टम एट्रिब्यूट के साथ-साथ, class कस्टम एट्रिब्यूट भी असाइन किया जा सकता है. इसके लिए, सही स्ट्रिंग वैल्यू सेट करनी होगी.

इस तरह एट्रिब्यूट का इस्तेमाल करने से, आपको कई तरह की सुविधाएं मिल सकती हैं. ये सुविधाएं, खास ज़रूरतों के हिसाब से यात्राओं के लिए वाहन ढूंढने में आपकी मदद कर सकती हैं. क्वेरी फ़िल्टर के तौर पर कस्टम एट्रिब्यूट इस्तेमाल करने के तरीके के बारे में जानने के लिए, वाहन खोजें लेख पढ़ें.

वाहन के एट्रिब्यूट अपडेट करना

UpdateVehicle या UpdateVehicleAttributes का इस्तेमाल करके, वाहन के एट्रिब्यूट अपडेट किए जा सकते हैं. हर attributes कुंजी के लिए, हर वाहन के हिसाब से सिर्फ़ एक वैल्यू दी जा सकती है. कस्टम वाहन एट्रिब्यूट के बारे में बताने के लिए, फ़ील्ड मास्क में attributes का इस्तेमाल करें. इसके बाद, यहां दिए गए तरीके के आधार पर वैल्यू दें.

UpdateVehicle UpdateVehicleAttributes
इस एपीआई की मदद से, सिर्फ़ एक एट्रिब्यूट को अपडेट नहीं किया जा सकता. इस तरीके का इस्तेमाल करने पर, फ़ील्ड मास्क में attributes फ़ील्ड का इस्तेमाल करने से, वाहन के एट्रिब्यूट का पूरा सेट वाहन के लिए फिर से तय हो जाता है. इससे, पहले से मौजूद ऐसे सभी एट्रिब्यूट की वैल्यू बदल जाती है जिन्हें फ़ील्ड मास्क में साफ़ तौर पर शामिल नहीं किया गया है. अगर इस तरीके का इस्तेमाल करके नया कस्टम एट्रिब्यूट जोड़ा जाता है, तो आपको हर उस कस्टम एट्रिब्यूट को फिर से जोड़ना होगा जिसे आपको वाहन के लिए बनाए रखना है. अगर फ़ील्ड मास्क में attributes को शामिल नहीं किया जाता है, तो यह तरीका वाहन के लिए पहले से तय किए गए कस्टम एट्रिब्यूट को पहले जैसा ही छोड़ देता है. अगर फ़ील्ड मास्क में attributes का इस्तेमाल किया जाता है, लेकिन वैल्यू सेट नहीं की जाती हैं, तो इसका मतलब है कि वाहन से सभी कस्टम एट्रिब्यूट हटा दिए गए हैं. यह तरीका, अपडेट करने के लिए एट्रिब्यूट की खास सूची को स्वीकार करता है. अनुरोध में, सिर्फ़ फ़ील्ड मास्क में बताए गए एट्रिब्यूट अपडेट किए जाते हैं या जोड़े जाते हैं. पहले से मौजूद जिन एट्रिब्यूट के लिए वैल्यू नहीं दी गई है उनमें कोई बदलाव नहीं किया जाएगा.

वाहन के फ़ील्ड अपडेट करने का उदाहरण

इस सेक्शन में, UpdateVehicleRequest का इस्तेमाल करके वाहन के फ़ील्ड अपडेट करने का तरीका बताया गया है. इसमें यह बताने के लिए update_mask शामिल है कि किन फ़ील्ड को अपडेट करना है. ज़्यादा जानकारी के लिए, Protocol Buffers के दस्तावेज़ में फ़ील्ड मास्क के बारे में पढ़ें.

last_location फ़ील्ड के अलावा अन्य फ़ील्ड में बदलाव करने के लिए, Fleet Engine On-demand Admin के खास अधिकारों की ज़रूरत होती है.

उदाहरण: यात्रा के नए टाइप और कस्टम एट्रिब्यूट को चालू करना

इस उदाहरण में, वाहन के लिए back_to_back यात्राएं चालू की गई हैं. साथ ही, एक नया एट्रिब्यूट class भी तय किया गया है. हमने वाहन के एट्रिब्यूट अपडेट करना लेख में बताया था कि इस तरीके से attributes फ़ील्ड को अपडेट करने के लिए, आपको उन सभी कस्टम एट्रिब्यूट की जानकारी देनी होगी जिन्हें आपको बनाए रखना है. इसलिए, उदाहरण में cash_only वैल्यू को लिखा गया है, ताकि अपडेट ऑपरेशन के दौरान इसे बदला न जा सके. इस अपडेट ऑपरेशन में attributes फ़ील्ड के बारे में बताया गया है.

अगर आपको सिर्फ़ एक की-वैल्यू एट्रिब्यूट पेयर की वैल्यू अपडेट करनी है, तो UpdateVehicleAttributes तरीके का इस्तेमाल करें. साथ ही, UpdateVehicle अनुरोध के लिए फ़ील्ड मास्क में attribute फ़ील्ड को शामिल न करें.

gRPC और REST के लिए, providers.vehicles.update रेफ़रंस देखें.

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

आगे क्या करना है