ตั้งค่า 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. ในหน้าการเรียกเก็บเงิน ให้ทำดังนี้

      • หากเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ที่เลือกไว้แล้ว และคุณมีบัญชีสำหรับการเรียกเก็บเงินเพียงบัญชีเดียว หน้าการเรียกเก็บเงินจะเปิดขึ้น
      • หากมีบัญชีสำหรับการเรียกเก็บเงินหลายบัญชี ให้เลือกไปที่บัญชีสำหรับการเรียกเก็บเงินที่ลิงก์ไว้เพื่อดูรายละเอียดเกี่ยวกับบัญชีสำหรับการเรียกเก็บเงินที่เชื่อมโยงกับโปรเจ็กต์
      • หากมีบัญชีสำหรับการเรียกเก็บเงินอยู่แล้วแต่ไม่ได้เชื่อมโยงกับโปรเจ็กต์ ระบบจะแจ้งให้คุณลิงก์บัญชีสำหรับการเรียกเก็บเงินกับโปรเจ็กต์
      • หากไม่มีบัญชีสำหรับการเรียกเก็บเงินหรือต้องการสร้างบัญชีสำหรับการเรียกเก็บเงินใหม่ ให้เลือกจัดการบัญชีสำหรับการเรียกเก็บเงินเพื่อสร้างบัญชีสำหรับการเรียกเก็บเงินใหม่ ดูข้อมูลเพิ่มเติมได้ที่หัวข้อสร้างบัญชีสำหรับการเรียกเก็บเงินใน Cloud แบบให้บริการเองใหม่

เปิดใช้ API

ก่อนที่จะใช้ Route Optimization API ได้ คุณต้องใช้คอนโซล Google Cloud หรือคำสั่ง gcloud เพื่อเปิดใช้ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google Cloud

วิธีเปิดใช้ 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 ทั่วไป เช่น สถานการณ์สำหรับเว็บเซิร์ฟเวอร์

เอกสารนี้อธิบายวิธีส่งโทเค็น OAuth ไปยังการเรียก Route Optimization API ในสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OAuth ในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ได้ที่หัวข้อวิธีการตรวจสอบสิทธิ์ที่ Google

คุณสามารถเรียกใช้ Google Maps API ได้โดยตรงด้วยการส่งคำขอ API ไปยังเซิร์ฟเวอร์ หรือจะใช้ไลบรารีของไคลเอ็นต์เพื่อลดความซับซ้อนของโค้ดก็ได้ Google Maps มีไลบรารีของไคลเอ็นต์สำหรับ Go, Java, Node.js และ Python ดูข้อมูลเพิ่มเติมได้ที่ไลบรารีของไคลเอ็นต์ Route Optimization API

ภาพรวมของ OAuth

คุณสร้างและจัดการโทเค็นเพื่อการเข้าถึงด้วย OAuth ได้หลายวิธี โดยขึ้นอยู่กับสภาพแวดล้อมการติดตั้งใช้งาน

คุณสามารถใช้ OAuth 2.0 สำหรับการโต้ตอบระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์ระหว่างแอปพลิเคชันของคุณกับบริการของ Google ในสถานการณ์นี้ คุณจะใช้บัญชีบริการที่เชื่อมโยงกับแอปพลิเคชันของคุณแทนที่จะเป็นผู้ใช้แต่ละราย คุณสามารถส่งคำขอ API โดยใช้บัญชีบริการโดยไม่ต้องเกี่ยวข้องกับผู้ใช้โดยตรง ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตรวจสอบสิทธิ์ได้ที่หัวข้อวิธีการตรวจสอบสิทธิ์ที่ Google

หรือจะผสานรวม Route Optimization API เข้ากับแอปบนอุปกรณ์เคลื่อนที่ Android หรือ iOS ก็ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ OAuth และการจัดการโทเค็นเพื่อการเข้าถึงสำหรับสภาพแวดล้อมการติดตั้งใช้งานต่างๆ ได้ที่หัวข้อการใช้ OAuth 2.0 เพื่อเข้าถึง Google API

ขอบเขต OAuth

หากต้องการใช้ OAuth กับ Route Optimization API คุณต้องกำหนดขอบเขตต่อไปนี้ให้กับโทเค็น OAuth

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

กำหนดค่าบทบาท

เอกสารนี้ให้ข้อมูลเกี่ยวกับบทบาทและสิทธิ์ Identity and Access Management (IAM) สำหรับการเพิ่มประสิทธิภาพเส้นทาง IAM ช่วยให้คุณให้สิทธิ์เข้าถึงแบบละเอียดแก่ทรัพยากร Route Optimization ที่เฉพาะเจาะจง และช่วยป้องกันการเข้าถึงทรัพยากรอื่นๆ 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): ให้สิทธิ์การเข้าถึงระดับอ่านอย่างเดียวแก่ทรัพยากรการเพิ่มประสิทธิภาพเส้นทางในโปรเจ็กต์ บทบาทนี้ช่วยให้สามารถเรียกใช้ OptimizeTours และเข้าถึงการดำเนินการที่ใช้เวลานานโดยใช้ GetOperation ได้
คุณสามารถมอบหมายบทบาทได้โดยสร้างการเชื่อมโยงสำหรับผู้ใช้หลักโดยใช้ Cloud SDK ดังนี้
gcloud projects add-iam-policy-binding PROJECT \
  --member user:someone@example.com \
  --role roles/routeoptimization.editor

ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ ให้สิทธิ์บทบาท IAM โดยใช้คอนโซล Google Cloud

ตัวอย่าง: ลองเรียกใช้ REST API ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ในเครื่อง

หากไม่มีสภาพแวดล้อมที่สร้างโทเค็นและต้องการลองใช้ Route Optimization API กับโทเค็น OAuth ให้ใช้ขั้นตอนในส่วนนี้

ตัวอย่างนี้อธิบายวิธีใช้โทเค็น OAuth ที่ได้จากข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) เพื่อทำการเรียก ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ADC เพื่อเรียกใช้ Google API ด้วยไลบรารีของไคลเอ็นต์ได้ที่หัวข้อตรวจสอบสิทธิ์โดยใช้ไลบรารีของไคลเอ็นต์

ใช้ขั้นตอน REST ต่อไปนี้สำหรับการพัฒนาหรือการทดสอบเท่านั้น ไม่ใช่สำหรับการใช้งานจริง

ข้อกำหนดเบื้องต้น

ก่อนส่งคำขอ REST โดยใช้ ADC ให้ใช้ gcloud CLI เพื่อระบุข้อมูลเข้าสู่ระบบให้กับ ADC ดังนี้

  1. ติดตั้งและเริ่มต้นใช้งาน gcloud CLI ดูข้อมูลเพิ่มเติมได้ที่ติดตั้ง gcloud CLI

  2. ตรวจสอบสิทธิ์ด้วย gcloud CLI โดยทำดังนี้

    gcloud auth application-default login
  3. ทำตามขั้นตอนการลงชื่อเข้าใช้ให้เสร็จสมบูรณ์เพื่อบันทึกข้อมูลเข้าสู่ระบบในไฟล์ข้อมูลเข้าสู่ระบบในเครื่องที่ ADC ใช้

ดูข้อมูลเพิ่มเติมได้ที่หัวข้อตั้งค่า ADC สำหรับสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ในเครื่อง

ส่งคำขอ REST

ในตัวอย่างนี้ คุณส่งส่วนหัวของคำขอ 2 รายการดังนี้

  • ส่งโทเค็น OAuth ในส่วนหัว Authorization โดยใช้คำสั่งต่อไปนี้เพื่อสร้างโทเค็น

    gcloud auth application-default print-access-token

    โทเค็นที่แสดงผลมีขอบเขตเป็น https://www.googleapis.com/auth/cloud-platform

  • ส่งรหัสหรือชื่อโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินในส่วนหัว X-Goog-User-Project

หากต้องการเรียกใช้ Route Optimization API โดยใช้โทเค็น OAuth ให้ทำตามขั้นตอนต่อไปนี้

  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