টাস্ক খোঁজা

এই ডকুমেন্ট থেকে আপনি জানতে পারবেন যে কীভাবে সার্ভার বা ব্রাউজার থেকে টাস্কের তথ্য খুঁজে পাবেন। টাস্ক খোঁজার জন্য Fleet Engine দুটি পদ্ধতি ব্যবহার করে:

  • টাস্ক খোঁজা: আপনি নিম্নলিখিত আইডি দিয়ে টাস্ক খুঁজতে পারবেন:

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

    টাস্ক আইডি ও টাস্ক ট্র্যাকিং আইডির মধ্যে পার্থক্য বুঝতে ভুল করবেন না। এগুলি এক নয়। শিডিউল করা টাস্ক গাইডে প্রাথমিক টাস্ক ফিল্ড দেখুন।

  • টাস্কের তালিকা: টাস্কের ক্ষেত্রে একটি বিস্তৃত অ্যাক্সেস, যা শুধুমাত্র বিশ্বস্ত ব্যবহারকারীদের জন্য তৈরি করা হয়েছে।

টাস্ক খোঁজা

টাস্ক আইডি বা ট্র্যাকিং আইডি দিয়ে কীভাবে টাস্ক খুঁজতে হয় তা এই বিভাগে বর্ণনা করা হয়েছে। এটির জন্য নিম্নলিখিত প্রয়োজনীয়তা পূরণ করতে হবে:

  • ট্র্যাকিং আইডি দ্বারা লুকআপ অবশ্যই ট্র্যাক করা অবজেক্টের জন্য দৃশ্যমানতার নিয়ম-এ উল্লেখিত দৃশ্যমানতার নিয়ম মেনে চলতে হবে।

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

টাস্ক আইডি দিয়ে টাস্ক খুঁজুন

আপনি gRPC বা REST ব্যবহার করে সার্ভার এনভায়রনমেন্ট থেকে টাস্ক আইডি দিয়ে টাস্ক খুঁজে দেখতে পারবেন। Java gRPC লাইব্রেরি বা GetTask-এর জন্য REST অনুরোধ কীভাবে ব্যবহার করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

gRPC

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

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

বিশ্রাম

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

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

উদাহরণ curl কমান্ড:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

ট্র্যাকিং আইডি দিয়ে টাস্ক খুঁজে দেখা

gRPC বা HTTP REST কল ব্যবহার করে GetTaskTrackingInfo-এ শিপমেন্ট ট্র্যাকিং আইডি দিয়ে কীভাবে টাস্ক লুকআপ করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id> হল টাস্কের সাথে যুক্ত ট্র্যাকিং আইডি।

  • অনুরোধের হেডারে Authorization ফিল্ড থাকতে হবে যার ভ্যালু হল Bearer <token>, যেখানে <token>-এ সঠিক পরিষেবা অ্যাকাউন্ট ভূমিকা আছে। পরিষেবা অ্যাকাউন্টের ভূমিকা দেখুন।

  • লুকআপ সফল হলে, রেসপন্স বডিতে একটি taskTrackingInfo এন্টিটি থাকে।

curl কমান্ডের উদাহরণ:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

টাস্কের তালিকা তৈরি করা

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

তালিকা পেজিনেট করুন

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

ফলাফলের পরবর্তী পৃষ্ঠা পড়ার জন্য টাস্ক লিস্টে টোকেন অন্তর্ভুক্ত থাকতে পারে। পরের পৃষ্ঠাটি রিট্রিভ করতে, পৃষ্ঠা টোকেন সহ একই অনুরোধ আবার ইস্যু করুন। ফেরত আসা পৃষ্ঠার টোকেন খালি থাকলে, আর কোনও টাস্ক রিট্রিভ করা যাবে না।

টাস্ক তালিকাভুক্ত করার সময় ফিল্ড

টাস্কের তালিকা তৈরি করার সময় Fleet Engine নিম্নলিখিত ফিল্ডগুলি এডিট করে:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Google API-এর উন্নতি সংক্রান্ত প্রস্তাবের ভিত্তিতে নিম্নলিখিত ফিল্ড ফর্ম্যাট ব্যবহার করুন:

ফিল্ডের ধরন ফর্ম্যাট উদাহরণ
টাইমস্ট্যাম্প RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
সময়সীমা সেকেন্ডের সংখ্যা এবং তারপরে s task_duration = 120s
Enum স্ট্রিং state = CLOSED AND type = PICKUP
লোকেশন point.latitude ও point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

তালিকাভুক্ত টাস্ক ফিল্টার করুন

আপনি বেশিরভাগ টাস্ক প্রপার্টি অনুযায়ী তালিকাভুক্ত টাস্ক ফিল্টার করতে পারবেন। ফিল্টার কোয়েরি সিনট্যাক্সের জন্য, AIP-160 দেখুন। কোনও ফিল্টার কোয়েরি নির্দিষ্ট করা না থাকলে, সব টাস্ক তালিকাভুক্ত করা হয়।

নিচের সারণীতে সঠিক টাস্ক প্রপার্টি দেখানো হয়েছে যা আপনি ফিল্টার করার জন্য ব্যবহার করতে পারবেন:

তালিকা ফিল্টার করার জন্য টাস্ক প্রপার্টি
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

ফিল্টার কোয়েরি অপারেটরের সম্পূর্ণ তালিকা দেখতে AIP-160 দেখুন।

টাস্কের উদাহরণের তালিকা

নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে deliveryVehicleId এবং টাস্ক অ্যাট্রিবিউটের জন্য টাস্কের তালিকা তৈরি করতে হয়। Java gRPC লাইব্রেরি এবং ListTasks-এ HTTP REST কলের মাধ্যমে এটি করা হয়।

সফল উত্তর এখনও ফাঁকা থাকতে পারে। কোনও উত্তর না থাকার অর্থ হল, প্রদান করা deliveryVehicleId-এর সাথে কোনও টাস্ক যুক্ত নেই।

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

বিশ্রাম

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

তালিকাভুক্ত টাস্কে ফিল্টার প্রয়োগ করতে, URL-এ এস্কেপ করা ফিল্টার কোয়েরিকে ভ্যালু হিসেবে রেখে "filter" URL প্যারামিটার যোগ করুন।

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

সফলভাবে লুকআপ করা হলে, নিম্নলিখিত স্ট্রাকচার সহ রেসপন্স বডি প্রদান করা হয়:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

curl কমান্ডের উদাহরণ:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

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