টাস্ক কনফিগার করা

এই ডকুমেন্ট ধরে নেয় যে আপনি টাস্ক তৈরি ও ব্যবহার করার পদ্ধতি জানেন। এটি নিম্নলিখিত উপায়ে শিপমেন্ট টাস্ক কনফিগার করার জন্য নির্দিষ্ট উদাহরণ প্রদান করে:

  • শিপমেন্ট টাস্কের জন্য টার্গেট টাইম উইন্ডো সেট করা: টাস্ক সম্পূর্ণ করার জন্য টাইম উইন্ডো সেট করুন।

  • টাস্কের দৃশ্যমানতা কাস্টমাইজ করা: গ্রাহক বা ফ্লিট অপারেটরদের দেখানোর জন্য টাস্ক অ্যাক্টিভিটির দৃশ্যমানতা কাস্টমাইজ করুন।

শিপমেন্ট টাস্কের ফিল্ড সম্পর্কে বিস্তারিত জানতে শিপমেন্ট টাস্ক তৈরি করুন দেখুন। আপনি যখন আগে থেকে থাকা টাস্ক সম্পর্কে অতিরিক্ত তথ্য আপডেট করেন, তখন আপনাকে অবশ্যই টাস্কের জন্য প্রাসঙ্গিক আইডেন্টিফায়ার অন্তর্ভুক্ত করতে হবে, এর সাথে টাস্কের জন্য আপডেট করা ফিল্ডও অন্তর্ভুক্ত করতে হবে।

টার্গেট টাইম উইন্ডো সেট করুন

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

টার্গেট টাইম উইন্ডোতে শুরুর সময় ও শেষ হওয়ার সময় থাকে এবং যেকোনও ধরনের টাস্কে এটি সেট করা যেতে পারে। টার্গেট টাইম উইন্ডো রাউটিংয়ের আচরণকে প্রভাবিত করে না।

নিম্নলিখিত উদাহরণগুলি দেখায় যে কীভাবে Java gRPC লাইব্রেরি ব্যবহার করে টাইম উইন্ডো সেট করতে হয় বা কীভাবে UpdateTask-এ HTTP REST অনুরোধ করতে হয়। এছাড়াও, টাস্ক তৈরি করার সময় আপনি এই ফিল্ড সেট করতে পারবেন।

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

বিশ্রাম

HTTP ব্যবহার করে টাস্ক টাইম উইন্ডো সেট করতে, PATCH কল করুন এবং targetTimeWindow প্যারামিটার আপডেট করতে updateMask ব্যবহার করুন:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

এখানে <id> হল টাস্কের জন্য অনন্য শনাক্তকারী। রিকোয়েস্ট হেডারে অবশ্যই Bearer <token> ভ্যালু সহ Authorization ফিল্ড থাকতে হবে, যেখানে <token> আপনার সার্ভার দ্বারা পরিষেবা অ্যাকাউন্ট ভূমিকা এবং JSON ওয়েব টোকেন-এ বর্ণিত নির্দেশিকা অনুসারে ইস্যু করা হয়।

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

টাস্কের দৃশ্যমানতা কাস্টমাইজ করুন

ডিফল্ট হিসেবে, Fleet Engine টাস্ক অ্যাক্টিভিটি সম্পর্কে তথ্য প্রদান করে যা পরে শিপমেন্ট গ্রহণকারী গ্রাহক এবং শিপমেন্ট ট্র্যাক করা ফ্লিট অপারেটর উভয়কেই দেখানো যেতে পারে। এর মধ্যে এমন তথ্য অন্তর্ভুক্ত থাকে যা গ্রাহককে তার প্যাকেজ ডেলিভারির স্ট্যাটাস সম্পর্কে বিজ্ঞপ্তি পাঠানোর আগে স্টপের সংখ্যা নির্দেশ করে। আপনার বিজনেস মডেলের সাথে আরও ভালোভাবে মানানসই করার জন্য আপনি টাস্ক-ভিত্তিক এই তথ্য কাস্টমাইজ করতে পারবেন।

এই বিভাগে ম্যাপে ট্র্যাক করা অবজেক্টের দৃশ্যমানতা সংক্রান্ত নিয়ম বর্ণনা করা হয়েছে। এইসব নিয়ম দুই ধরনের অবজেক্টের ক্ষেত্রে প্রযোজ্য:

  • লোকেশন মার্কারের দৃশ্যমানতা
  • অ্যাক্টিভ গাড়ির টাস্কের জন্য টাস্ক ডেটার দৃশ্যমানতা, যেমন পলিলাইন ও ETA

লোকেশন মার্কারের দৃশ্যমানতা সংক্রান্ত নিয়ম

ডেলিভারির স্ট্যাটাস যাই হোক না কেন, Fleet Engine ম্যাপে দেখানো শিপমেন্ট ডেলিভারির লোকেশনের জন্য লোকেশন মার্কার দেখায়।

টাস্ক ডেটার দৃশ্যমানতা সংক্রান্ত নিয়ম

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

নিম্নলিখিত টাস্ক কাস্টমাইজ করা নাও যেতে পারে:

  • শিডিউল করা স্টপ
  • অনুপলভ্যতা সংক্রান্ত টাস্ক
  • গাড়ি সংক্রান্ত বন্ধ থাকা টাস্ক

অনুপলভ্যতা টাস্কের দৃশ্যমানতা সংক্রান্ত নিয়ম

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

অ্যাক্টিভ ভেইকেল টাস্কের দৃশ্যমানতা

TaskTrackingInfo অবজেক্টটি বেশ কিছু ডেটা এলিমেন্ট প্রদান করে যা আপনি শিপমেন্ট ট্র্যাকিং লাইব্রেরি ব্যবহার করে দৃশ্যমান করতে পারেন। ডিফল্ট হিসেবে, টাস্কটি গাড়িতে অ্যাসাইন করা হলে এবং গাড়িটি টাস্কের ৫টি স্টপের মধ্যে থাকলে এই ফিল্ডগুলি দেখা যায়। টাস্ক সম্পূর্ণ বা বাতিল হয়ে গেলে, এটি আর দেখা যাবে না।

আপনি Fleet Engine-এ টাস্ক তৈরি বা আপডেট করার সময় টাস্কে TaskTrackingViewConfig সেট করে প্রতিটি টাস্কের ভিত্তিতে দৃশ্যমানতা কনফিগারেশন কাস্টমাইজ করতে পারবেন। এটি স্বতন্ত্র ডেটা এলিমেন্ট উপলভ্য হওয়ার জন্য নিয়ম তৈরি করে।

নিম্নলিখিত সারণীতে সেইসব ফিল্ড দেখানো হয়েছে যেগুলিতে আপনি দৃশ্যমানতার নিয়ম প্রয়োগ করতে পারবেন।

দৃশ্যমানতা সংক্রান্ত নিয়মের জন্য গাড়ির টাস্ক ফিল্ড
  • রুটের পলিলাইন
  • পৌঁছানোর আনুমানিক সময়
  • টাস্ক সম্পূর্ণ করার আনুমানিক সময়
  • টাস্কের জন্য বাকি থাকা ড্রাইভিং দূরত্ব
  • বাকি থাকা স্টপের সংখ্যা
  • গাড়ির লোকেশন

উপরে তালিকাভুক্ত ফিল্ডের জন্য উপলভ্য দৃশ্যমানতার বিকল্প এই টেবিলে দেখানো হয়েছে।

দৃশ্যমানতার বিকল্প
  • বাকি স্টপের সংখ্যা
  • পৌঁছানোর আনুমানিক সময় পর্যন্ত সময়সীমা
  • বাকি থাকা ড্রাইভিং দূরত্ব
  • সবসময় দেখা যায়
  • কখনই দেখা যাবে না

রুট পলিলাইন ও গাড়ির লোকেশন সংক্রান্ত দৃশ্যমানতার নিয়ম

ট্র্যাক করা রুটের ক্ষেত্রে, রুট পলিলাইনের দৃশ্যমানতা নির্ভর করে গাড়ির দৃশ্যমানতার উপর। কোনও অ্যাক্টিভ রুটে যদি রুট পলিলাইন দেখা যায় যেখানে গাড়িটি দেখা যাচ্ছে না, সেক্ষেত্রেও দৃশ্যমান পলিলাইনের শেষ প্রান্ত থেকে গাড়ির লোকেশন অনুমান করা যেতে পারে। তাই, রুট পলিলাইনের দৃশ্যমানতা অবশ্যই গাড়ির দৃশ্যমানতার মতো বা তার চেয়ে বেশি সীমাবদ্ধ হতে হবে।

সঠিক রুট পলিলাইন / গাড়ির লোকেশন দৃশ্যমানতার কম্বিনেশন প্রদান করতে এইসব নিয়ম অনুসরণ করুন।

রুটের পলিলাইন ও গাড়ির লোকেশন একই দৃশ্যমানতা বিকল্প নির্দিষ্ট করে

এই পরিস্থিতিতে, পলিলাইন এবং গাড়ির লোকেশন, দুটিই একই বিকল্প সেট করে, যার মধ্যে রয়েছে:

  • বাকি স্টপের সংখ্যা
  • পৌঁছানোর প্রত্যাশিত সময় পর্যন্ত সময়সীমা
  • বাকি থাকা ড্রাইভিং দূরত্ব

নিয়ম মেনে চলতে, রুট পলিলাইন দৃশ্যমানতার ভ্যালু অবশ্যই গাড়ির দৃশ্যমানতার জন্য সেট করা ভ্যালুর সমান বা তার চেয়ে কম হতে হবে। এই উদাহরণে, পলিলাইনের জন্য বাকি থাকা স্টপ থ্রেশহোল্ড ৩-এ সেট করা আছে, যা গাড়ির জন্য নির্দিষ্ট করা ৫-এর মানের থেকে কম। এর অর্থ হল, ট্র্যাক করা যাত্রা টাস্ক লোকেশন থেকে ৫টি স্টপ দূরে থাকলে, গাড়িটি দেখা যায়, কিন্তু যাত্রাটি ৩টি স্টপ দূরে না হওয়া পর্যন্ত সেই গাড়ির রুট দেখা যায় না।

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

রুটের পলিলাইন ও গাড়ির লোকেশন বিভিন্ন দৃশ্যমানতার বিকল্প নির্দিষ্ট করে

রুট পলিলাইন ও গাড়ির লোকেশনের জন্য আলাদা দৃশ্যমানতা বিকল্প থাকলে, গাড়ির লোকেশন তখনই দেখা যাবে যখন তাদের দৃশ্যমানতা বিকল্পের উভয় শর্তই পূরণ হবে। আবার, পলিলিনের দৃশ্যমানতা গাড়ির দৃশ্যমানতার নিয়মের উপর নির্ভর করে:

  • সবসময় দৃশ্যমান: গাড়ির লোকেশন একই সবসময় দৃশ্যমান দৃশ্যমানতা বিকল্প প্রদান করলে, রুটের পলিলাইনকে অবশ্যই সবসময় দৃশ্যমান দৃশ্যমানতা বিকল্প ব্যবহার করতে হবে।
  • কখনও দৃশ্যমান নয়: গাড়ির লোকেশন কখনও দৃশ্যমান নয় দৃশ্যমানতা বিকল্প ব্যবহার করলে, রুটের পলিলাইনকে অবশ্যই কখনও দৃশ্যমান নয় দৃশ্যমানতা বিকল্প ব্যবহার করতে হবে।

একটি উদাহরণ নিচে দেওয়া হল:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

এই উদাহরণে, গাড়ির লোকেশন তখনই দেখা যাবে যদি বাকি স্টপের সংখ্যা কমপক্ষে ৩ এবং বাকি ড্রাইভিং দূরত্ব কমপক্ষে ৩০০০ মিটার হয়।

উদাহরণ টাস্কের দৃশ্যমানতা কাস্টমাইজেশন

নিচের উদাহরণগুলি দেখায় যে কীভাবে নিম্নলিখিত দৃশ্যমানতার নিয়মের সাথে একটি টাস্ক সেট করতে হয়:

  • গাড়ি ৩টি স্টপের মধ্যে থাকলে রুটের পলিলাইন দেখান।
  • বাকি থাকা ড্রাইভিংয়ের দূরত্ব ৫০০০ মিটারের কম হলে ETA দেখান।
  • বাকি থাকা স্টপের সংখ্যা কখনই দেখাবেন না।
  • অন্যান্য প্রতিটি ফিল্ডে ডিফল্ট দৃশ্যমানতা বজায় থাকে, যা টাস্কের ৫টি স্টপের মধ্যে গাড়িটি থাকলে দেখানো হয়।

gRPC বা REST-এর জন্য TaskTrackingViewConfig দেখুন।

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

বিশ্রাম

HTTP ব্যবহার করে টাস্ক ট্র্যাকিং ভিউ কনফিগারেশন উইন্ডো সেট করতে, PATCH কল করুন এবং taskTrackingViewConfig প্যারামিটার আপডেট করতে updateMask ব্যবহার করুন:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

যেমন:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

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