শিপমেন্ট টাস্ক তৈরি করা

এই ডকুমেন্ট ধরে নেয় যে আপনি Fleet Engine-এর ভূমিকা বিভাগে [শিডিউল করা টাস্ক][1] সংক্রান্ত প্রাথমিক নির্দেশিকা এবং এই বিভাগে [শিডিউল করা টাস্ক কী?][2] পড়েছেন।

শিডিউল করা টাস্কের জন্য Fleet Engine বিভিন্ন ধরনের টাস্ক প্রদান করে:

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

আপনার সার্ভারে কীভাবে শিপমেন্ট টাস্ক তৈরি করবেন তা এই ডকুমেন্টে উল্লেখ করা আছে। অন্যান্য টাস্কের ধরনের জন্য, অন্যান্য টাস্কের ধরন তৈরি করুন দেখুন।

শিপমেন্ট টাস্ক ফিল্ড

এই বিভাগে পিক-আপ ও ডেলিভারি, উভয় টাস্কের জন্য প্রয়োজনীয় টাস্ক ফিল্ডের ডকুমেন্ট আছে।

টাস্কের প্রয়োজনীয় ফিল্ড

Fleet Engine-এ আপনার তৈরি করা প্রতিটি টাস্কের জন্য, আপনাকে অবশ্যই প্রয়োজনীয় ফিল্ডগুলি প্রদান করতে হবে এবং ঐচ্ছিক ফিল্ডগুলির যেকোনও একটি প্রদান করতে পারেন। Fleet Engine অন্য সব ফিল্ড উপেক্ষা করে এবং টাস্ক তৈরি করার অনুরোধে অ্যাসাইন করা deliveryVehicleId প্রদান করা হলে একটি ব্যতিক্রম থ্রো করে। কোনও গাড়িতে টাস্ক অ্যাসাইন করতে, UpdateDeliveryVehicleRequest ব্যবহার করুন। আরও তথ্যের জন্য, টাস্ক আপডেট করুন বিকল্প দেখুন।

ফিল্ডভ্যালু
type

টাস্কের ধরনের সাথে ম্যাচ করে এমন ধরন সেট করুন, যা এগুলির মধ্যে একটি:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
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-এ সেট করা অন্তর্ভুক্ত। নিম্নলিখিত উদাহরণে গ্র্যান্ড ইন্দোনেশিয়া ইস্ট মল থেকে শিপমেন্ট পিক-আপের বিষয়ে ব্যাখ্যা করা হয়েছে।

নিচের উদাহরণগুলি দেখায় যে কীভাবে [Java gRPC লাইব্রেরি][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;
  }

বিশ্রাম

সার্ভার এনভায়রনমেন্ট থেকে শিপমেন্ট পিক-আপ টাস্ক তৈরি করতে, CreateTask-এ HTTP REST কল করুন:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

<id> হল টাস্কের জন্য অনন্য শনাক্তকারী।

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

অনুরোধের মূল অংশে অবশ্যই উপযুক্ত ফিল্ড সহ একটি 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 লাইব্রেরি][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;
  }

বিশ্রাম

সার্ভার এনভায়রনমেন্ট থেকে শিপমেন্ট পিক-আপ টাস্ক তৈরি করতে, CreateTask-এ HTTP REST কল করুন:

POST https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks?taskId=<id>

<id> হল টাস্কের জন্য অনন্য শনাক্তকারী।

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

অনুরোধের প্রধান অংশে অবশ্যই একটি 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]

[1]: /maps/documentation/mobility/fleet-engine/essentials/tasks-intro [2]: /maps/documentation/mobility/fleet-engine/journeys/tasks [3]: update-tasks [4]: /maps/documentation/mobility/fleet-engine/essentials/client-libraries-tasks#java [5]: /maps/documentation/mobility/fleet-engine/reference/tasks/rest/v1/providers.tasks/create [6]: /maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/service-accounts [7]: /maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/jwt [8]: /maps/documentation/mobility/fleet-engine/journeys/tasks/create-shipment-tasks#shipment_task_fields [13]: /maps/documentation/mobility/fleet-engine/journeys/tasks/create-other-tasks