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

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

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

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

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

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

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

आराम का समय

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

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

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

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

  • शेड्यूल किए गए स्टॉप
  • उपलब्धता से जुड़े टास्क
  • वाहन से जुड़े इनऐक्टिव टास्क

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

रास्ते की पॉलीलाइन और वाहन की जगह की जानकारी से पता चलता है कि अलग-अलग लोगों को क्या-क्या दिख सकता है

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

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

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

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

इस उदाहरण में, वाहन की जगह की जानकारी सिर्फ़ तब दिखेगी, जब स्टॉप की बची हुई संख्या कम से कम 3 AND ड्राइविंग की बची हुई दूरी कम से कम 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

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