Route Optimization API সেট-আপ করা

Route Optimization API ব্যবহার শুরু করার জন্য আপনাকে যেসব ধাপ অনুসরণ করতে হবে তা এই ডকুমেন্টে বর্ণনা করা হয়েছে।

পূর্বশর্ত

এই পদ্ধতিতে, Google Cloud অ্যাকাউন্ট এবং বিলিং চালু করা আছে এমন Google Cloud প্রোজেক্ট সেট-আপ করার ব্যাপারে আপনাকে গাইড করা হয়েছে। এছাড়াও, Route Optimization API ব্যবহার করার জন্য আপনাকে কীভাবে চার্জ করা হয় সেই সম্পর্কেও আপনাকে জানতে হবে।

  1. Route Optimization API ব্যবহার ও বিলিং-এ ব্যবহারের জন্য বিলিং ও খরচ পর্যালোচনা করুন।
  2. আপনার একটি Google Cloud অ্যাকাউন্ট আছে কিনা তা যাচাই করুন।

    Google Cloud কনসোলে সাইন-ইন করুন
  3. বিলিং চালু করা আছে এমন একটি Google Cloud প্রোজেক্ট আপনার আছে কিনা তা যাচাই করুন।

    বিলিং পৃষ্ঠায় যান
    1. বিলিং পৃষ্ঠা খুলতে আপনার প্রোজেক্ট বেছে নিন।
    2. বিলিং পৃষ্ঠায়:

      • বেছে নেওয়া প্রোজেক্টের জন্য বিলিং আগে থেকেই চালু করা থাকলে এবং আপনার কাছে শুধুমাত্র একটি বিলিং অ্যাকাউন্ট থাকলে, বিলিং পৃষ্ঠা খুলে যাবে।
      • আপনার একাধিক বিলিং অ্যাকাউন্ট থাকলে, প্রোজেক্টের সাথে যুক্ত বিলিং অ্যাকাউন্ট সম্পর্কে বিবরণ দেখতে লিঙ্ক করা বিলিং অ্যাকাউন্টে যান বিকল্প বেছে নিন।
      • বিলিং অ্যাকাউন্ট থাকলে কিন্তু প্রোজেক্টের সাথে যুক্ত না থাকলে, আপনাকে প্রোজেক্টের সাথে বিলিং অ্যাকাউন্ট লিঙ্ক করতে বলা হবে।
      • কোনও বিলিং অ্যাকাউন্ট না থাকলে অথবা আপনি নতুন বিলিং অ্যাকাউন্ট তৈরি করতে চাইলে, নতুন বিলিং অ্যাকাউন্ট তৈরি করতে বিলিং অ্যাকাউন্ট ম্যানেজ করুন বিকল্প বেছে নিন। আরও তথ্যের জন্য, নতুন সেল্ফ-সার্ভ ক্লাউড বিলিং অ্যাকাউন্ট তৈরি করুন দেখুন।

API চালু করুন

Route Optimization API ব্যবহার করার আগে, আপনার Google Cloud প্রোজেক্টে এটি চালু করতে, আপনাকে অবশ্যই Google Cloud কনসোল বা gcloud কমান্ড ব্যবহার করতে হবে।

API চালু করতে:

কনসোল

  1. Google Cloud কনসোলে প্রোডাক্ট পৃষ্ঠা খুলুন:

    Route Optimization API চালু করুন
  2. চালু করুন বোতামে ক্লিক করুন।

gcloud

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

Google Cloud SDK, Cloud SDK ইনস্টলেশন এবং নিম্নলিখিত কমান্ড সম্পর্কে আরও পড়ুন:

অননুমোদিত ব্যবহার আটকাতে Google Maps Platform প্রোডাক্টের API কলে OAuth টোকেন অন্তর্ভুক্ত করতে হয়।

OAuth টোকেন তৈরি করা

Route Optimization API যাচাইকরণের জন্য OAuth 2.0 ব্যবহার করে। Google সাধারণ OAuth 2.0 পরিস্থিতি সমর্থন করে, যেমন একটি ওয়েব সার্ভারের জন্য পরিস্থিতি।

এই ডকুমেন্ট থেকে জানতে পারবেন যে আপনার ডেভেলপমেন্ট এনভায়রনমেন্টে Route Optimization API কলে কীভাবে OAuth টোকেন পাস করতে হয়। প্রোডাকশন এনভায়রনমেন্টে OAuth ব্যবহার করার ব্যাপারে আরও তথ্য পেতে, Google-এ যাচাইকরণ পদ্ধতি দেখুন।

আপনি সার্ভারে API অনুরোধ করে সরাসরি Google Maps API কল করতে পারেন অথবা আপনার কোড সহজ করতে ক্লায়েন্ট লাইব্রেরি ব্যবহার করতে পারেন। Google Maps, Go, Java, Node.js ও Python-এর জন্য ক্লায়েন্ট লাইব্রেরি প্রদান করে। আরও তথ্যের জন্য, Route Optimization API ক্লায়েন্ট লাইব্রেরি দেখুন।

OAuth ওভারভিউ

আপনার ডিপ্লয়মেন্ট এনভায়রনমেন্টের উপর নির্ভর করে আপনি বিভিন্ন উপায়ে OAuth-এর মাধ্যমে অ্যাক্সেস টোকেন তৈরি ও ম্যানেজ করতে পারবেন।

আপনার অ্যাপ্লিকেশন এবং Google পরিষেবার মধ্যে সার্ভার-টু-সার্ভার ইন্টার‍্যাকশনের জন্য আপনি OAuth 2.0 ব্যবহার করতে পারেন। এই পরিস্থিতিতে, আপনি এমন একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করেন যা কোনও স্বতন্ত্র ব্যবহারকারীর পরিবর্তে আপনার অ্যাপ্লিকেশনের সাথে যুক্ত। আপনি ব্যবহারকারীদের সরাসরি যুক্ত না করেই পরিষেবা অ্যাকাউন্ট ব্যবহার করে API অনুরোধ করতে পারেন। যাচাইকরণ পদ্ধতি সম্পর্কে আরও জানতে, Google-এ যাচাইকরণ পদ্ধতি দেখুন।

বিকল্প হিসেবে, আপনি Android বা iOS মোবাইল অ্যাপে Route Optimization API ইন্টিগ্রেট করতে পারেন। বিভিন্ন ডেপ্লয়মেন্ট এনভায়রনমেন্টের জন্য OAuth ব্যবহার করা এবং অ্যাক্সেস টোকেন ম্যানেজ করার ব্যাপারে আরও তথ্যের জন্য, Google API অ্যাক্সেস করার জন্য OAuth 2.0 ব্যবহার করা দেখুন।

OAuth স্কোপ

Route Optimization API-এর সাথে OAuth ব্যবহার করতে, আপনাকে OAuth টোকেনকে নিম্নলিখিত স্কোপ অ্যাসাইন করতে হবে:

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

ভূমিকা কনফিগার করুন

এই ডকুমেন্ট থেকে রুট অপ্টিমাইজেশনের জন্য আইডেন্টিটি ও অ্যাক্সেস ম্যানেজমেন্ট (IAM) ভূমিকা ও অনুমতি সম্পর্কে তথ্য পাওয়া যায়। IAM আপনাকে নির্দিষ্ট রুট অপ্টিমাইজেশন রিসোর্সে গ্রানুলার অ্যাক্সেস প্রদান করতে দেয় এবং অন্যান্য রিসোর্সে অ্যাক্সেস প্রতিরোধ করতে সাহায্য করে। IAM আপনাকে ন্যূনতম বিশেষাধিকারের নিরাপত্তা নীতি প্রয়োগ করতে দেয়, যা বলে যে কারও কাছে আসলে যতটা প্রয়োজন তার চেয়ে বেশি অনুমতি থাকা উচিত নয়।

কোনও প্রিন্সিপাল (ব্যবহারকারী, গ্রুপ বা পরিষেবা অ্যাকাউন্ট) Google Cloud API কল করলে, সেই প্রিন্সিপালের কাছে রিসোর্স ব্যবহার করার জন্য উপযুক্ত IAM অনুমতি থাকতে হবে। প্রিন্সিপালকে প্রয়োজনীয় অনুমতি দিতে, আপনি প্রিন্সিপালকে IAM ভূমিকা মঞ্জুর করেন।

সাধারণভাবে Google Cloud-এ অ্যাক্সেস ম্যানেজ করার ব্যাপারে নিজেকে পরিচিত করতে, IAM এক নজরে দেখুন।

প্রিন্সিপালদের রুট অপ্টিমাইজেশন অ্যাক্সেস করার অনুমতি দেওয়ার জন্য পূর্বনির্ধারিত IAM ভূমিকাগুলি হল:

  • 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 কনসোল ব্যবহার করে IAM ভূমিকা মঞ্জুর করুন দেখুন।

যেমন: আপনার লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টে REST API কল করে দেখুন

আপনার কাছে টোকেন জেনারেট করার মতো পরিবেশ না থাকলে এবং আপনি OAuth টোকেন সহ Route Optimization API ব্যবহার করে দেখতে চাইলে, এই বিভাগে উল্লেখ করা পদ্ধতি অনুসরণ করুন।

এই উদাহরণে দেখানো হয়েছে যে কল করার জন্য কীভাবে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC)-এর মাধ্যমে প্রদান করা OAuth টোকেন ব্যবহার করতে হয়। ক্লায়েন্ট লাইব্রেরির মাধ্যমে Google API কল করার জন্য ADC ব্যবহার করা সম্পর্কে আরও তথ্যের জন্য, ক্লায়েন্ট লাইব্রেরি ব্যবহার করে যাচাইকরণ করুন দেখুন।

নিম্নলিখিত REST পদ্ধতি শুধুমাত্র ডেভেলপমেন্ট বা পরীক্ষার জন্য ব্যবহার করুন, প্রোডাকশনের জন্য নয়।

পূর্বশর্ত

ADC ব্যবহার করে REST অনুরোধ করার আগে, ADC-তে ক্রেডেনশিয়াল প্রদান করতে gcloud CLI ব্যবহার করুন:

  1. gcloud CLI ইনস্টল ও ইনিশিয়ালাইজ করুন। আরও তথ্যের জন্য, gcloud CLI ইনস্টল করুন দেখুন।

  2. gcloud CLI-এর মাধ্যমে যাচাই করুন:

    gcloud auth application-default login
  3. ADC-এর ব্যবহার করা লোকাল ক্রেডেনশিয়াল ফাইলে আপনার ক্রেডেনশিয়াল সেভ করতে সাইন-ইন করার প্রসেস সম্পূর্ণ করুন।

আরও তথ্যের জন্য, লোকাল ডেভেলপমেন্ট এনভায়রনমেন্টের জন্য ADC সেট-আপ করুন দেখুন।

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

সমস্যার সমাধান

আপনার অনুরোধে যদি এমন কোনও ত্রুটি মেসেজ আসে যাতে বলা হয় যে এই API-তে এন্ড-ইউজার ক্রেডেনশিয়াল কাজ করে না, তাহলে আপনার ADC সেট-আপের সমস্যার সমাধান করুন।