अन्य टास्क टाइप बनाना

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

शेड्यूल किए गए टास्क के लिए फ़्लीट इंजन में, टास्क की अलग-अलग कैटगरी मौजूद हैं:

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

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

ऐसे टास्क के लिए टास्क फ़ील्ड जो ड्राइविंग नहीं करते

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

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

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

फ़ील्डमान
type

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

  • PICKUP
  • DELIVERY
  • SCHEDULED_STOP
  • UNAVAILABLE
state State.OPEN
task_id यूनीक टास्क आईडी. यह शिपमेंट का ट्रैकिंग नंबर नहीं होना चाहिए. अगर आपको के पास आपके सिस्टम में टास्क आईडी नहीं हैं, तो आप हर उपयोगकर्ता के लिए आइडेंटिफ़ायर (यूयूआईडी). खास जानकारी के लिए, यह देखें टास्क आईडी.
tracking_id सिर्फ़ PICKUP या DELIVERY टास्क: वह संख्या या आइडेंटिफ़ायर जिसका इस्तेमाल किसी शिपमेंट को ट्रैक करने के लिए किया जा रहा है. ऐसा न करें गैर-शिपमेंट टास्क के लिए यह फ़ील्ड दें.
plannedLocation PICKUP, DELIVERY या सिर्फ़ SCHEDULED_STOP टास्क: वह जगह जहां टास्क पूरा करना है. इसके लिए ज़रूरी नहीं है UNAVAILABLE टास्क.
taskDuration टास्क को पूरा करने में लगने वाला अनुमानित समय. उदाहरण के लिए, अगर पार्किंग के लिए या हैंडऑफ़ वाली जगह तक चलकर जाएं.

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

फ़ील्डमान
targetTimeWindow टास्क को पूरा करने के लिए तय की गई समयावधि. यह फ़ील्ड रूटिंग के व्यवहार पर कोई असर नहीं पड़ता.
task_tracking_view_config सिर्फ़ PICKUP या DELIVERY टास्क: टास्क ट्रैकिंग का कॉन्फ़िगरेशन, जो तय करता है कि कौनसे डेटा एलिमेंट असली उपयोगकर्ताओं को किन परिस्थितियों में देखा जा सकता है.
attributes कस्टम टास्क एट्रिब्यूट की सूची. हर एट्रिब्यूट की एक खास कुंजी होनी चाहिए.

टास्क उपलब्ध न होने पर टास्क बनाएं

आपके पास ऐसा टास्क बनाने की सुविधा है जो खरीदारी के लिए उपलब्ध न होने की जानकारी देता हो; उदाहरण के लिए, ड्राइवर ब्रेक के लिए. कोई टास्क उपलब्ध न होने पर उसे बनाने के लिए, इन दिशा-निर्देशों का पालन करें:

  • टास्क के टाइप को UNAVAILABLE पर सेट करें.
  • ट्रैकिंग आईडी शामिल न करें.
  • हालांकि, आपको उस टास्क के लिए जगह की जानकारी देने की ज़रूरत नहीं है जो उपलब्ध नहीं है, ऐसा करने से पूरे दिन बेहतर ईटीए कैलकुलेशन मिलते हैं.

वाहन किस जगह पर है, यह दिखाने के लिए खास तौर पर लागू होने वाले नियम लागू होते हैं यात्रा शेयर करने के लिए UNAVAILABLE टास्क.

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

यहां दिए गए उदाहरणों में बताया गया है कि Java gRPC लाइब्रेरी या एचटीटीपी REST अनुरोध करने का तरीका CreateTask.

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.UNAVAILABLE)
    .setState(Task.State.OPEN)
    .setTaskDuration(
      Duration.newBuilder().setSeconds(60 * 60))  // 1hr break
    .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;
  }
  ```

आराम

सर्वर एनवायरमेंट से कोई ऐसा टास्क बनाने के लिए जो उपलब्ध नहीं है, एचटीटीपी REST बनाएं CreateTask को किया गया कॉल:

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

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

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

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

curl कमांड का उदाहरण:

 # Set $JWT, $PROJECT_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": "UNAVAILABLE",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "300s"
 }
 EOM

शेड्यूल किया गया स्टॉप टास्क बनाना

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

  • टास्क के टाइप को
  • ट्रैकिंग आईडी शामिल न करें.
  • आपके पास जगह की जानकारी देने का विकल्प भी होता है.

यहां दिए गए उदाहरणों में बताया गया है कि Java gRPC लाइब्रेरी या एचटीटीपी REST अनुरोध करने का तरीका CreateTask.

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.SCHEDULED_STOP)
    .setState(Task.State.OPEN)
    .setPlannedLocation(               // Grand Indonesia East Mall
      LocationInfo.newBuilder().setPoint(
        LatLng.newBuilder().setLatitude(-6.195139).setLongitude(106.820826)))
    .setTaskDuration(
      Duration.newBuilder().setSeconds(2 * 60))
    .build();

  // Task request
  CreateTaskRequest createTaskRequest =
    CreateTaskRequest.newBuilder()  // No need for the header
        .setParent(parent)
        .setTaskId("task-8241890")  // Task ID assigned by the Provider
        .setTrip(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;
  }
  ```

आराम

सर्वर एनवायरमेंट से शेड्यूल किया गया स्टॉप टास्क बनाने के लिए, एचटीटीपी REST बनाएं CreateTask को किया गया कॉल:

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

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

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

अनुरोध के मुख्य हिस्से में Task इकाई होनी चाहिए:

curl कमांड का उदाहरण:

# Set $JWT, $PROJECT_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": "SCHEDULED_STOP",
   "state": "OPEN",
   "plannedLocation": {
      "point": {
         "latitude": -6.195139,
         "longitude": 106.820826
      }
   },
   "taskDuration": "600s"
 }
 EOM

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