Route Optimization API सेट अप करना

इस दस्तावेज़ में, Route Optimization API का इस्तेमाल शुरू करने का तरीका बताया गया है.

ज़रूरी शर्तें

इस प्रोसेस में, आपको Google Cloud खाता और बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट सेट अप करने का तरीका बताया गया है. आपको यह भी पता होना चाहिए कि Route Optimization API का इस्तेमाल करने पर, आपसे शुल्क कैसे लिया जाता है.

  1. Route Optimization API के इस्तेमाल और बिलिंग पर जाकर, इसके इस्तेमाल के लिए बिलिंग और शुल्क की जानकारी देखें.
  2. पुष्टि करें कि आपके पास Google Cloud खाता है.

    Google Cloud Console में साइन इन करना
  3. पुष्टि करें कि आपके पास बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट है.

    बिलिंग पेज पर जाएं
    1. बिलिंग पेज खोलने के लिए, अपना प्रोजेक्ट चुनें.
    2. बिलिंग पेज पर:

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

एपीआई को चालू करना

Route Optimization API का इस्तेमाल करने से पहले, आपको Google Cloud console या gcloud कमांड का इस्तेमाल करके, इसे अपने Google Cloud प्रोजेक्ट में चालू करना होगा.

एपीआई को चालू करने के लिए:

कंसोल

  1. Google Cloud Console में प्रॉडक्ट पेज खोलें:

    Route Optimization API को चालू करना
  2. चालू करें बटन पर क्लिक करें.

gcloud

gcloud services enable \
    --project "PROJECT" \
    "routeoptimization.googleapis.com"

Google Cloud SDK, Cloud SDK को इंस्टॉल करने, और इन निर्देशों के बारे में ज़्यादा जानें:

Google Maps Platform के प्रॉडक्ट के लिए, एपीआई कॉल में OAuth टोकन शामिल करना ज़रूरी है. इससे, बिना अनुमति के इस्तेमाल को रोका जा सकता है.

OAuth टोकन बनाना

Route Optimization API, पुष्टि करने के लिए OAuth 2.0 का इस्तेमाल करता है. Google, OAuth 2.0 के सामान्य मामलों के साथ काम करता है. जैसे, वेब सर्वर के मामले.

इस दस्तावेज़ में, आपके डेवलपमेंट एनवायरमेंट में Route Optimization API कॉल को OAuth टोकन पास करने का तरीका बताया गया है. प्रोडक्शन एनवायरमेंट में OAuth का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, Google पर पुष्टि करने के तरीके देखें.

सर्वर को एपीआई अनुरोध भेजकर, Google Maps API को सीधे कॉल किया जा सकता है. इसके अलावा, अपने कोड को आसान बनाने के लिए, क्लाइंट लाइब्रेरी का इस्तेमाल किया जा सकता है. Google Maps, Go, Java, Node.js, और Python के लिए क्लाइंट लाइब्रेरी उपलब्ध कराता है. ज़्यादा जानकारी के लिए, Route Optimization API की क्लाइंट लाइब्रेरी देखें.

OAuth के बारे में खास जानकारी

डिप्लॉयमेंट एनवायरमेंट के आधार पर, OAuth की मदद से ऐक्सेस टोकन बनाने और उन्हें मैनेज करने के कई तरीके हैं.

अपने ऐप्लिकेशन और Google की किसी सेवा के बीच सर्वर-टू-सर्वर इंटरैक्शन के लिए, OAuth 2.0 का इस्तेमाल किया जा सकता है. इस मामले में, आपको किसी उपयोगकर्ता के बजाय, अपने ऐप्लिकेशन से जुड़े सेवा खाते का इस्तेमाल करना होगा. सेवा खाते का इस्तेमाल करके, उपयोगकर्ताओं को सीधे तौर पर शामिल किए बिना एपीआई अनुरोध किए जा सकते हैं. पुष्टि करने के तरीकों के बारे में ज़्यादा जानने के लिए, Google पर पुष्टि करने के तरीके लेख पढ़ें.

इसके अलावा, Route Optimization API को Android या iOS मोबाइल ऐप्लिकेशन में इंटिग्रेट किया जा सकता है. अलग-अलग डिप्लॉयमेंट एनवायरमेंट के लिए, OAuth का इस्तेमाल करने और ऐक्सेस टोकन मैनेज करने के बारे में ज़्यादा जानने के लिए, Google API को ऐक्सेस करने के लिए OAuth 2.0 का इस्तेमाल करना लेख पढ़ें.

OAuth के दायरे

Route Optimization API के साथ OAuth का इस्तेमाल करने के लिए, आपको OAuth टोकन को यह दायरा असाइन करना होगा:

https://www.googleapis.com/auth/cloud-platform

भूमिकाएं कॉन्फ़िगर करना

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

जब कोई प्रिंसिपल (कोई उपयोगकर्ता, ग्रुप या सेवा खाता) किसी Google Cloud API को कॉल करता है, तो उस प्रिंसिपल के पास संसाधन का इस्तेमाल करने के लिए, आईएएम की ज़रूरी अनुमतियां होनी चाहिए. किसी मुख्य खाते को ज़रूरी अनुमतियां देने के लिए, उसे आईएएम की भूमिका असाइन करें.

Google Cloud में ऐक्सेस मैनेज करने के बारे में ज़्यादा जानने के लिए, आईएएम की खास जानकारी देखें.

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

  • Route Optimization Editor (roles/routeoptimization.editor): इससे उपयोगकर्ता या सेवा खाते को, प्रोजेक्ट में रूट ऑप्टिमाइज़ेशन के संसाधनों को पढ़ने और उनमें बदलाव करने का ऐक्सेस मिलता है. इसमें OptimizeTours और BatchOptimizeTours को कॉल करने की सुविधा शामिल है. साथ ही, GetOperation का इस्तेमाल करके, लंबे समय से चल रहे ऑपरेशन को वापस पाने की सुविधा भी शामिल है.
  • Route Optimization Viewer (roles/routeoptimization.viewer): यह प्रोजेक्ट में Route Optimization के संसाधनों को सिर्फ़ पढ़ने का ऐक्सेस देता है. इस भूमिका की मदद से, OptimizeTours को कॉल किया जा सकता है. साथ ही, GetOperation का इस्तेमाल करके, लंबे समय तक चलने वाले ऑपरेशन को ऐक्सेस किया जा सकता है.
Cloud SDK का इस्तेमाल करके, किसी प्रिंसिपल के लिए बाइंडिंग बनाकर उसे कोई भूमिका असाइन की जा सकती है:
gcloud projects add-iam-policy-binding PROJECT \
  --member user:someone@example.com \
  --role roles/routeoptimization.editor

ज़्यादा जानकारी के लिए, Google Cloud Console का इस्तेमाल करके आईएएम की भूमिका देना लेख पढ़ें.

उदाहरण: अपने लोकल डेवलपमेंट एनवायरमेंट में REST API कॉल आज़माना

अगर आपके पास टोकन जनरेट करने वाला एनवायरमेंट नहीं है और आपको OAuth टोकन के साथ Route Optimization API को आज़माना है, तो इस सेक्शन में दिया गया तरीका अपनाएं.

इस उदाहरण में, कॉल करने के लिए ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल (एडीसी) से मिले OAuth टोकन का इस्तेमाल करने का तरीका बताया गया है. क्लाइंट लाइब्रेरी की मदद से Google API को कॉल करने के लिए, एडीसी का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, क्लाइंट लाइब्रेरी का इस्तेमाल करके पुष्टि करना लेख पढ़ें.

यहां दी गई REST प्रोसेस का इस्तेमाल सिर्फ़ डेवलपमेंट या टेस्टिंग के लिए करें, प्रोडक्शन के लिए नहीं.

ज़रूरी शर्तें

एडीसी का इस्तेमाल करके REST अनुरोध करने से पहले, एडीसी को क्रेडेंशियल देने के लिए gcloud सीएलआई का इस्तेमाल करें:

  1. gcloud सीएलआई को इंस्टॉल करें और उसे शुरू करें. ज़्यादा जानकारी के लिए, gcloud सीएलआई इंस्टॉल करें लेख पढ़ें.

  2. gcloud सीएलआई की मदद से पुष्टि करें:

    gcloud auth application-default login
  3. एडीसी की इस्तेमाल की जाने वाली लोकल क्रेडेंशियल फ़ाइल में अपने क्रेडेंशियल सेव करने के लिए, साइन इन करने की प्रोसेस पूरी करें.

ज़्यादा जानकारी के लिए, लोकल डेवलपमेंट एनवायरमेंट के लिए एडीसी सेट अप करना लेख पढ़ें.

REST अनुरोध करना

इस उदाहरण में, आप दो अनुरोध का हेडर पास करते हैं:

  • टोकन जनरेट करने के लिए, इस कमांड का इस्तेमाल करके Authorization हेडर में OAuth टोकन पास करें:

    gcloud auth application-default print-access-token

    वापस किए गए टोकन का दायरा https://www.googleapis.com/auth/cloud-platform है.

  • अपने उस Google Cloud प्रोजेक्ट का आईडी या नाम पास करें जिसके लिए X-Goog-User-Project हेडर में बिलिंग की सुविधा चालू है.

OAuth टोकन का इस्तेमाल करके Route Optimization API को कॉल करने के लिए, यह तरीका अपनाएं:

  1. यहां दिए गए कोड सैंपल में, PROJECT_NUMBER_OR_ID की जगह अपने Google Cloud प्रोजेक्ट का नंबर या आईडी डालें:

    curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data-binary @- << EOM
    {
    "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        }
      }
    ],
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00"
    }
    }
    EOM
    
  2. curl कमांड को कॉपी करने के लिए, कोड सैंपल में कॉपी करें पर क्लिक करें.

  3. कमांड को टर्मिनल विंडो में चिपकाएं और फिर उसे चलाएं.

रिस्पॉन्स, एक JSON ऑब्जेक्ट है:

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:39:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2023-01-14T00:19:53Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "1193s",
          "travelDistanceMeters": 9007,
          "waitDuration": "0s",
          "totalDuration": "1193s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "1169s",
          "travelDistanceMeters": 9546,
          "waitDuration": "0s",
          "totalDuration": "1169s",
          "startTime": "2023-01-14T00:19:53Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2362s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2362s",
        "travelDistanceMeters": 18553
      }
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2362s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2362s",
      "travelDistanceMeters": 18553
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:39:22Z"
  }
}

समस्या का हल

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