टास्क कॉन्फ़िगर करें

इस दस्तावेज़ में यह माना गया है कि आपको टास्क बनाने और उनका इस्तेमाल करने का तरीका पता है. इसमें, शिपमेंट वाले टास्क को इन तरीकों से कॉन्फ़िगर करने के बारे में खास उदाहरण दिए गए हैं:

  • शिपमेंट वाले टास्क के लिए, टारगेट समयावधि सेट करना: टास्क को पूरा करने के लिए, समयावधि सेट करना.

  • टास्क के दिखने की सेटिंग को पसंद के मुताबिक बनाना: ग्राहकों या फ़्लीट ऑपरेटरों को दिखाने के लिए, टास्क की गतिविधियों के दिखने की सेटिंग को पसंद के मुताबिक बनाना.

शिपमेंट वाले टास्क के फ़ील्ड के बारे में ज़्यादा जानकारी के लिए, शिपमेंट वाले टास्क बनाना लेख पढ़ें. मौजूदा टास्क के बारे में ज़्यादा जानकारी अपडेट करते समय, आपको टास्क के लिए अपडेट किए गए फ़ील्ड के अलावा, उससे जुड़ा आइडेंटिफ़ायर भी शामिल करना होगा.

टारगेट समयावधि सेट करना

टारगेट समयावधि, वह TimeWindow होती है जिसके दौरान टास्क पूरा किया जाना चाहिए. उदाहरण के लिए, अगर डिलीवरी पाने वाले लोगों को डिलीवरी की समयावधि के बारे में बताया जाता है, तो इस समयावधि को कैप्चर करने और अलर्ट जनरेट करने के लिए, टास्क की टारगेट समयावधि का इस्तेमाल किया जा सकता है. इसके अलावा, पिछली ट्रिप की परफ़ॉर्मेंस का विश्लेषण करने के लिए भी इसका इस्तेमाल किया जा सकता है.

टारगेट समयावधि में, शुरू होने और खत्म होने का समय शामिल होता है. इसे किसी भी तरह के टास्क के लिए सेट किया जा सकता है. टारगेट समयावधि से, रूटिंग के तरीके पर कोई असर नहीं पड़ता.

यहां दिए गए उदाहरणों में, Java gRPC लाइब्रेरी का इस्तेमाल करके समयावधि सेट करने या UpdateTask के लिए एचटीटीपी REST अनुरोध करने का तरीका बताया गया है. टास्क बनाते समय भी इस फ़ील्ड को सेट किया जा सकता है.

gRPC

  static final String PROJECT_ID = "my-delivery-co-gcp-project";
  static final String TASK_ID = "task-8241890";

  DeliveryServiceBlockingStub deliveryService =
    DeliveryServiceGrpc.newBlockingStub(channel);

  // Task settings
  String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
  Task task = Task.newBuilder()
    .setName(taskName)
    .setTargetTimeWindow(
      TimeWindow.newBuilder()
        .setStartTime(Timestamp.newBuilder().setSeconds(1680123600))
        .setEndTime(Timestamp.newBuilder().setSeconds(1680130800)))
    .build();

  // Task request
  UpdateTaskRequest updateTaskRequest =
    UpdateTaskRequest.newBuilder()  // No need for the header
        .setTask(task)
        .setUpdateMask(FieldMask.newBuilder().addPaths("targetTimeWindow"))
        .build();

  try {
    Task updatedTask = deliveryService.updateTask(updateTaskRequest);
  } catch (StatusRuntimeException e) {
    Status s = e.getStatus();
    switch (s.getCode()) {
       case NOT_FOUND:
         break;
       case PERMISSION_DENIED:
         break;
    }
    return;
  }

REST

एचटीटीपी का इस्तेमाल करके, टास्क की समयावधि सेट करने के लिए, PATCH को कॉल करें और targetTimeWindow पैरामीटर को अपडेट करने के लिए, updateMask का इस्तेमाल करें:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=targetTimeWindow

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

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
  curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=targetTimeWindow" \
    -H "Content-type: application/json" \
    -H "Authorization: Bearer ${JWT}" \
    --data-binary @- << EOM
  {
    "targetTimeWindow": {
      "startTime": "2023-03-29T21:00:00Z",
      "endTime": "2023-03-29T23:00:00Z"
    }
  }
  EOM

टास्क के दिखने की सेटिंग को पसंद के मुताबिक बनाना

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

इस सेक्शन में, मैप पर ट्रैक किए गए ऑब्जेक्ट के दिखने की सेटिंग के नियमों के बारे में बताया गया है. ये नियम, ऑब्जेक्ट की दो कैटगरी पर लागू होते हैं:

  • जगह के मार्कर के दिखने की सेटिंग
  • चालू वाहन के टास्क के लिए, टास्क डेटा के दिखने की सेटिंग. जैसे, पॉलीलाइन और पहुंचने का अनुमानित समय

जगह के मार्कर के दिखने की सेटिंग के नियम

Fleet Engine, मैप पर दिखाए गए शिपमेंट की डिलीवरी की जगह के लिए, जगह के मार्कर दिखाता है. भले ही, डिलीवरी की स्थिति कुछ भी हो.

टास्क डेटा के दिखने की सेटिंग के नियम

इस सेक्शन में, टास्क डेटा के लिए डिफ़ॉल्ट रूप से दिखने की सेटिंग के नियमों के बारे में बताया गया है. सिर्फ़ चालू वाहन के टास्क के लिए, दिखने की सेटिंग को पसंद के मुताबिक बनाया जा सकता है. इसका मतलब है कि सिर्फ़ पिकअप और ड्रॉप-ऑफ़ वाले टास्क के लिए, दिखने की सेटिंग को पसंद के मुताबिक बनाया जा सकता है.

इन टास्क के लिए, दिखने की सेटिंग को पसंद के मुताबिक नहीं बनाया जा सकता:

  • शेड्यूल किए गए स्टॉप
  • उपलब्ध न होने वाले टास्क
  • बंद किए गए वाहन के टास्क

उपलब्ध न होने वाले टास्क के दिखने की सेटिंग के नियम

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

चालू वाहन के टास्क के दिखने की सेटिंग

The TaskTrackingInfo ऑब्जेक्ट, कई डेटा एलिमेंट उपलब्ध कराता है. इन्हें शिपमेंट ट्रैकिंग लाइब्रेरी का इस्तेमाल करके दिखाया जा सकता है. डिफ़ॉल्ट रूप से, ये फ़ील्ड तब दिखते हैं, जब टास्क को वाहन के लिए असाइन किया जाता है और जब वाहन, टास्क की जगह से पांच स्टॉप की दूरी पर होता है. टास्क पूरा होने या रद्द होने पर, दिखने की सेटिंग बंद हो जाती है.

Fleet Engine में टास्क बनाते या अपडेट करते समय, टास्क के लिए TaskTrackingViewConfig सेट करके, हर टास्क के लिए दिखने की सेटिंग को पसंद के मुताबिक बनाया जा सकता है. इससे, अलग-अलग डेटा एलिमेंट के उपलब्ध होने के लिए नियम बनते हैं.

यहां दी गई टेबल में, उन फ़ील्ड के बारे में बताया गया है जिन पर दिखने की सेटिंग के नियम लागू किए जा सकते हैं.

दिखने की सेटिंग के नियमों के लिए, वाहन के टास्क के फ़ील्ड
  • रास्ते की पॉलीलाइन
  • पहुंचने का अनुमानित समय
  • टास्क पूरा होने का अनुमानित समय
  • टास्क की जगह तक ड्राइविंग की बाकी बची दूरी
  • बाकी बचे स्टॉप की संख्या
  • वाहन की जगह

इस टेबल में, ऊपर बताए गए फ़ील्ड के लिए, दिखने की सेटिंग के उपलब्ध विकल्पों के बारे में बताया गया है.

दिखने की सेटिंग के विकल्प
  • बाकी बचे स्टॉप की संख्या
  • पहुंचने के अनुमानित समय तक की अवधि
  • ड्राइविंग की बाकी बची दूरी
  • हमेशा दिखेगा
  • कभी नहीं दिखेगा

रास्ते की पॉलीलाइन और वाहन की जगह के दिखने की सेटिंग के नियम

ट्रैक किए जा रहे रास्ते के लिए, रास्ते की पॉलीलाइन के दिखने की सेटिंग, वाहन के दिखने की सेटिंग पर निर्भर करती है. अगर किसी चालू रास्ते पर, रास्ते की पॉलीलाइन दिख रही है लेकिन वाहन नहीं दिख रहा है, तो भी दिखने वाली पॉलीलाइन के आखिर से वाहन की जगह का अनुमान लगाया जा सकता है. इसलिए, रास्ते की पॉलीलाइन के दिखने की सेटिंग, वाहन के दिखने की सेटिंग से ज़्यादा पाबंदी वाली या उसके बराबर होनी चाहिए.

रास्ते की पॉलीलाइन / वाहन की जगह के दिखने की सेटिंग का मान्य कॉम्बिनेशन उपलब्ध कराने के लिए, इन नियमों का पालन करें.

रास्ते की पॉलीलाइन और वाहन की जगह के लिए, दिखने की सेटिंग के एक जैसे विकल्प सेट करना

इस स्थिति में, पॉलीलाइन और वाहन की जगह, दोनों के लिए एक जैसे विकल्प सेट किए जाते हैं. इनमें ये शामिल हैं:

  • बाकी बचे स्टॉप की संख्या
  • पहुंचने के अनुमानित समय तक की अवधि
  • ड्राइविंग की बाकी बची दूरी

नियमों का पालन करने के लिए, रास्ते की पॉलीलाइन के दिखने की सेटिंग की वैल्यू, वाहन के दिखने की सेटिंग के लिए सेट की गई वैल्यू से कम या उसके बराबर होनी चाहिए. इस उदाहरण में, पॉलीलाइन के लिए बाकी बचे स्टॉप की थ्रेशोल्ड वैल्यू 3 पर सेट की गई है, जो वाहन के लिए तय की गई वैल्यू 5 से कम है. इसका मतलब है कि ट्रैक की जा रही यात्रा, टास्क की जगह से पांच स्टॉप की दूरी पर पहुंचने पर, वाहन दिखता है. हालांकि, उस वाहन का रास्ता तब तक नहीं दिखता, जब तक यात्रा तीन स्टॉप की दूरी पर नहीं पहुंच जाती.

```js
"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "vehicleLocationVisibility": {
    "remainingStopCountThreshold": 5
  },
}
```

रास्ते की पॉलीलाइन और वाहन की जगह के लिए, दिखने की सेटिंग के अलग-अलग विकल्प सेट करना

जब रास्ते की पॉलीलाइन और वाहन की जगह के लिए, दिखने की सेटिंग के अलग-अलग विकल्प सेट किए जाते हैं, तो वाहन की जगह सिर्फ़ तब दिखती है, जब उसके दिखने की सेटिंग के दोनों विकल्प पूरे होते हैं. हालांकि, पॉलीलाइन के दिखने की सेटिंग, वाहन के दिखने की सेटिंग के नियमों पर निर्भर करती है:

  • हमेशा दिखेगा: जब वाहन की जगह के लिए, हमेशा दिखेगा विकल्प सेट किया जाता है, तो रास्ते की पॉलीलाइन के लिए भी हमेशा दिखेगा विकल्प सेट करना ज़रूरी है.
  • कभी नहीं दिखेगा: जब वाहन की जगह के लिए, कभी नहीं दिखेगा विकल्प सेट किया जाता है, तो रास्ते की पॉलीलाइन के लिए भी कभी नहीं दिखेगा विकल्प सेट करना ज़रूरी है.

यहां एक उदाहरण दिया गया है:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

इस उदाहरण में, वाहन की जगह सिर्फ़ तब दिखती है, जब बाकी बचे स्टॉप की संख्या कम से कम तीन हो और ड्राइविंग की बाकी बची दूरी कम से कम 3,000 मीटर हो.

टास्क के दिखने की सेटिंग को पसंद के मुताबिक बनाने का उदाहरण

यहां दिए गए उदाहरणों में, दिखने की सेटिंग के इन नियमों के साथ टास्क सेट करने का तरीका बताया गया है:

  • अगर वाहन, तीन स्टॉप की दूरी पर है, तो रास्ते की पॉलीलाइन दिखाएं.
  • अगर ड्राइविंग की बाकी बची दूरी 5,000 मीटर से कम है, तो पहुंचने का अनुमानित समय दिखाएं.
  • बाकी बचे स्टॉप की संख्या कभी न दिखाएं.
  • अन्य हर फ़ील्ड के लिए, डिफ़ॉल्ट रूप से दिखने की सेटिंग बनी रहती है. इसका मतलब है कि जब वाहन, टास्क की जगह से पांच स्टॉप की दूरी पर होता है, तब ये फ़ील्ड दिखते हैं.

gRPC या REST के लिए, TaskTrackingViewConfig देखें.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TASK_ID = "task-8241890";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Task settings
String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
Task task = Task.newBuilder()
  .setName(taskName)
  .setTaskTrackingViewConfig(
    TaskTrackingViewConfig.newBuilder()
      .setRoutePolylinePointsVisibility(
        VisibilityOption.newBuilder().setRemainingStopCountThreshold(3))
      .setEstimatedArrivalTimeVisibility(
        VisibilityOption.newBuilder().remainingDrivingDistanceMetersThreshold(5000))
      .setRemainingStopCountVisibility(
        VisibilityOption.newBuilder().setNever(true)))
  .build();

// Task request
UpdateTaskRequest updateTaskRequest =
  UpdateTaskRequest.newBuilder()  // No need for the header
      .setTask(task)
      .setUpdateMask(FieldMask.newBuilder().addPaths("taskTrackingViewConfig"))
      .build();

try {
  Task updatedTask = deliveryService.updateTask(updateTaskRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
      case NOT_FOUND:
        break;
      case PERMISSION_DENIED:
        break;
  }
  return;
}

REST

एचटीटीपी का इस्तेमाल करके, टास्क ट्रैकिंग व्यू कॉन्फ़िगरेशन विंडो सेट करने के लिए, PATCH को कॉल करें और taskTrackingViewConfig पैरामीटर को अपडेट करने के लिए, updateMask का इस्तेमाल करें:

PATCH https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<id>?updateMask=taskTrackingViewConfig

उदाहरण के लिए:

# Set JWT, PROJECT_ID, and TASK_ID in the local environment
curl -X PATCH "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}?updateMask=taskTrackingViewConfig" \
  -H "Content-type: application/json" \
  -H "Authorization: Bearer ${JWT}" \
  --data-binary @- << EOM
{
  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "estimatedArrivalTimeVisibility": {
      "remainingDrivingDistanceMetersThreshold": 5000
    },
    "remainingStopCountVisibility": {
      "never": true
    }
  }
}
EOM

आगे क्या करना है