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

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

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

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

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

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

टारगेट टाइम विंडो, 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

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

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

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

जगह की जानकारी वाले मार्कर के दिखने के नियम

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

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

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

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

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

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

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

गाड़ी से जुड़े टास्क देखने की सुविधा

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

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

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

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

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

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

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

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

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

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

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

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

नियमों का पालन करने के लिए, रूट पॉलीलाइन दिखने की वैल्यू कम होनी चाहिए वाहन के दिखने के लिए सेट की गई वैल्यू से ज़्यादा या उसके बराबर होना चाहिए. इस उदाहरण में, पॉलीलाइन के लिए बचा हुआ स्टॉप थ्रेशोल्ड 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;
}

आराम

एचटीटीपी का इस्तेमाल करके, टास्क ट्रैकिंग व्यू कॉन्फ़िगरेशन विंडो सेट करने के लिए, 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

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