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

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

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

अनुरोधों को अस्वीकार कर देता है.

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

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