टास्क ढूंढें

इस दस्तावेज़ में, सर्वर या ब्राउज़र से टास्क की जानकारी पाने के तरीकों के बारे में बताया गया है. 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;
 }

REST

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

  • <id> टास्क के लिए यूनीक आइडेंटिफ़ायर है.
  • <taskId> उस टास्क का आईडी है जिसे ढूंढना है.
  • अनुरोध के हेडर में, Authorization फ़ील्ड होना चाहिए. इसकी वैल्यू 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;
}

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 देखें.

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

यहां दिए गए उदाहरण में, deliveryVehicleId और टास्क के एट्रिब्यूट के लिए टास्क की सूची देखने का तरीका बताया गया है. इसके लिए, Java gRPC library और 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;
 }

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

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