এই ডকুমেন্ট ধরে নেয় যে আপনি Fleet Engine-এর ভূমিকা বিভাগে [শিডিউল করা টাস্ক][1] সংক্রান্ত প্রাথমিক গাইড এবং এই বিভাগে [শিডিউল করা টাস্ক কী?][2] পড়েছেন।
শিডিউল করা টাস্কের জন্য Fleet Engine বিভিন্ন ধরনের টাস্কের বিভাগ প্রদান করে:
- শিপমেন্ট টাস্ক: শিপমেন্ট পিক-আপ ও ডেলিভারি সহ ড্রাইভিং টাস্কের জন্য ব্যবহার করুন।
- অনুপলভ্যতা টাস্ক: ড্রাইভাররা যখন অনুপলভ্য থাকেন, যেমন প্রয়োজনীয় বিরতির সময়, তখন ব্যবহার করুন।
- শিডিউল করা স্টপ টাস্ক: ড্রপ বক্স বা গ্রাহকের লোকেশনে ড্রাইভিং ছাড়া অন্যান্য টাস্কের জন্য ব্যবহার করুন, যেমন কোনও বিল্ডিংয়ে প্রবেশ করার বা ডেলিভারি পয়েন্ট লোকেট করার সময়।
এই ডকুমেন্টে আপনার সার্ভারে কীভাবে শিপমেন্ট টাস্ক তৈরি করতে হয় তা বলা আছে। অন্যান্য টাস্কের ধরনের জন্য, অন্যান্য টাস্কের ধরন তৈরি করুন দেখুন।
শিপমেন্ট টাস্ক ফিল্ড
এই বিভাগে পিক-আপ ও ডেলিভারি দুটি টাস্কের জন্যই প্রয়োজনীয় টাস্ক ফিল্ডের ডকুমেন্টেশন দেওয়া আছে।
টাস্কের প্রয়োজনীয় ফিল্ড
Fleet Engine-এ আপনার তৈরি করা প্রতিটি টাস্কের জন্য, আপনাকে অবশ্যই প্রয়োজনীয়
ফিল্ড প্রদান করতে হবে এবং আপনি যেকোনও ঐচ্ছিক ফিল্ডও প্রদান করতে পারেন। Fleet Engine
অন্যান্য সব ফিল্ড উপেক্ষা করে এবং টাস্ক তৈরি করার
অনুরোধে অ্যাসাইন করা deliveryVehicleId দেওয়া থাকলে, একটি ব্যতিক্রম দেখায়। কোনও গাড়িতে টাস্ক অ্যাসাইন করতে,
UpdateDeliveryVehicleRequest ব্যবহার করুন। আরও তথ্যের জন্য, টাস্ক আপডেট করা দেখুন।
| ফিল্ড | ভ্যালু |
|---|---|
type |
টাস্কের ধরনের সাথে ম্যাচ করে এমন ধরনের জন্য সেট করা হয়, যা এগুলির মধ্যে একটি:
|
state |
State.OPEN |
task_id |
অনন্য টাস্ক আইডি। এটি যেন শিপমেন্টের ট্র্যাকিং নম্বর না হয়। আপনার সিস্টেমে টাস্ক আইডি না থাকলে, আপনি সর্বজনীন অনন্য আইডেন্টিফায়ার (UUID) তৈরি করতে পারেন। নির্দিষ্ট তথ্যের জন্য, দেখুন টাস্ক আইডি। |
tracking_id |
PICKUP অথবা DELIVERY টাস্কের জন্য:
আপনি যে নম্বর বা শনাক্তকারী ব্যবহার করে শিপমেন্ট ট্র্যাক করছেন। শিপমেন্ট নয় এমন টাস্কের জন্য
এই ফিল্ডটি দেবেন না। |
planned_location |
PICKUP, DELIVERY, বা
SCHEDULED_STOP টাস্ক শুধুমাত্র: টাস্কটি
যে লোকেশনে সম্পূর্ণ করতে হবে। UNAVAILABLEটি টাস্কের
জন্য প্রয়োজন নেই। |
task_duration |
টাস্ক সম্পূর্ণ করতে আনুমানিক কত সময় লাগবে। যেমন, পার্কিংয়ের জন্য জায়গা খোঁজা অথবা হ্যান্ড-অফ লোকেশনে হেঁটে যাওয়া। |
শিপমেন্ট টাস্কের ঐচ্ছিক ফিল্ড
| ফিল্ড | ভ্যালু |
|---|---|
target_time_window |
যে সময়সীমার মধ্যে টাস্কটি সম্পূর্ণ করতে হবে। এই ফিল্ড রাউটিং আচরণকে প্রভাবিত করে না। |
task_tracking_view_config |
PICKUP অথবা DELIVERYটি টাস্কের জন্য:
টাস্ক ট্র্যাকিংয়ের জন্য কনফিগারেশন যা নির্দিষ্ট করে যে কোন ডেটা এলিমেন্ট
কোন পরিস্থিতিতে গ্রাহকরা দেখতে পাবেন। |
attributes |
কাস্টম টাস্ক অ্যাট্রিবিউটের তালিকা। প্রতিটি অ্যাট্রিবিউটের একটি অনন্য কী থাকতে হবে। |
শিপমেন্ট পিক-আপ টাস্ক তৈরি করা
শিপমেন্ট পিক-আপ করার জন্য ড্রাইভারের অ্যাক্টিভিটি ফলো করতে Fleet Engine ব্যবহার করতে,
শিপমেন্ট পিক-আপ টাস্ক তৈরি করুন। এর মধ্যে টাস্কের ধরন অ্যাট্রিবিউটকে
PICKUP হিসেবে সেট করা হয়। নিচের উদাহরণে Grand
Indonesia East Mall থেকে শিপমেন্ট পিক-আপ করার বিষয়টি দেখানো হয়েছে।
নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে
[Java gRPC library][4] ব্যবহার করে শিপমেন্ট পিক-আপ টাস্ক তৈরি করতে হয় অথবা কীভাবে
[CreateTask][5]-এ HTTP REST অনুরোধ করতে হয়।
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.PICKUP)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have a task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
সার্ভার এনভায়রনমেন্ট থেকে শিপমেন্ট পিক-আপ টাস্ক তৈরি করতে, CreateTask-এ HTTP REST
কল করুন:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id> হল টাস্কের জন্য অনন্য শনাক্তকারী।
রিকোয়েস্ট হেডারে অবশ্যই Authorization ফিল্ড থাকতে হবে এবং তার ভ্যালু হতে হবে Bearer <token>, যেখানে <token> আপনার সার্ভার ইস্যু করে এবং তা [পরিষেবা অ্যাকাউন্ট রোল][৬] এবং [JSON ওয়েব টোকেন][৭] সংক্রান্ত নির্দেশিকা অনুযায়ী হতে হবে।
অনুরোধের বডিতে অবশ্যই [Shipment task fields][8]-এ বর্ণিত উপযুক্ত ফিল্ড সহ Task এন্টিটি থাকতে হবে
।
curl কমান্ডের উদাহরণ:
# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "PICKUP",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOMশিপমেন্ট ডেলিভারি টাস্ক তৈরি করা
শিপমেন্ট ডেলিভারি করছেন এমন ড্রাইভারের অ্যাক্টিভিটি ফলো করতে Fleet Engine ব্যবহার করার জন্য,
শিপমেন্ট ডেলিভারি টাস্ক তৈরি করুন। এর মধ্যে টাস্কের ধরন সংক্রান্ত অ্যাট্রিবিউট DELIVERY-এ
সেট করা অন্তর্ভুক্ত। নিচের উদাহরণে ইন্দোনেশিয়া ইস্ট মলে
শিপমেন্ট ডেলিভারি দেখানো হয়েছে।
নিচের উদাহরণে দেখানো হয়েছে যে কীভাবে
[Java gRPC library][4] ব্যবহার করে শিপমেন্ট পিক-আপ টাস্ক তৈরি করতে হয় অথবা কীভাবে
[CreateTask][5]-এ HTTP REST অনুরোধ করতে হয়।
gRPC
static final String PROJECT_ID = "my-delivery-co-gcp-project";
DeliveryServiceBlockingStub deliveryService =
DeliveryServiceGrpc.newBlockingStub(channel);
// Task settings
String parent = "providers/" + PROJECT_ID;
Task task = Task.newBuilder()
.setType(Task.Type.DELIVERY)
.setState(Task.State.OPEN)
.setTrackingId("my-tracking-id")
.setPlannedLocation( // Grand Indonesia East Mall
LocationInfo.newBuilder().setPoint(
LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
.setTaskDuration(
Duration.newBuilder().setSeconds(2 * 60))
.setTargetTimeWindow(
TimeWindow.newBuilder()
.setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
.setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
.addAttributes(TaskAttribute.newBuilder().setKey("foo").setStringValue("value"))
.addAttributes(TaskAttribute.newBuilder().setKey("bar").setNumberValue(10))
.addAttributes(TaskAttribute.newBuilder().setKey("baz").setBoolValue(false))
.build();
// Task request
CreateTaskRequest createTaskRequest =
CreateTaskRequest.newBuilder() // No need for the header
.setParent(parent) // Avoid using auto-incrementing IDs for the taskId
.setTaskId("task-8241890") // Task ID assigned by the Provider
.setTask(task) // Initial state
.build();
// Error handling
// If Fleet Engine does not have task with that ID and the credentials of the
// requestor pass, the service creates the task successfully.
try {
Task createdTask = deliveryService.createTask(createTaskRequest);
} catch (StatusRuntimeException e) {
Status s = e.getStatus();
switch (s.getCode()) {
case ALREADY_EXISTS:
break;
case PERMISSION_DENIED:
break;
}
return;
}
REST
সার্ভার এনভায়রনমেন্ট থেকে শিপমেন্ট পিক-আপ টাস্ক তৈরি করতে, CreateTask-এ HTTP REST
কল করুন:
POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id><id> হল টাস্কের জন্য অনন্য শনাক্তকারী।
অনুরোধের হেডারে Authorization ফিল্ড থাকতে হবে যার ভ্যালু হল Bearer <token>, যেখানে <token> আপনার সার্ভার ইস্যু করেছে যা [পরিষেবা অ্যাকাউন্টের ভূমিকা][6] ও [JSON ওয়েব টোকেন][7]-এ বর্ণিত নির্দেশিকা অনুযায়ী করা হয়েছে।
অনুরোধের বডিতে অবশ্যই একটি Task এন্টিটি থাকতে হবে:
curl কমান্ডের উদাহরণ:
# Set $JWT, $PROJECT_ID, $TRACKING_ID, and $TASK_ID in the local
# environment
curl -X POST "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?taskId=${TASK_ID}" \
-H "Content-type: application/json" \
-H "Authorization: Bearer ${JWT}" \
--data-binary @- << EOM
{
"type": "DELIVERY",
"state": "OPEN",
"trackingId": "${TRACKING_ID}",
"plannedLocation": {
"point": {
"latitude": -6.195139,
"longitude": 106.820826
}
},
"taskDuration": "90s",
"targetTimeWindow": {
"startTime": "2023-03-29T21:00:00Z",
"endTime": "2023-03-29T23:00:00Z"
}
}
EOM
```placeidtrips1: /maps/documentation/mobility/fleet-engine/reference/tasks/rpc/maps.fleetengine.delivery.v1.html#locationinfo placeidtrips2: /maps/documentation/mobility/fleet-engine/reference/tasks/rest/v1/LocationInfo.html placeidtrips3: /maps/documentation/mobility/fleet-engine/reference/tasks/rpc/maps.fleetengine.delivery.v1.html#maps.fleetengine.delivery.v1.LocationInfo.FIELDS.string.maps.fleetengine.delivery.v1.LocationInfo.place placeidtrips4: /maps/documentation/mobility/fleet-engine/reference/tasks/rest/v1/LocationInfo.html#FIELDS.place
এর পরে কী করতে হবে
- [অন্যান্য ধরনের টাস্ক তৈরি করা][13]
- [টাস্ক আপডেট করুন][3]
[১]: /maps/documentation/mobility/fleet-engine/essentials/tasks-intro [২]: /maps/documentation/mobility/fleet-engine/journeys/tasks [৩]: update-tasks [৪]: /maps/documentation/mobility/fleet-engine/essentials/client-libraries-tasks#java [৫]: /maps/documentation/mobility/fleet-engine/reference/tasks/rest/v1/providers.tasks/create [৬]: /maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/service-accounts [৭]: /maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/jwt [৮]: /maps/documentation/mobility/fleet-engine/journeys/tasks/create-shipment-tasks#shipment_task_fields [১৩]: /maps/documentation/mobility/fleet-engine/journeys/tasks/create-other-tasks