टास्क ढूंढें

इस दस्तावेज़ में, किसी सर्वर या ब्राउज़र से टास्क की जानकारी पाने के तरीकों के बारे में बताया गया है. Fleet Engine में टास्क ढूंढने के दो तरीके हैं:

  • टास्क खोजना: टास्क को इन आईडी से खोजा जा सकता है:

    • टास्क आईडी: इसका इस्तेमाल, फ़्लीट ऑपरेटर जैसे उपयोगकर्ता करते हैं. इनके पास टास्क के डेटा के पूरे व्यू का ऐक्सेस होता है.
    • ट्रैकिंग आईडी: इसका इस्तेमाल आपके क्लाइंट सॉफ़्टवेयर में, असली उपयोगकर्ता को सीमित जानकारी देने के लिए किया जाता है. जैसे, उनके घर पर पैकेज कब पहुंचेगा.

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

  • टास्क की सूची: टास्क का ज़्यादा ऐक्सेस, सिर्फ़ भरोसेमंद उपयोगकर्ताओं के लिए.

टास्क देखना

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

  • ट्रैकिंग आईडी के हिसाब से लुकअप, ट्रैक किए गए ऑब्जेक्ट के लिए दिखने के नियम में बताए गए नियमों का पालन करते हैं.

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

टास्क आईडी से टास्क देखना

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

gRPC

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

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Task request
 String taskName = "providers/" + PROJECT_ID + "/tasks/" + TASK_ID;
 GetTaskRequest getTaskRequest = GetTaskRequest.newBuilder()  // No need for the header
     .setName(taskName)
     .build();

 try {
   Task task = deliveryService.getTask(getTaskRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks/<taskId>

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

curl निर्देश का उदाहरण:

    # Set JWT, PROJECT_ID, and TASK_ID in the local environment
    curl -H "Authorization: Bearer ${JWT}" \
      "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks/${TASK_ID}"

ट्रैकिंग आईडी के हिसाब से टास्क देखना

यहां दिए गए उदाहरणों में, GetTaskTrackingInfo पर gRPC या HTTP REST कॉल का इस्तेमाल करके, शिपमेंट ट्रैकिंग आईडी के हिसाब से टास्क देखने का तरीका बताया गया है.

gRPC

static final String PROJECT_ID = "my-delivery-co-gcp-project";
static final String TRACKING_ID = "TID-7449w087464x5";

DeliveryServiceBlockingStub deliveryService =
  DeliveryServiceGrpc.newBlockingStub(channel);

// Tasks request
String parent = "providers/" + PROJECT_ID;
GetTaskTrackingInfoRequest getTaskTrackingInfoRequest = GetTaskTrackingInfoRequest.newBuilder()  // No need for the header
    .setParent(parent)
    .setTrackingId(TRACKING_ID)
    .build();

try {
  TaskTrackingInfo taskTrackingInfo = deliveryService.getTaskTrackingInfo(getTaskTrackingInfoRequest);
} catch (StatusRuntimeException e) {
  Status s = e.getStatus();
  switch (s.getCode()) {
     case NOT_FOUND:
       break;

     case PERMISSION_DENIED:
       break;
  }
  return;
}

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/taskTrackingInfo/<tracking_id>

  • <tracking_id>, टास्क से जुड़ा ट्रैकिंग आईडी है.

  • अनुरोध हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. इसमें <token> में सेवा खाते की सही भूमिका होनी चाहिए. सेवा खाते की भूमिकाएं देखें.

  • अगर लुकअप पूरा हो जाता है, तो जवाब के मुख्य हिस्से में taskTrackingInfo इकाई शामिल होती है.

curl निर्देश का उदाहरण:

# Set JWT, PROJECT_ID, and TRACKING_ID in the local environment
curl -H "Authorization: Bearer ${JWT}" \
  "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/taskTrackingInfo/${TRACKING_ID}"

टास्क की सूची

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

सूचियों को पेज में बांटना

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

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

टास्क की सूची बनाते समय दिखने वाले फ़ील्ड

टास्क की सूची बनाते समय, Fleet Engine इन फ़ील्ड की जानकारी छिपा देता है:

  • VehicleStop.planned_location
  • VehicleStop.state
  • VehicleStop.TaskInfo.taskId

Google API को बेहतर बनाने के प्रस्तावों के आधार पर, इन फ़ील्ड फ़ॉर्मैट का इस्तेमाल करें:

फ़ील्ड प्रकार फ़ॉर्मैट उदाहरण
टाइमस्टैंप RFC-3339 task_outcome_time = 2022-03-01T11:30:00-08:00
कुल समय सेकंड की संख्या, जिसके बाद s हो task_duration = 120s
Enum स्ट्रिंग state = CLOSED AND type = PICKUP
जगह point.latitude और point.longitude planned_location.point.latitude > 36.1 AND planned_location.point.longitude < -122.0

सूची में मौजूद टास्क फ़िल्टर करना

सूची में मौजूद टास्क को, टास्क की ज़्यादातर प्रॉपर्टी के हिसाब से फ़िल्टर किया जा सकता है. फ़िल्टर क्वेरी के सिंटैक्स के बारे में जानने के लिए, AIP-160 देखें. अगर कोई फ़िल्टर क्वेरी नहीं दी गई है, तो सभी टास्क सूची में दिखते हैं.

नीचे दी गई टेबल में, टास्क की मान्य प्रॉपर्टी दी गई हैं. इनका इस्तेमाल फ़िल्टर करने के लिए किया जा सकता है:

सूचियों को फ़िल्टर करने के लिए टास्क प्रॉपर्टी
  • type
  • attributes
  • tracking_id
  • delivery_vehicle_id
  • state
  • planned_location
  • task_duration
  • task_duration_outcome
  • task_outcome
  • task_outcome_location
  • task_outcome_time

फ़िल्टर क्वेरी ऑपरेटर की पूरी सूची के लिए, AIP-160 देखें.

टास्क के उदाहरणों की सूची

यहां दिए गए उदाहरण में, Java gRPC लाइब्रेरी और ListTasks के एचटीटीपी REST कॉल, दोनों के साथ deliveryVehicleId और टास्क एट्रिब्यूट के लिए टास्क की सूची बनाने का तरीका बताया गया है.

हालांकि, जवाब मिलने के बावजूद वह खाली हो सकता है. खाली रिस्पॉन्स का मतलब है कि दिए गए deliveryVehicleId से कोई टास्क नहीं जुड़ा है.

gRPC

 static final String PROJECT_ID = "my-delivery-co-gcp-project";
 static final String TRACKING_ID = "TID-7449w087464x5";

 DeliveryServiceBlockingStub deliveryService =
   DeliveryServiceGrpc.newBlockingStub(channel);

 // Tasks request
 String parent = "providers/" + PROJECT_ID;
 ListTasksRequest listTasksRequest = ListTasksRequest.newBuilder()  // No need for the header
     .setParent(parent)
     .setFilter("delivery_vehicle_id = 123 AND attributes.foo = true")
     .build();

 try {
   ListTasksResponse listTasksResponse = deliveryService.listTasks(listTasksRequest);
 } catch (StatusRuntimeException e) {
   Status s = e.getStatus();
   switch (s.getCode()) {
      case NOT_FOUND:
        break;

      case PERMISSION_DENIED:
        break;
   }
   return;
 }

REST

GET https://fleetengine.googleapis.com/v1/providers/<project_id>/tasks

सूची में मौजूद टास्क पर फ़िल्टर लागू करने के लिए, "फ़िल्टर" यूआरएल पैरामीटर शामिल करें. इसकी वैल्यू के तौर पर, यूआरएल-एस्केप की गई फ़िल्टर क्वेरी शामिल करें.

अनुरोध हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू Bearer <token> होनी चाहिए. इसमें <token> में सेवा खाते की सही भूमिका होनी चाहिए. सेवा खाते की भूमिकाएं देखें.

लुकअप के सही तरीके से काम करने पर, रिस्पॉन्स बॉडी का स्ट्रक्चर इस तरह का होता है:

    // JSON representation
    {
      "tasks": [
        {
          object (Task)
        }
      ],
      "nextPageToken": string,
      "totalSize": integer
    }

curl निर्देश का उदाहरण:

 # Set JWT, PROJECT_ID, and VEHICLE_ID in the local environment
 curl -H "Authorization: Bearer ${JWT}" \
   "https://fleetengine.googleapis.com/v1/providers/${PROJECT_ID}/tasks?filter=state%20%3D%20OPEN%20AND%20delivery_vehicle_id%20%3D%20${VEHICLE_ID}"

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