शिपमेंट टास्क बनाना

इस दस्तावेज़ में यह माना गया है कि आपने Fleet Engine के बारे में जानकारी सेक्शन में, [शेड्यूल किए गए टास्क][1] के बारे में शुरुआती गाइड पढ़ ली है. साथ ही, इस सेक्शन में [शेड्यूल किया गया टास्क क्या होता है?][2] के बारे में भी पढ़ लिया है.

शेड्यूल किए गए टास्क के लिए Fleet Engine, टास्क की अलग-अलग कैटगरी उपलब्ध कराता है:

  • शिपमेंट टास्क: इनका इस्तेमाल, ड्राइविंग टास्क के लिए करें. इनमें शिपमेंट को पिकअप और डिलीवर करना शामिल है.
  • उपलब्ध न होने से जुड़े टास्क: इनका इस्तेमाल तब करें, जब ड्राइवर उपलब्ध न हों. जैसे, ज़रूरी ब्रेक के दौरान.
  • शेड्यूल किए गए स्टॉप टास्क: इनका इस्तेमाल, ड्रॉप बॉक्स या ग्राहक की जगहों पर ड्राइविंग के अलावा अन्य टास्क के लिए करें. जैसे, किसी इमारत में जाने या डिलीवरी पॉइंट का पता लगाने में लगने वाला समय.

इस दस्तावेज़ में, आपके सर्वर पर शिपमेंट टास्क बनाने का तरीका बताया गया है. अन्य तरह के टास्क के लिए, अन्य तरह के टास्क बनाना लेख पढ़ें.

शिपमेंट टास्क के फ़ील्ड

इस सेक्शन में, पिकअप और डिलीवरी, दोनों टास्क के लिए ज़रूरी टास्क फ़ील्ड की जानकारी दी गई है.

टास्क के लिए ज़रूरी फ़ील्ड

Fleet Engine में बनाए जाने वाले हर टास्क के लिए, आपको ज़रूरी फ़ील्ड भरने होंगे. इसके अलावा, आपके पास वैकल्पिक फ़ील्ड भरने का विकल्प भी होता है. Fleet Engine, अन्य सभी फ़ील्ड को अनदेखा कर देता है. साथ ही, अगर टास्क बनाने के अनुरोध में असाइन किया गया deliveryVehicleId दिया जाता है, तो वह अपवाद दिखाता है. किसी वाहन को टास्क असाइन करने के लिए, UpdateDeliveryVehicleRequest का इस्तेमाल करें. ज़्यादा जानकारी के लिए, टास्क अपडेट करना लेख पढ़ें.

फ़ील्डवैल्यू
type

इसे टास्क के टाइप से मैच होने वाले टाइप पर सेट करें. इनमें से कोई एक टाइप चुनें:

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id यूनीक टास्क आईडी. यह शिपमेंट का ट्रैकिंग नंबर नहीं होना चाहिए. अगर आपके सिस्टम में टास्क आईडी नहीं हैं, तो आपके पास यूनीक आइडेंटिफ़ायर (यूयूआईडी) जनरेट करने का विकल्प है. ज़्यादा जानकारी के लिए, टास्क आईडी देखें.
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] को एचटीटीपी 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 पर एचटीटीपी REST कॉल करें:

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

<id>, टास्क के लिए यूनीक आइडेंटिफ़ायर है.

अनुरोध के हेडर में, अनुमति फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. यहां <token> को आपके सर्वर ने जारी किया है. यह [सेवा खाते की भूमिकाएं][6] और [JSON वेब टोकन][7] में बताए गए दिशा-निर्देशों के मुताबिक होना चाहिए.

अनुरोध के मुख्य हिस्से में, Task इकाई होनी चाहिए. साथ ही, इसमें [शिपमेंट टास्क के फ़ील्ड][8] में बताए गए सही फ़ील्ड होने चाहिए.

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] को एचटीटीपी 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 पर एचटीटीपी REST कॉल करें:

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

<id>, टास्क के लिए यूनीक आइडेंटिफ़ायर है.

अनुरोध के हेडर में, अनुमति फ़ील्ड होना चाहिए. इसकी वैल्यू 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]

[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