สร้างและอัปโหลดฟีดจุดที่น่าสนใจ
เมื่อสร้างและอัปโหลดฟีด POI ให้ทำตามวิธีการต่อไปนี้
- ทำตามข้อกำหนดที่อธิบายไว้ในฟีดจุดที่น่าสนใจ
สำหรับไฟล์ข้อมูลจุดที่น่าสนใจ เราขอแนะนำให้ใช้ชื่อไฟล์ข้อมูลจุดที่น่าสนใจที่ไม่ซ้ำกันสำหรับการอัปโหลดแต่ละครั้ง ใส่การประทับเวลาในชื่อไฟล์ เช่น
POI_1633621547.json - อัปโหลดฟีดไปยังเซิร์ฟเวอร์ SFTP ของ POI ในพื้นที่ทุกวันเพื่อรีเฟรชข้อมูลทั้งหมด
- คุณดูรายละเอียดเซิร์ฟเวอร์ SFTP ได้ในส่วนการกำหนดค่า > ฟีดของ Partner Portal
- ดูสถานะการนำเข้าฟีดในส่วนการนำเข้า > ประวัติของ Partner Portal
หลักเกณฑ์การสร้างแพ็กเกจไฟล์
โปรดปฏิบัติตามข้อกำหนดด้านแพ็กเกจต่อไปนี้เพื่อให้การนำเข้าสำเร็จ
- ไฟล์เก็บถาวร JSON แบบรวมไฟล์เดียว (จำเป็น): รวมระเบียนเอนทิตีทั้งหมดไว้ในไฟล์ JSON ไฟล์เดียว เราขอแนะนำให้บีบอัดเป็นไฟล์เก็บถาวร GZIP ไฟล์เดียว แล้วอัปโหลด
- คำเตือนเกี่ยวกับรูปแบบที่ไม่ควรใช้: อย่าใช้ไฟล์ 1 ไฟล์ต่อเอนทิตีหรือ หลายไฟล์ที่แยกตามประเทศในที่เก็บเดียวกัน ระบบไม่รองรับวิธีนี้และจะทำให้การแยกข้อมูลล้มเหลว
การสนับสนุนหลายภาษา
ฟีดจุดที่น่าสนใจรองรับการแสดงเนื้อหาที่แปลแล้วสำหรับช่องที่เฉพาะเจาะจง ช่องต่อไปนี้เป็นประเภท Text และรองรับการแปลภาษา
namedescriptiondisplay_address
หากต้องการแสดงเนื้อหาในหลายภาษา คุณต้องระบุ default_locale ในช่องและระบุสตริงที่แปลแล้วในรายการ localizations
ระบุการแปลทั้งหมดสำหรับเอนทิตีในรายการ POI รายการเดียว อย่าแยกเอนทิตีเดียวไว้ในไฟล์ JSON หลายภาษา
ตัวอย่าง
"name": {
"localizations": [
{
"locale": "en",
"text": "Tasty Bites Test Restaurant"
},
{
"locale": "es",
"text": "Restaurante de prueba Tasty Bites"
}
],
"default_locale": "en"
}
หลักเกณฑ์เกี่ยวกับรูปภาพ
- รูปแบบ: ต้องเป็น JPEG, PNG หรือ WebP
- ขนาดไฟล์สูงสุด: ไม่เกิน 30 MB ต่อรูปภาพ
- ขนาดสูงสุด: รวมไม่เกิน 75 เมกะพิกเซล (ความกว้าง x ความสูง < 75,000,000)
- ประเภท URL: เส้นทางโดยตรงไปยังชิ้นงานรูปภาพ (เช่น ลงท้ายด้วย .jpg)
- สิทธิ์: ตรวจสอบว่าเซิร์ฟเวอร์โฮสติ้งอนุญาตให้เข้าถึง Googlebot หรือ Crawler และไม่มี robots.txt ที่บล็อกไดเรกทอรีรูปภาพ
- การค้นหาอย่างปลอดภัย: รูปภาพต้องเป็นไปตามนโยบายการค้นหาอย่างปลอดภัยของ Google
ข้อกำหนดฟีด
ข้อกำหนดของช่อง
VssPoi
แสดงถึงเอนทิตีจุดที่น่าสนใจ (POI) รายการเดียว เช่น โรงแรมหรือร้านอาหาร
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
poi_id | สตริง | ต้องระบุ | ต้องระบุ สตริงที่พาร์ทเนอร์สร้างขึ้นเพื่อระบุจุดที่น่าสนใจ |
name | object(Text) | ต้องระบุ | ต้องระบุ ชื่อของจุดที่น่าสนใจ |
telephone | สตริง | หมายเลขโทรศัพท์ติดต่อของจุดที่น่าสนใจ รวมถึงรหัสประเทศและรหัสพื้นที่ เช่น +14567891234 | |
url | สตริง | URL ของเว็บไซต์สาธารณะของจุดที่น่าสนใจ หมายเหตุ: ระบบจะใช้ข้อมูลนี้เพื่อการจับคู่เท่านั้น ไม่ใช่เพื่อการแสดงผล | |
location | object(GeoCoordinates) | ต้องระบุ | ต้องระบุ สถานที่ตั้งของจุดที่น่าสนใจ |
display_address | object(Text) | ที่อยู่ที่แสดงใน UI | |
images | อาร์เรย์ของออบเจ็กต์(Image) | รูปภาพของจุดที่น่าสนใจ จำนวนรูปภาพสูงสุด: 5 รูป | |
rating | ตัวเลข | คะแนนเฉลี่ยของจุดที่น่าสนใจ | |
num_ratings | ตัวเลข | จำนวนคะแนนที่ส่งผลต่อช่อง rating | |
rating_scale | ตัวเลข | สเกลการให้คะแนนที่ใช้สำหรับช่อง rating หากคะแนนสูงสุดคือ 5 แสดงว่า
rating_scale คือ 5 | |
category | enum(Category) | ต้องระบุ | ต้องระบุ แสดงหมวดหมู่ของจุดที่น่าสนใจ |
description | object(Text) | คำอธิบายของจุดที่น่าสนใจ | |
| oneOf(additional_data) | ต้องระบุ | ตั้งค่าได้เพียง 1 ฟิลด์ใน oneOf นี้ |
ข้อความ
แสดงข้อความที่มีการแปล
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
localizations | อาร์เรย์ของออบเจ็กต์(LocalizedString) | สตริงที่แปลแล้ว | |
default_locale | สตริง | ภาษาเริ่มต้นต้องอยู่ใน การแปล |
LocalizedString
แสดงสตริงที่แปลแล้ว
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
locale | สตริง | แท็กภาษาของข้อความ เช่น "en", "en-US" หรือ "sr-Latn" | |
text | สตริง | ข้อความในภาษาที่ระบุ |
GeoCoordinates
ข้อมูลทางภูมิศาสตร์ของสถานที่ตั้ง ซึ่งรวมถึงละติจูด ลองจิจูด และที่อยู่
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
latitude | ตัวเลข | [-90, +90] องศา (รวม) ต้องระบุหากตั้งค่าลองจิจูดไว้ หรือจะระบุหรือไม่ก็ได้ | |
longitude | ตัวเลข | [-180, +180] องศา (รวม) ต้องระบุหากตั้งค่าละติจูดไว้ ไม่เช่นนั้นก็ไม่จำเป็น | |
| oneOf(addresses) | ต้องระบุ | ตั้งค่าได้เพียง 1 ฟิลด์ใน oneOf นี้ |
PostalAddress
ที่อยู่ทางไปรษณีย์ของสถานที่
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
country | สตริง | ต้องระบุ | ต้องระบุ ประเทศ โดยใช้รหัสประเทศ ISO 3166-1 alpha-2 เช่น "US" |
locality | สตริง | ต้องระบุ | ต้องระบุ ท้องถิ่น/เมือง เช่น "Mountain View" |
region | สตริง | ภูมิภาค/รัฐ/จังหวัด เช่น "CA" ฟิลด์นี้จำเป็นต้องระบุในประเทศที่ภูมิภาคเป็นส่วนหนึ่งของที่อยู่โดยทั่วไปเท่านั้น (ไม่บังคับ) | |
postal_code | สตริง | ต้องระบุ | ต้องระบุ รหัสไปรษณีย์ เช่น "94043" |
street_address | สตริง | ต้องระบุ | ต้องระบุ ที่อยู่ เช่น "1600 Amphitheatre Pkwy" |
รูปภาพ
แสดงรูปภาพของจุดที่น่าสนใจ (POI)
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
url | สตริง | URL ของรูปภาพ Google จะทำการ Crawl สื่อที่โฮสต์ที่ URL นี้ ความยาวสูงสุด: 2000 | |
alt_text | object(Text) | ข้อความสำรองที่จะใช้สำหรับการช่วยเหลือพิเศษ |
HotelData
ข้อมูลฟีดเฉพาะโรงแรม
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
hotel_star_class | ตัวเลข | ค่าดาวของระดับโรงแรมอย่างเป็นทางการ ใช้ในป้ายกำกับได้ เช่น "โรงแรม 5 ดาว" ค่านี้ควรเป็นจำนวนเต็มระหว่าง 0 ถึง 5 ควรใช้คะแนน 0 หากไม่มีคะแนนหรือไม่ได้ระบุคะแนน เมื่อตั้งค่าเป็น 0 ระบบจะไม่แสดงระดับดาวใน UI สำหรับผู้ใช้ | |
brand_ids | อาร์เรย์ของสตริง | แบรนด์ที่แสดงโรงแรมนี้ได้ หากฟิลด์นี้ว่างเปล่า ระบบจะแสดงโรงแรมภายใต้แบรนด์ใดก็ได้ที่เชื่อมโยงกับฟีด |
LocalData
ข้อมูลฟีดเฉพาะของสถานประกอบการ
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
business_hours | object(BusinessHours) | เวลาทําการปกติของสถานประกอบการ | |
price_range | object(PriceRange) | ช่วงราคาของบริการที่สถานประกอบการนำเสนอ | |
establishment_category | object(Text) | ประเภทของสถานประกอบการ | |
brand_landing_pages | อาร์เรย์ของออบเจ็กต์(BrandLandingPages) | ต้องระบุ | ต้องระบุ หน้า Landing Page ของแบรนด์ ต้องระบุอย่างน้อย 1 รายการ |
BusinessHours
แสดงช่วงเวลาที่สถานที่นี้เปิดทำการ เก็บคอลเล็กชันของอินสแตนซ์ [TimeRange][madden.vss_poi_feed.TimeRange] ตัวอย่าง: เปิดวันเสาร์ตั้งแต่ 09:00-12:00 น. และ 13:00-17:00 น. time_ranges { open_day: SATURDAY open_time: { hours: 9, minutes: 0 } close_day: SATURDAY close_time: { hours: 12, minutes: 0 } } time_rages { open_day: SATURDAY open_time: { hours: 13, minutes: 0 } close_day: SATURDAY close_time: { hours: 17, minutes: 0 } } ตัวอย่าง: เปิดวันเสาร์ตั้งแต่ 21:00 น. ถึงวันอาทิตย์ 02:00 น. time_ranges { open_day: SATURDAY open_time: { hours: 21, minutes: 0 } close_day: SUNDAY close_time: { hours: 2, minutes: 0 } }
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
time_ranges | อาร์เรย์ของออบเจ็กต์(TimeRange) | ชุดเวลาที่จุดที่น่าสนใจนี้เปิดให้บริการ แต่ละระยะเวลาแสดงถึงช่วงเวลาที่จุดที่น่าสนใจเปิดทำการในระหว่างสัปดาห์ |
TimeRange
แสดงช่วงเวลาที่จุดที่น่าสนใจเปิด โดยเริ่มในวันที่/เวลาเปิดที่ระบุและปิดในวันที่/เวลาปิดที่ระบุ เวลาปิดต้องอยู่หลังเวลาเปิด เช่น ในวันเดียวกันหรือในวันถัดไป
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
open_day | enum(DayOfWeek) | วันเปิดของช่วงเวลา | |
open_time | object(TimeOfDay) | เวลาเปิดของช่วงเวลา | |
close_day | enum(DayOfWeek) | วันสิ้นสุดของช่วงเวลา | |
close_time | object(TimeOfDay) | เวลาสิ้นสุดของช่วงเวลา |
TimeOfDay
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
hours | ตัวเลข | ชั่วโมงของวันในรูปแบบ 24 ชั่วโมง ต้องมากกว่าหรือเท่ากับ 0 และโดยทั่วไปต้องน้อยกว่าหรือเท่ากับ 23 API อาจเลือกอนุญาตค่า "24:00:00" สำหรับสถานการณ์ต่างๆ เช่น เวลาปิดทำการของธุรกิจ | |
minutes | ตัวเลข | นาทีของชั่วโมง ต้องมากกว่าหรือเท่ากับ 0 และน้อยกว่าหรือเท่ากับ 59 | |
seconds | ตัวเลข | วินาทีของนาที ต้องมากกว่าหรือเท่ากับ 0 และโดยทั่วไปต้องน้อยกว่าหรือเท่ากับ 59 API อาจอนุญาตให้ใช้ค่า 60 หากอนุญาตให้ใช้อธิกวินาที | |
nanos | ตัวเลข | เศษส่วนของวินาทีในหน่วยนาโนวินาที ต้องมากกว่าหรือเท่ากับ 0 และน้อยกว่าหรือเท่ากับ 999,999,999 |
PriceRange
ช่วงราคาของบริการที่จุดที่น่าสนใจเสนอ
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
min_price | object(Money) | ราคาต่ำสุดของบริการที่จุดที่น่าสนใจเสนอ | |
max_price | object(Money) | ราคาสูงสุดของบริการที่จุดที่น่าสนใจเสนอ |
เงินทอง
แสดงจำนวนเงินพร้อมประเภทสกุลเงิน
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
currency_code | สตริง | รหัสสกุลเงิน 3 ตัวอักษรที่กำหนดไว้ใน ISO 4217 | |
units | ตัวเลข | หน่วยเต็มของจำนวนเงิน
เช่น หาก currencyCode คือ "USD" 1 หน่วยจะเท่ากับ 1 ดอลลาร์สหรัฐ | |
nanos | ตัวเลข | จำนวนหน่วยนาโน (10^-9) ของจำนวนเงิน
ค่าต้องอยู่ระหว่าง -999,999,999 ถึง +999,999,999 (รวม)
หาก units เป็นบวก nanos ต้องเป็นบวกหรือ 0
หาก units เป็น 0 nanos จะเป็นค่าบวก 0 หรือค่าลบก็ได้
หาก units ติดลบ nanos ต้องติดลบหรือเป็น 0
ตัวอย่างเช่น $-1.75 จะแสดงเป็น units=-1 และ nanos=-750,000,000 |
BrandLandingPages
หน้า Landing Page ของแบรนด์ที่แปลแล้วสำหรับจุดที่น่าสนใจ (POI) จุดเดียว
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
brand_id | สตริง | ต้องระบุ | ต้องระบุ แบรนด์ที่ใช้การกำหนดค่านี้ |
localized_landing_pages | อาร์เรย์ของออบเจ็กต์(LocalizedLandingPage) | หน้า Landing Page ที่แปลแล้ว ค่าของช่อง URL และภาษาต้องไม่ซ้ำกันในหน้า Landing Page ที่แปลแล้วทั้งหมด | |
default_url | สตริง | ต้องระบุ | ต้องระบุ URL ของหน้า Landing Page เริ่มต้นที่จะใช้เมื่อไม่มีหน้า Landing Page ที่แปลแล้วตรงกับภาษาของผู้ใช้ |
LocalizedLandingPage
หน้า Landing Page ที่แปลแล้วสำหรับจุดที่น่าสนใจ (POI)
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
url | สตริง | URL ของหน้า Landing Page ความยาวสูงสุด: 2,000 ตัวอักษร | |
locales | อาร์เรย์ของสตริง | จำกัดหน้านี้ไว้สำหรับผู้ใช้ที่มีค่ากำหนดภาษาที่ระบุ ต้องมีแท็กภาษา เช่น "en", "en-US" หรือ "sr-Latn" |
หมวดหมู่
แสดงหมวดหมู่ของจุดที่น่าสนใจ
โดยควรตรงกับadditional_dataฟิลด์ oneof ด้านล่าง
| ชื่อ | คำอธิบาย |
|---|---|
UNKNOWN_CATEGORY | |
HOTEL | |
LOCAL |
วันของสัปดาห์
แสดงวันในสัปดาห์
| ชื่อ | คำอธิบาย |
|---|---|
DAY_OF_WEEK_UNSPECIFIED | ไม่ได้ระบุวันในสัปดาห์ |
MONDAY | วันจันทร์ |
TUESDAY | อังคาร |
WEDNESDAY | พุธ |
THURSDAY | พฤหัสบดี |
FRIDAY | ศุกร์ |
SATURDAY | เสาร์ |
SUNDAY | วันอาทิตย์ |
additional_data
ต้องระบุ ฟิลด์เฉพาะหมวดหมู่
โดยควรตรงกับช่อง category ด้านบน
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
hotel_data | object(HotelData) | ไม่รวมกับ | ฟิลด์เฉพาะของโรงแรม |
local_data | object(LocalData) | ใช้ร่วมกับ | ช่องเฉพาะของท้องถิ่น |
ที่อยู่
ต้องระบุ ที่อยู่ของสถานที่
| ชื่อช่อง | ประเภท | ข้อกำหนด | คำอธิบาย |
|---|---|---|---|
address | object(PostalAddress) | ที่อยู่ทางไปรษณีย์ของสถานที่ตั้ง |
คำจำกัดความ
คำจำกัดความของ VssPoiFeed
// Represents a Point of Interest (POI) data feed provided by a partner. export message VssPoiFeed { // The POIs in the feed. repeated VssPoi data = 1; }
คำจำกัดความของ VssPoi
// Represents a single Point of Interest (POI) entity e.g. a hotel or // restaurant. export message VssPoi { // Required. A string generated by the partner that identifies a POI. string poi_id = 1; // The entity name, telephone, url and location are used to support // matching partner inventory with entities already present on Google. // Required. The name of the POI. Text name = 2; // The contact telephone number of the POI including its country and // area codes, e.g. +14567891234. string telephone = 3 [(datapol.semantic_type) = ST_PHONE_NUMBER]; // The url of the POI's public website. // Note: This will be used just for matching purposes, not for display. string url = 4; // Required. The location of the POI. GeoCoordinates location = 5; // The address displayed on the UI. Text display_address = 17; // Images of the POI. // Max number of images: 5. repeated Image images = 6; // Average rating for the POI. float rating = 12; // The number of contributing ratings for the `rating` field. int64 num_ratings = 13; // The rating scale used for the `rating` field. If max rating is 5, then // rating_scale is 5. int32 rating_scale = 14; // Represents the category of the POI. // It should match the `additional_data` oneof field below. export enum Category { LOCAL = 4; } // Required. Represents the category of the POI. Category category = 9; // A description of the POI. Text description = 16; // Required. Category specific fields. // It should match the `category` field above. oneof additional_data { // Local specific fields. LocalData local_data = 15; } }
คำจำกัดความของข้อความ
// Represents a text with localizations. message Text { // Represents a localized string. message LocalizedString { // The text's language tag, such as "en", "en-US" or "sr-Latn". string locale = 1; // The text in the specified locale. string text = 2; } // The localized strings. repeated LocalizedString localizations = 1; // The locale to use as the default language it must be present in the // localizations. string default_locale = 2; }
คำจำกัดความของ GeoCoordinates
// The Geo data of a location, including latitude, longitude, and address. message GeoCoordinates { option (datapol.msg_semantic_type) = ST_LOCATION; // [-90, +90] degrees (inclusive). // Required if longitude is set, otherwise nice to have. double latitude = 1; // [-180, +180] degrees (inclusive). // Required if latitude is set, otherwise nice to have. double longitude = 2; // Required. Address for a location. oneof addresses { // Postal address of the location. PostalAddress address = 3; } }
คำจำกัดความของ PostalAddress
// The postal address for the location. message PostalAddress { option (datapol.msg_semantic_type) = ST_LOCATION; // Required. The country, using ISO 3166-1 alpha-2 country code, e.g. "US". string country = 1; // Required. The locality/city, e.g. "Mountain View". string locality = 2; // The region/state/province, e.g. "CA". This field is only required in // countries where region is commonly a part of the address. (optional) string region = 3; // Required. The postal code, e.g. "94043". string postal_code = 4; // Required. The street address, e.g. "1600 Amphitheatre Pkwy". string street_address = 5; }
ความคมชัดของรูปภาพ
// Represents an image of the Point of Interest (POI). export message Image { // The url of the image. Google will crawl the media hosted at this URL. // Max length: 2000. string url = 1; // The alternative text to be used for accessibility. Text alt_text = 2; }
คำจำกัดความของ LocalData
// Establishment specific feed data. message LocalData { // The regular business hours of the establishment. BusinessHours business_hours = 1; // Price range of the services offered by the establishment. PriceRange price_range = 2; // The type of establishment. Text establishment_category = 3; // Required. The brand landing pages. At least one must be provided. repeated BrandLandingPages brand_landing_pages = 4; }
คำจำกัดความของ BrandLandingPages
// The Localized brand landing pages for a single Point of Interest (POI). message BrandLandingPages { // Required. The brand this configuration applies to. string brand_id = 1 [(datapol.semantic_type) = ST_PARTNER_ID]; // Localized landing page for the Point of Interest (POI). message LocalizedLandingPage { // The url of the landing page. // Max length: 2000. string url = 1; // Restricts this page to users with the specified language preference. // Must contain language tags, such as "en", "en-US" or "sr-Latn". repeated string locales = 3; } // The localized landing pages. // The url and locales fields values must be unique across all the localized // landing pages. repeated LocalizedLandingPage localized_landing_pages = 2; // Required. The default landing page url to be used when none of the // localized landing pages matches the user's language. string default_url = 3; }
ตัวอย่าง
ฟีดจุดที่น่าสนใจ
ชื่อไฟล์: poi_1707240000.json
{ "data": [ { "poi_id": "test_restaurant_1", "name": { "localizations": [ { "locale": "en", "text": "Tasty Bites Test Restaurant" } ], "default_locale": "en" }, "telephone": "+1234567890", "url": "https://www.tastybitestest.com", "location": { "latitude": 37.422, "longitude": -122.084, "address": { "country": "US", "locality": "Mountain View", "postal_code": "94043", "street_address": "1600 Amphitheatre Pkwy" } }, "display_address": { "localizations": [ { "locale": "en", "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" } ], "default_locale": "en" }, "images": [ { "url": "https://www.tastybitestest.com/images/interior.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Cozy dining area of Tasty Bites" } ], "default_locale": "en" } } ], "rating": 4.7, "num_ratings": 150, "rating_scale": 5, "category": "LOCAL", "description": { "localizations": [ { "locale": "en", "text": "A mock restaurant for testing the POI feed ingestion." } ], "default_locale": "en" }, "local_data": { "establishment_category": { "localizations": [ { "locale": "en", "text": "Restaurant" } ], "default_locale": "en" }, "price_range": { "min_price": { "currency_code": "USD", "units": 15, "nanos": 0 }, "max_price": { "currency_code": "USD", "units": 45, "nanos": 0 } }, "business_hours": { "time_ranges": [ { "open_day": "MONDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "MONDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "TUESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "TUESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "WEDNESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "WEDNESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "THURSDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "THURSDAY", "close_time": { "hours": 22, "minutes": 0 } }, { "open_day": "FRIDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "FRIDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SATURDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SATURDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SUNDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SUNDAY", "close_time": { "hours": 20, "minutes": 0 } } ] }, "brand_landing_pages": [ { "brand_id": "tasty_bites_brand", "localized_landing_pages": [ { "url": "https://www.tastybitestest.com/en", "locales": ["en-US", "en-GB"] } ], "default_url": "https://www.tastybitestest.com" } ] } } ] }
ฟีด POI หลายภาษา
ชื่อไฟล์: poi_multilingual.json
{ "data": [ { "poi_id": "test_restaurant_1", "name": { "localizations": [ { "locale": "en", "text": "Tasty Bites Test Restaurant" }, { "locale": "fr", "text": "Restaurant de test Tasty Bites" } ], "default_locale": "en" }, "telephone": "+1234567890", "url": "https://www.tastybitestest.com", "location": { "latitude": 37.422, "longitude": -122.084, "address": { "country": "US", "locality": "Mountain View", "postal_code": "94043", "street_address": "1600 Amphitheatre Pkwy" } }, "display_address": { "localizations": [ { "locale": "en", "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" }, { "locale": "fr", "text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" } ], "default_locale": "en" }, "images": [ { "url": "https://www.tastybitestest.com/images/interior.jpg", "alt_text": { "localizations": [ { "locale": "en", "text": "Cozy dining area of Tasty Bites" }, { "locale": "fr", "text": "Espace salle à manger accueillant de Tasty Bites" } ], "default_locale": "en" } } ], "rating": 4.7, "num_ratings": 150, "rating_scale": 5, "category": "LOCAL", "description": { "localizations": [ { "locale": "en", "text": "A mock restaurant for testing the POI feed ingestion." }, { "locale": "fr", "text": "Un faux restaurant pour tester l'ingestion de flux de points d'intérêt." } ], "default_locale": "en" }, "local_data": { "establishment_category": { "localizations": [ { "locale": "en", "text": "Restaurant" }, { "locale": "fr", "text": "Restaurant" } ], "default_locale": "en" }, "price_range": { "min_price": { "currency_code": "USD", "units": 15, "nanos": 0 }, "max_price": { "currency_code": "USD", "units": 45, "nanos": 0 } }, "business_hours": { "time_ranges": [ { "open_day": "MONDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "MONDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "TUESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "TUESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "WEDNESDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "WEDNESDAY", "close_time": { "hours": 21, "minutes": 0 } }, { "open_day": "THURSDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "THURSDAY", "close_time": { "hours": 22, "minutes": 0 } }, { "open_day": "FRIDAY", "open_time": { "hours": 11, "minutes": 0 }, "close_day": "FRIDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SATURDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SATURDAY", "close_time": { "hours": 23, "minutes": 0 } }, { "open_day": "SUNDAY", "open_time": { "hours": 10, "minutes": 0 }, "close_day": "SUNDAY", "close_time": { "hours": 20, "minutes": 0 } } ] }, "brand_landing_pages": [ { "brand_id": "tasty_bites_brand", "localized_landing_pages": [ { "url": "https://www.tastybitestest.com/fr", "locales": ["fr-FR", "fr-CA"] }, { "url": "https://www.tastybitestest.com/en", "locales": ["en-US", "en-GB"] } ], "default_url": "https://www.tastybitestest.com" } ] } } ] }