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

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

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

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

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

टारगेट टाइम विंडो सेट करना

टास्क पूरा करने के लिए तय की गई समयसीमा, 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>, टास्क का यूनीक आइडेंटिफ़ायर है. अनुरोध हेडर में, अनुमति फ़ील्ड होना चाहिए. इसकी वैल्यू 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, मैप पर शिपमेंट की डिलीवरी की जगह के लिए जगह के मार्कर दिखाता है. भले ही, डिलीवरी की स्थिति कुछ भी हो.

टास्क के डेटा को देखने के नियम

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

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

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

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

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

वाहन से जुड़े चालू टास्क दिखना

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

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