কাজ খুঁজুন

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

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

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

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

  • কাজের তালিকা : কাজগুলিতে ব্যাপক প্রবেশাধিকার, যা শুধুমাত্র বিশ্বস্ত ব্যবহারকারীদের জন্য উদ্দিষ্ট।

কাজগুলো খুঁজে বের করুন

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

  • ট্র্যাকিং আইডি দ্বারা অনুসন্ধান অবশ্যই 'ট্র্যাক করা বস্তুসমূহের দৃশ্যমানতার নিয়মাবলী' -তে উল্লিখিত দৃশ্যমানতার নিয়মগুলি মেনে চলতে হবে।

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

টাস্ক আইডি দ্বারা টাস্কটি সন্ধান করুন

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

জিআরপিসি

 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> টি আপনার সার্ভার দ্বারা Service account roles and JSON Web tokens -এ বর্ণিত নির্দেশিকা অনুসারে ইস্যু করা হয়।
  • অনুরোধের মূল অংশ অবশ্যই খালি হতে হবে।
  • অনুসন্ধান সফল হলে, প্রতিক্রিয়া অংশে একটি টাস্ক এনটিটি থাকে।

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 অথবা GetTaskTrackingInfo তে একটি HTTP REST কল ব্যবহার করে শিপমেন্ট ট্র্যাকিং আইডি দ্বারা টাস্কগুলি খুঁজে বের করা যায়।

জিআরপিসি

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;
}

বিশ্রাম

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}"

কাজগুলির তালিকা

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

তালিকা পৃষ্ঠাঙ্কন করুন

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

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

কাজ তালিকাভুক্ত করার সময় ক্ষেত্রগুলি

টাস্ক তালিকাভুক্ত করার সময় ফ্লিট ইঞ্জিন নিম্নলিখিত ফিল্ডগুলি গোপন করে:

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

গুগল এপিআই উন্নয়ন প্রস্তাবনা অনুসারে নিম্নলিখিত ফিল্ড ফরম্যাটগুলো ব্যবহার করুন:

ক্ষেত্রের ধরণ ফর্ম্যাট উদাহরণ
টাইমস্ট্যাম্প আরএফসি-৩৩৩৯ task_outcome_time = 2022-03-01T11:30:00-08:00
সময়কাল সেকেন্ডের সংখ্যা যার পরে একটি s থাকে task_duration = 120s
এনাম স্ট্রিং 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 দেখুন।

কাজের উদাহরণ তালিকাভুক্ত করুন

নিম্নলিখিত উদাহরণটি দেখায় কিভাবে জাভা gRPC লাইব্রেরি এবং ListTasks এ HTTP REST কল উভয় ব্যবহার করে একটি deliveryVehicleId এবং একটি task অ্যাট্রিবিউটের জন্য টাস্কগুলি তালিকাভুক্ত করা যায়।

একটি সফল প্রতিক্রিয়াও খালি থাকতে পারে। একটি খালি প্রতিক্রিয়া নির্দেশ করে যে প্রদত্ত deliveryVehicleId সাথে কোনো কাজ যুক্ত নেই।

জিআরপিসি

 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

তালিকাভুক্ত কাজগুলিতে ফিল্টার প্রয়োগ করতে, একটি 'filter' URL প্যারামিটার অন্তর্ভুক্ত করুন এবং এর মান হিসাবে একটি URL-escaped ফিল্টার কোয়েরি দিন।

অনুরোধ হেডারে অবশ্যই 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}"

এরপর কী?