এই ডকুমেন্ট থেকে আপনি জানতে পারবেন যে কীভাবে সার্ভার বা ব্রাউজার থেকে টাস্কের তথ্য খুঁজে পাবেন। 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 বা GetTaskTrackingInfo-এ HTTP REST কল ব্যবহার করে শিপমেন্ট ট্র্যাকিং আইডি দিয়ে কীভাবে টাস্ক লুক-আপ করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে।
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;
}
বিশ্রাম
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_locationVehicleStop.stateVehicleStop.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 দেখুন। কোনও ফিল্টার কোয়েরি উল্লেখ করা না থাকলে, সব টাস্ক তালিকাভুক্ত করা হয়।
নিচের সারণীতে সঠিক টাস্ক প্রপার্টি দেখানো হয়েছে যা আপনি ফিল্টার করার জন্য ব্যবহার করতে পারবেন:
| তালিকা ফিল্টার করার জন্য টাস্ক প্রপার্টি | |
|---|---|
|
|
ফিল্টার কোয়েরি অপারেটরের সম্পূর্ণ তালিকা দেখতে 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-এস্কেপ করা ফিল্টার কোয়েরি সহ "ফিল্টার" 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}"