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

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

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

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

वाहन के स्टेटस का फ़ील्ड

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

ऑफ़लाइन मोड ऑनलाइन मोड
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 शामिल है, ताकि यह बताया जा सके कि किन फ़ील्ड को अपडेट करना है. ज़्यादा जानकारी के लिए, फ़ील्ड मास्क के बारे में प्रोटोकॉल बफ़र का दस्तावेज़ देखें.

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

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

इस उदाहरण में, वाहन के लिए 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

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