สินค้าคงคลังในระบบจะผันผวนตลอดทั้งวันเนื่องจากการจองใหม่ การยกเลิก และการเปลี่ยนแปลงกำหนดการจากผู้ขาย 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
จะแสดง พื้นที่โฆษณาที่ไม่ตรงกับพื้นที่โฆษณาจริง
ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลต่อไปนี้
- บทแนะนำ: วิธีจัดโครงสร้างการอัปเดตแบบเรียลไทม์
- ตัวอย่างไคลเอ็นต์ Java สำหรับการอัปเดตแบบเรียลไทม์โดยใช้การเรียก RESTful
- หน้าเอกสารอ้างอิง API การอัปเดตพื้นที่โฆษณา
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()