สินค้าคงคลังในระบบมีความผันผวนตลอดทั้งวันเนื่องจากการจองใหม่ การยกเลิก และการเปลี่ยนแปลงกำหนดการจากผู้ขาย API การอัปเดตแบบเรียลไทม์คือกลไกในการแจ้งเตือน Google เกี่ยวกับการเปลี่ยนแปลงของความพร้อมใช้งานของสินค้าคงคลัง นอกจากนี้ คุณยังใช้การอัปเดต API แบบเรียลไทม์เพื่อแจ้งให้ Google ทราบเกี่ยวกับการเปลี่ยนแปลงที่เกิดขึ้นกับการจองที่มีอยู่ได้
ฟีดและข้อมูลอัปเดตแบบเรียลไทม์ของ API
การอัปเดต API แบบเรียลไทม์ใช้เพื่อแจ้ง Google เกี่ยวกับการเปลี่ยนแปลงที่เพิ่มขึ้นของห้องว่างและการจองต่างๆ ที่เกิดขึ้นแบบเรียลไทม์ นอกเหนือจากการอัปเดต API แบบเรียลไทม์แล้ว ให้ส่งฟีดความพร้อมจำหน่ายสินค้าที่สมบูรณ์ทุกวันเพื่อให้ Google มีความรู้ที่ถูกต้องและเป็นปัจจุบันที่สุดเกี่ยวกับความพร้อมใช้งานที่มีอยู่ในระบบ ฟีดที่สมบูรณ์ทำหน้าที่เป็นภาพรวมของสถานะปัจจุบันของ ความพร้อมใช้งานของพื้นที่โฆษณาในระบบของคุณ
แม้ว่าการอัปเดต API จะใช้เพื่ออัปเดตข้อมูลใดๆ ที่ได้รับจากฟีด เช่น ข้อมูลเกี่ยวกับผู้ขายและบริการได้ แต่โดยทั่วไปการอัปเดตดังกล่าวจะใช้เพื่ออัปเดตข้อมูลความพร้อมจำหน่ายสินค้าเท่านั้น
API การอัปเดตแบบเรียลไทม์ที่จำเป็น
API สำหรับการอัปเดตแบบเรียลไทม์ (RTU) | ||
---|---|---|
BookingNotification | บังคับ | ส่ง RTU ของ BookingNotification ทุกครั้งที่มีการเปลี่ยนแปลงการจอง (เช่น การแก้ไขหรือการยกเลิก) |
ความพร้อมใช้งานแทนที่ RTU | ต้องระบุแบบมีเงื่อนไข[1] | ส่ง RTU แทนที่แบบกลุ่มหรือการแทนที่ครั้งเดียวเพื่อส่งการอัปเดตความพร้อมใช้งานของสินค้าคงคลัง การเปลี่ยนแปลงอาจใช้เวลาหลายนาทีจึงจะเผยแพร่และแสดงผล |
RTU ของผู้ขาย | ไม่บังคับ | ส่ง RTU ของผู้ขายหากต้องการเปลี่ยนแปลงข้อมูลผู้ขายแบบเรียลไทม์ การเปลี่ยนแปลงอาจใช้เวลาหลายชั่วโมงจึงจะเผยแพร่และมีผล |
RTU ของบริการ | ไม่บังคับ | ส่ง RTU ของบริการหากต้องการเปลี่ยนแปลงข้อมูลบริการแบบเรียลไทม์ กรณีการใช้งานที่พบบ่อยคือหากราคาบริการผันผวนมากในระหว่างวัน ขอแนะนำให้ใช้ RTU ของบริการเพื่อหลีกเลี่ยงความล้มเหลวในการสั่งซื้อเนื่องจากราคาไม่ตรงกัน การเปลี่ยนแปลงอาจใช้เวลาหลายชั่วโมงจึงจะเผยแพร่และแสดงผล |
ความพร้อมใช้งานแทนที่ API RTU
ใช้ API แทนที่ Availability สำหรับการอัปเดตความพร้อมใช้งานใน Use Case ต่อไปนี้
- ผู้ใช้ทำการจองในระบบ ดังนั้นช่วงเวลาว่างจึงไม่มีให้บริการอีกต่อไป
- ผู้ขายเปลี่ยนความพร้อมจำหน่ายสินค้าในระบบของคุณ
- ผู้ใช้จองผ่าน Google จึงไม่มีช่วงเวลาว่างให้บริการอีกต่อไป
- ตัวอย่างเช่น ผู้ขายจะยกเลิกการจองที่ดำเนินการผ่าน Google จากฝั่งคุณโดยตรง คุณต้องอัปเดตการจองและห้องว่าง เนื่องจากช่องเดิมพร้อมให้บริการอีกครั้งแล้ว
- การเรียก
BatchAvailabilityLookup
ของเซิร์ฟเวอร์การจองจะแสดงผลพื้นที่โฆษณาที่ไม่ตรงกับพื้นที่โฆษณาจริง
ดูข้อมูลเพิ่มเติมได้จากแหล่งข้อมูลต่อไปนี้
- บทแนะนำ: วิธีจัดโครงสร้างการอัปเดตแบบเรียลไทม์
- ตัวอย่างไคลเอ็นต์ Java สำหรับการอัปเดตแบบเรียลไทม์โดยใช้การเรียก RESTful
- หน้าอ้างอิง API การอัปเดตสินค้าคงคลัง
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 (นักพัฒนาซอฟต์แวร์)
ดูคำแนะนำทีละขั้นตอนเกี่ยวกับวิธีดำเนินการได้จากบทแนะนำการตรวจสอบสิทธิ์ด้วย Maps Booking API
ใช้การเรียก RESTful หรือดาวน์โหลดไลบรารีของไคลเอ็นต์
เราขอแนะนำให้คุณเรียกใช้ RESTful ไปยัง Maps Booking API โดยตรงด้วยเพย์โหลด JSON ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของ REST API
คุณยังใช้ไลบรารีของไคลเอ็นต์เพื่อเชื่อมต่อกับ API ได้อีกด้วย
ภาษา | ลิงก์ดาวน์โหลด |
---|---|
Java | ไลบรารีของไคลเอ็นต์ Java ดูข้อมูลเพิ่มเติมได้ที่วิธีการสำหรับไคลเอ็นต์ Java |
โดยจะมีไลบรารีการสนับสนุนเพิ่มเติมให้ดาวน์โหลดซึ่งจัดการการให้สิทธิ์และการเรียกไปยัง Google API ในด้านอื่นๆ ลองดูตัวอย่างเหล่านี้หากจำเป็น
ดึงข้อมูลเอกสารการค้นพบ
สำหรับไลบรารีของไคลเอ็นต์บางรายการ เช่น Ruby คุณจะต้องดึงข้อมูลเอกสาร Discovery สำหรับ 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 ทั้ง 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()