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

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

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

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

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

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

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

ความพร้อมใช้งานแทนที่ API RTU

ใช้ Availability Replace API เพื่อระบุข้อมูลอัปเดตเกี่ยวกับความพร้อมจำหน่ายสินค้าใน กรณีการใช้งานต่อไปนี้

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

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

RTU API การแจ้งเตือนการจอง

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 ไว้ในที่ปลอดภัย เมื่อคุณสร้างบัญชี คุณจะมีตัวเลือกให้กำหนดบทบาทเป็น "เจ้าของ"

ตรวจสอบสิทธิ์ API การจอง Maps

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

  • Google Maps Booking API
  • API การจองใน Google Maps (เวอร์ชันพัฒนา)

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

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

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

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

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

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

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

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

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

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

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

เรียกใช้ 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 ตรวจสอบว่าได้เปิดใช้ API ทั้ง 2 รายการในโปรเจ็กต์ Google Cloud แล้ว API ทั้งสองนี้ใช้ขอบเขตเดียวกัน แต่มีปลายทางต่างกัน

ปลายทางเวอร์ชันที่ใช้งานจริง: 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()