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

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

  • type : এই ডেলিভারি গাড়ির ধরণ। এটি এই গাড়ির জন্য তৈরি রুটগুলোকে প্রভাবিত করে।
  • attributes[] : DeliveryVehicleAttribute টাইপের একটি অপশন অ্যারে। আপনার সার্ভিসে থাকা যানবাহনগুলোর জন্য নিজস্ব মানদণ্ড নির্ধারণ করতে এগুলো ব্যবহার করুন, যা যানবাহন অনুসন্ধান বা তালিকাভুক্ত করার সময় ফিল্টারিং প্রক্রিয়াকে আরও উন্নত করে।

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

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

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

উদাহরণস্বরূপ, আপনার ডেলিভারি যানবাহনগুলো শহরের কোন জোনে চলাচল করে তা আলাদা করার জন্য আপনি 'zone' নামে একটি কাস্টম অ্যাট্রিবিউট ঘোষণা করতে পারেন। বিভিন্ন জোন বোঝানোর জন্য আপনি 1B , 2C , এবং 3A মতো স্ট্রিং ভ্যালু ব্যবহার করবেন। এরপর আপনি ফ্লিট ট্র্যাকিং-এ একটি ফিল্টার ব্যবহার করে কোনো নির্দিষ্ট জোনের দায়িত্বে থাকা অপারেটরকে শুধুমাত্র সেই জোনে কর্মরত যানবাহনগুলো দেখাতে পারবেন।

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

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

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

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

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

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

last_location ছাড়া অন্য ফিল্ড আপডেট করতে Fleet Engine Delivery Admin প্রিভিলেজ প্রয়োজন।

উদাহরণ: কাস্টম অ্যাট্রিবিউট সেট করুন

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

providers.deliveryVehicles.patch রেফারেন্সটি দেখুন।

জিআরপিসি

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String VEHICLE_ID = "vehicle-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Vehicle settings
  String vehicleName = "providers/" + PROJECT_ID + "/deliveryVehicles/" + VEHICLE_ID;
  DeliveryVehicle myDeliveryVehicle = DeliveryVehicle.newBuilder()
      .addAllAttributes(ImmutableList.of(
          DeliveryVehicleAttribute.newBuilder().setKey("zone").setValue("1B").build(),
          DeliveryVehicleAttribute.newBuilder().setKey("available-at-night").setValue("true").build()))
      .build();

  // DeliveryVehicle request
  UpdateDeliveryVehicleRequest updateDeliveryVehicleRequest =
    UpdateDeliveryVehicleRequest.newBuilder()  // No need for the header
        .setName(vehicleName)
        .setDeliveryVehicle(myDeliveryVehicle)
        .setUpdateMask(FieldMask.newBuilder()
            .addPaths("attributes"))
        .build();

  try {
    DeliveryVehicle updatedDeliveryVehicle =
        deliveryService.updateDeliveryVehicle(updateDeliveryVehicleRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

বিশ্রাম

  # Set JWT, PROJECT_ID, VEHICLE_ID, TASK1_ID, and TASK2_ID in the local
  # environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/deliveryVehicles/${VEHICLE_ID}?updateMask=attributes" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
      "attributes": [
        {"key": "zone", "value": "1B"},
        {"key": "available-at-night", "value": "true"}
      ]
  }
  EOM

এরপর কী?