ขั้นตอนที่ 5: การอัปเดต API แบบเรียลไทม์

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

การอัปเดตแบบเรียลไทม์และฟีด API

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

แม้ว่าการอัปเดต API จะใช้เพื่ออัปเดตข้อมูลใดก็ได้ที่ฟีดระบุ เช่น ข้อมูลเกี่ยวกับผู้ขายและบริการ แต่โดยทั่วไปแล้วจะใช้เพื่ออัปเดตข้อมูลความพร้อมเท่านั้น

API การอัปเดตแบบเรียลไทม์ที่จำเป็น

API การอัปเดตแบบเรียลไทม์ (RTU)
BookingNotification ข้อบังคับ ส่ง RTU ของ BookingNotification ทุกครั้งที่มีการเปลี่ยนแปลงการจอง (เช่น การแก้ไขหรือการยกเลิก)
ความพร้อมจำหน่ายสินค้า - แทนที่ RTU ต้องระบุแบบมีเงื่อนไข[1] ส่ง RTU แบบแทนที่แบบกลุ่มหรือแทนที่แบบครั้งเดียวเพื่อส่งการอัปเดตความพร้อมจำหน่ายสินค้าคงคลัง การเปลี่ยนแปลงอาจใช้เวลาหลายนาทีจึงจะมีผลและแสดง
RTU ของผู้ขาย ไม่บังคับ ส่ง RTU ของผู้ขายหากต้องการเปลี่ยนแปลงข้อมูลผู้ขายแบบเรียลไทม์ การเปลี่ยนแปลงอาจใช้เวลาหลายชั่วโมงจึงจะมีผล และแสดง
RTU ของบริการ ไม่บังคับ ส่ง RTU ของบริการหากต้องการเปลี่ยนแปลงข้อมูลบริการ แบบเรียลไทม์ กรณีการใช้งานที่พบบ่อยคือหากราคาบริการ ผันผวนอย่างมากในระหว่างวัน ขอแนะนำให้ใช้ RTU ของบริการ เพื่อหลีกเลี่ยงการสั่งซื้อที่ไม่สำเร็จเนื่องจากราคาไม่ตรงกัน การเปลี่ยนแปลงอาจใช้เวลาหลายชั่วโมงจึงจะมีผล

RTU ของ Availability Replace API

ใช้ Availability Replace API เพื่ออัปเดตความพร้อมในกรณีการใช้งานต่อไปนี้

  • ผู้ใช้จองในระบบของคุณ ช่วงเวลาว่างจึงไม่ว่างอีกต่อไป
  • ผู้ขายเปลี่ยนความพร้อมจำหน่ายผลิตภัณฑ์ในระบบของคุณ
  • ผู้ใช้จองผ่าน Google ทำให้ช่วงเวลาที่ว่างไม่พร้อมให้บริการอีกต่อไป
  • การจองที่ทำผ่าน Google จะถูกยกเลิกในฝั่งของคุณ เช่น โดยผู้ขายโดยตรง คุณต้องอัปเดตการจองและ ความพร้อมให้บริการด้วย เนื่องจากช่วงเวลาเดิมพร้อมให้บริการอีกครั้งแล้ว
  • การเรียกเซิร์ฟเวอร์การจอง BatchAvailabilityLookup จะแสดง พื้นที่โฆษณาที่ไม่ตรงกับพื้นที่โฆษณาจริง

ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้

Booking Notification API RTU

Booking Notification API จะแจ้งให้ Google ทราบเกี่ยวกับการอัปเดตการจองที่มีอยู่ เมื่อส่งข้อมูลอัปเดตเกี่ยวกับการยกเลิก ให้ส่งเฉพาะข้อมูลที่จำเป็นในคำขอพร้อมupdateMaskพารามิเตอร์การค้นหา มีตัวอย่างดังต่อไปนี้

Request:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/<PARTNER_ID>/bookings/<BOOKING_ID>?updateMask=status

Body:
{"name":"partners/<PARTNER_ID>/bookings/<BOOKING_ID>", "status":"CANCELED"}

การเข้าถึง API

สร้างบัญชีบริการ

ใช้แท็บข้อมูลเข้าสู่ระบบในคอนโซล Google API เพื่อ สร้างบัญชีบริการ จัดเก็บคีย์ส่วนตัวในรูปแบบ JSON ไว้ในที่ปลอดภัย เมื่อสร้างบัญชี คุณจะมีตัวเลือกในการตั้งค่าบทบาทเป็น "เจ้าของ"

ตรวจสอบสิทธิ์ Maps Booking API

หลังจากสร้างบัญชีบริการแล้ว ให้ตรวจสอบสิทธิ์ API ต่อไปนี้

  • Google Maps Booking API
  • Google Maps Booking API (Dev)

ดูคำแนะนำแบบทีละขั้นตอนเกี่ยวกับวิธีดำเนินการนี้ได้ในบทแนะนำการตรวจสอบสิทธิ์ด้วย Maps Booking API

ใช้การเรียก RESTful หรือดาวน์โหลดไลบรารีของไคลเอ็นต์

เราขอแนะนำให้คุณเรียกใช้ RESTful ไปยัง Maps Booking API โดยตรง ด้วยเพย์โหลด JSON ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับ REST API

นอกจากนี้ คุณยังใช้ไลบรารีของไคลเอ็นต์เพื่อเชื่อมต่อกับ API ได้ด้วย

ภาษา ลิงก์ดาวน์โหลด
Java ไลบรารีของไคลเอ็นต์ Java ดูข้อมูลเพิ่มเติมได้ที่ วิธีการสำหรับไคลเอ็นต์ Java

นอกจากนี้ ยังมีไลบรารีการสนับสนุนเพิ่มเติมให้ดาวน์โหลด ซึ่งจะจัดการการให้สิทธิ์และด้านอื่นๆ ของการเรียก Google API หากจำเป็น โปรดดู ตัวอย่างเหล่านี้

ดึงข้อมูลเอกสารการค้นพบ

สำหรับไลบรารีของไคลเอ็นต์บางรายการ เช่น Ruby คุณจะต้องดึงข้อมูล เอกสาร Discovery สำหรับ API ซึ่งอธิบายเมธอดและ พารามิเตอร์ของ API

ใช้คำสั่งต่อไปนี้เพื่อดึงข้อมูลเอกสารการค้นหา

curl -s -o 'mapsbooking_rest' 'https://mapsbooking.googleapis.com/$discovery/rest?version=v1alpha'

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึง API จาก Ruby ได้ที่ลิงก์ต่อไปนี้ ไคลเอ็นต์ API ของ Ruby และ ไลบรารีการให้สิทธิ์ของ Ruby

โทรหา API ที่ได้รับอนุญาต

เมื่อทำการเรียก API โปรดดูการเตรียมพร้อมสำหรับการเรียก API ที่ได้รับอนุญาตเพื่อให้สิทธิ์บัญชีบริการด้วยคีย์ส่วนตัวและขอบเขต OAuth ต่อไปนี้ https://www.googleapis.com/auth/mapsbooking

โควต้า API

การอัปเดต API มีโควต้าคำขอ 1,500 รายการทุกๆ 60 วินาที หรือคำขอ 25 รายการ ต่อวินาทีโดยเฉลี่ย เมื่อใช้โควต้าเกิน (ซึ่งอาจเกิดขึ้นได้เมื่อคุณไม่ได้เพิ่มหมายเลขโปรเจ็กต์ Google Cloud ที่ถูกต้องในพอร์ทัลพาร์ทเนอร์) Google จะตอบกลับด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้

{
  "error": {
    "code": 429,
    "message": "Insufficient tokens for quota ...",
    "status": "RESOURCE_EXHAUSTED",
    "details": [...]
  }
}

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

ปลายทางของแซนด์บ็อกซ์และเวอร์ชันที่ใช้งานจริง

คุณโทรไปยังทั้งสภาพแวดล้อมแซนด์บ็อกซ์และสภาพแวดล้อมการใช้งานจริงได้ผ่าน API ตรวจสอบว่าคุณได้เปิดใช้ทั้ง 2 API ในโปรเจ็กต์ Google Cloud แล้ว API ทั้ง 2 รายการนี้ใช้ขอบเขตเดียวกัน แต่มีปลายทางที่แตกต่างกัน

ปลายทางการใช้งานจริง: https://mapsbooking.googleapis.com/

ปลายทางแซนด์บ็อกซ์: https://partnerdev-mapsbooking.googleapis.com/

ต่อไปนี้เป็นตัวอย่างใน Java เกี่ยวกับวิธีเปลี่ยนปลายทาง

    // This block of code is for OAuth and is the same for prod and sandbox.
    GoogleCredential
      .fromStream(new FileInputStream(...))
      .createScoped(Collections.singleton("https://www.googleapis.com/auth/mapsbooking"))

    // This block of code sets the endpoint. This is what you'd change to connect to the sandbox.
    new GoogleMapsBookingAPI.Builder(...)
      .setApplicationName(...)
      .setRootUrl("https://partnerdev-mapsbooking.googleapis.com/") // you add this to change the endpoint to use partnerdev.
      .build()