গাড়ির ক্ষেত্র আপডেট করুন

এই নথিতে গাড়ির গুরুত্বপূর্ণ ক্ষেত্রগুলো সম্পর্কে আলোচনা করা হয়েছে, যা আপনি গাড়ি তৈরি ও পরিচালনা করার সময় আপডেট করতে পারেন।

  • vehicle_state : নতুন ট্রিপের জন্য গাড়িটির প্রাপ্যতা নির্ধারণ করে।
  • vehicle_type : যানবাহন তৈরি করার সময় এটি একটি আবশ্যক ক্ষেত্র। এই ক্ষেত্রটি যানবাহন মেলানোর জন্য ফিল্টার মানদণ্ড হিসেবেও কাজ করতে পারে। এই ক্ষেত্রটি কীভাবে সেট করতে হয় সে সম্পর্কে বিস্তারিত জানতে 'একটি যানবাহন তৈরি করুন' দেখুন।
  • attributes[] : VehicleAttribute টাইপের একটি ঐচ্ছিক অ্যারে। যানবাহন অনুসন্ধান বা তালিকাভুক্ত করার সময় ফিল্টারিং আচরণ উন্নত করতে নিজস্ব মানদণ্ড নির্ধারণ করার জন্য এগুলি ব্যবহার করুন।

যানবাহনের ক্ষেত্রগুলির সম্পূর্ণ তালিকার জন্য দেখুন:

যানবাহনের অবস্থা ক্ষেত্র

আপনার সিস্টেম গাড়ির অবস্থা OFFLINE বা ONLINE হিসেবে সেট করতে পারে। উদাহরণস্বরূপ, আপনি প্রতিদিন সকাল ৯টায় গাড়ির অবস্থা ONLINE এবং প্রতিদিন বিকাল ৫টায় OFFLINE সেট করতে পারেন।

অফলাইন মোড অনলাইন মোড
কোনো যানবাহন নতুন ট্রিপ গ্রহণ করছে না, তা বোঝাতে OFFLINE ব্যবহার করুন। মনে রাখবেন, এই অবস্থায়ও যানবাহনটি নির্ধারিত ট্রিপগুলো সম্পন্ন করতে পারবে।
  • ONLINE অবস্থায় তৈরি করা কোনো Vehicle SearchVehicles কোয়েরির জবাবে তাৎক্ষণিকভাবে ফেরত আসতে পারে। আরও বিস্তারিত জানতে ‘সার্চ ভেহিকেলস’ দেখুন।
  • ONLINE অবস্থায় তৈরি করা যানবাহনগুলোর ক্ষেত্রে CreateVehicle কলে last_location ফিল্ডটি ব্যবহার করা উচিত।

গাড়ির বৈশিষ্ট্য ক্ষেত্র

আপনার গ্রাহক বা ফ্লিট অপারেটরদের আরও বিভিন্ন ধরনের সার্চ ক্রাইটেরিয়ার মাধ্যমে আপনার ফ্লিটের যানবাহন খুঁজে পেতে সক্ষম করার জন্য, 'ভেহিকেল attributes ' ফিল্ডটি ব্যবহার করে কাস্টমাইজড ক্রাইটেরিয়া তৈরি করুন। এটি আপনার অ্যাপের সক্ষমতা বাড়ায় এবং শুধুমাত্র অন্যান্য ভেহিকেল ফিল্ডের উপর ভিত্তি করে সার্চ ক্রাইটেরিয়া ব্যবহারের চেয়ে আরও ভালোভাবে যানবাহন খুঁজে পেতে সাহায্য করে। প্রতিটি যানবাহনের সর্বাধিক ১০০টি অ্যাট্রিবিউট থাকতে পারে এবং প্রতিটির একটি ইউনিক কী (key) থাকতে হবে। ভ্যালুগুলো স্ট্রিং, বুলিয়ান বা সংখ্যা হতে পারে।

উদাহরণস্বরূপ, আপনি আপনার রাইডশেয়ার যানবাহনগুলোকে বিভিন্ন শ্রেণী স্তরে আলাদা করার জন্য 'class' নামে একটি কাস্টম অ্যাট্রিবিউট ঘোষণা করতে পারেন। গাড়ির শ্রেণী স্তরগুলো বোঝানোর জন্য আপনি নিম্নলিখিত স্ট্রিং ভ্যালুগুলো ব্যবহার করবেন: ECONOMY , STANDARD , এবং LUXURY

তবে, কাস্টম অ্যাট্রিবিউটের মানগুলো পরস্পর স্বতন্ত্র হতে হবে এমন কোনো বাধ্যবাধকতা নেই। আপনি ‘পোষ্যবান্ধব’ , ‘ধূমপানমুক্ত’ , এবং ‘দীর্ঘ ভ্রমণে সক্ষম’- এর মতো মানদণ্ড ব্যবহার করতে পারেন। এগুলোর প্রত্যেকটিই বুলিয়ান মান ব্যবহার করে একটি পৃথক কাস্টম অ্যাট্রিবিউট হতে পারে। একটি নির্দিষ্ট যানবাহনকে এই তিনটি কাস্টম অ্যাট্রিবিউটের পাশাপাশি ক্লাস কাস্টম অ্যাট্রিবিউটটিকেও উপযুক্ত স্ট্রিং মানে সেট করে দেওয়া যেতে পারে।

এইভাবে অ্যাট্রিবিউট ব্যবহার করে আপনি এমন অনেক বৈশিষ্ট্য পেতে পারেন যা নির্দিষ্ট চাহিদাসম্পন্ন ভ্রমণের জন্য যানবাহন খুঁজে পেতে সহায়ক। কোয়েরি ফিল্টার হিসেবে কাস্টম অ্যাট্রিবিউট কীভাবে ব্যবহার করতে হয় তার নির্দেশাবলীর জন্য, ‘যানবাহন অনুসন্ধান’ দেখুন।

গাড়ির বৈশিষ্ট্য আপডেট করুন

আপনি UpdateVehicle অথবা UpdateVehicleAttributes ব্যবহার করে গাড়ির অ্যাট্রিবিউটগুলো আপডেট করতে পারেন। প্রতিটি attributes কী-এর জন্য প্রতি গাড়িতে কেবল একটিই ভ্যালু থাকতে পারে। আপনি ফিল্ড মাস্কে থাকা attributes ব্যবহার করে কাস্টম গাড়ির অ্যাট্রিবিউট ঘোষণা করেন এবং তারপর নিচের পদ্ধতি অনুসারে ভ্যালু প্রদান করেন।

UpdateVehicle UpdateVehicleAttributes
এই API শুধুমাত্র একটি অ্যাট্রিবিউট আপডেট করার অনুমতি দেয় না। এই পদ্ধতি ব্যবহার করার সময়, ফিল্ড মাস্কে 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 রেফারেন্সটি দেখুন।

জিআরপিসি

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.

বিশ্রাম

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

এরপর কী?