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

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

  • 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.

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

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

वाहन की विशेषताएं अपडेट करना

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

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