গাড়ির ফিল্ড আপডেট করুন

এই ডকুমেন্টে গুরুত্বপূর্ণ গাড়ির ফিল্ড কভার করা হয়েছে যা আপনি গাড়ি তৈরি ও ম্যানেজ করার সময় আপডেট করতে পারবেন।

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

গাড়ির ফিল্ডের সম্পূর্ণ তালিকা দেখতে, এখানে যান:

গাড়ির স্ট্যাটাস ফিল্ড

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

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

গাড়ির অ্যাট্রিবিউট ফিল্ড

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

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

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

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

গাড়ির অ্যাট্রিবিউট আপডেট করুন

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

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

গাড়ির ফিল্ডের উদাহরণ আপডেট করুন

এই বিভাগে দেখানো হয়েছে যে কীভাবে UpdateVehicleRequest ব্যবহার করে গাড়ির ফিল্ড আপডেট করতে হয়, যার মধ্যে কোন ফিল্ড আপডেট করতে হবে তা দেখানোর জন্য update_mask অন্তর্ভুক্ত থাকে। বিস্তারিত জানতে ফিল্ড মাস্ক-এ প্রোটোকল বাফার ডকুমেন্টেশন দেখুন।

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.

বিশ্রাম

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

এর পরে কী করতে হবে