टास्क ढूंढें

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

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

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

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

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

टास्क देखना

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

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

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

टास्क आईडी के हिसाब से टास्क खोजना

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

आराम का समय

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}"

ट्रैकिंग आईडी से टास्क खोजना

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

आराम का समय

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}"

टास्क की सूची बनाएं

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

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

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

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

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

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

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

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

फ़ील्ड प्रकार फ़ॉर्मैट उदाहरण
टाइमस्टैम्प 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 देखें.

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

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

ऐसा हो सकता है कि सही जवाब मिलने के बाद भी, फ़ील्ड खाली रहे. खाली जवाब का मतलब है कि दिए गए 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;
 }

आराम का समय

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

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

अनुरोध के हेडर में, 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}"

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