Phần này cung cấp tài liệu tham khảo cho gói thuê bao dựa trên XML của Google thông báo Yêu cầu gợi ý, thông báo Phản hồi gợi ý. và Truy vấn tin nhắn.
<Hint>
(thông báo Phản hồi gợi ý)
Thành phần gốc của thông báo Phản hồi gợi ý. Thông báo Phản hồi gợi ý chỉ định những tổ hợp khách sạn hoặc hành trình nào cần được định giá lại. Chúng là nội dung phản hồi cho thông báo Yêu cầu gợi ý từ Google.
Thông báo Phản hồi gợi ý chỉ nên xác định những khách sạn có mức giá thay đổi kể từ lần gần đây nhất Google nhận được Phản hồi gợi ý thành công từ máy chủ của bạn.
Thông báo Phản hồi gợi ý sử dụng một trong các phương thức sau để chỉ định khách sạn và hành trình mà Google nên định giá lại:
Hành trình chính xác: Một tổ hợp ngày nhận phòng và thời gian lưu trú.
Phạm vi ngày nhận phòng: Xác định một phạm vi ngày nhận phòng ngày, bắt đầu bằng ngày nhận phòng đầu tiên và kết thúc bằng ngày cuối cùng ngày nhận phòng.
Thời gian lưu trú theo phạm vi (hay còn gọi là hành trình theo phạm vi)
Mỗi phương thức dùng một cú pháp riêng cho Phản hồi gợi ý .
Để biết thêm thông tin, hãy tham khảo bài viết Thông báo Phản hồi gợi ý.
Cú pháp
Phần tử <Hint>
sử dụng cú pháp khác nhau, tuỳ thuộc vào loại Gợi ý
Thư trả lời:
Hành trình chính xác
Dưới đây là cú pháp khi dùng hành trình chính xác trong thông báo Phản hồi gợi ý:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>hotel_ID</Property>
...
<Stay>
<CheckInDate>checkin_date</CheckInDate>
<LengthOfStay>number_of_nights</LengthOfStay>
</Stay>
</Item>
...
</Hint>
Phạm vi ngày nhận phòng
Dưới đây là ví dụ về cú pháp của phạm vi ngày nhận phòng trong Phản hồi gợi ý thông báo:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>hotel_ID</Property>
[...]
<!-- Required -->
<FirstDate>first_checkin_date</FirstDate>
<!-- Required -->
<LastDate>last_checkin_date</LastDate>
</Item>
...
</Hint>
Thời gian lưu trú theo phạm vi ngày
Dưới đây là cú pháp khi dùng thời gian lưu trú theo phạm vi ngày trong một Phản hồi gợi ý thông báo:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<!-- At least one is required -->
<Property>hotel_ID</Property>
[...]
<StaysIncludingRange>
<!-- Required -->
<FirstDate>first_date</FirstDate>
<!-- Optional -->
<LastDate>last_date</LastDate>
</StaysIncludingRange>
</Item>
...
</Hint>
Thuộc tính
Phần tử <Hint>
chứa một thuộc tính không bắt buộc: id
. Thời gian
nếu cung cấp, thuộc tính này được đưa vào dưới dạng thuộc tính hintId
trong <Query>
thư được gửi dựa trên <Hint>
này.
Phần tử con
Phần tử <Hint>
có các phần tử con sau:
Thành phần con | Bắt buộc? | Loại | Loại phản hồi gợi ý | Mô tả |
---|---|---|---|---|
<CheckInDate> | Required | Date | Hành trình chính xác | Ngày nhận phòng trong hành trình. |
<FirstDate> | Required | Date | Phạm vi ngày nhận phòng và hành trình theo phạm vi ngày | Ngày đầu tiên trong phạm vi ngày nhận phòng hoặc phạm vi ngày ở lại là thông báo Phản hồi gợi ý. Ngày được tính toàn bộ. |
<Item> | Required | Object | Tất cả | Vùng chứa khách sạn/hành trình cần cập nhật. |
<LastDate> | Required* | Date | Phạm vi ngày nhận phòng và hành trình theo phạm vi ngày | Ngày cuối cùng của phạm vi ngày nhận phòng hoặc phạm vi ngày ở lại là thông báo Phản hồi gợi ý. Ngày được tính toàn bộ. * Phần tử này là không bắt buộc đối với thời gian lưu trú theo phạm vi ngày. |
<LengthOfStay> | Required | integer | Hành trình chính xác | Số đêm trong hành trình, được biểu thị bằng số nguyên dương. |
<Property> | Required | string | Tất cả | Mã của khách sạn, sử dụng cùng một mã trong Danh sách khách sạn. Số
trong số
|
<Stay> | Required | Object | Hành trình chính xác | Vùng chứa <CheckinDate> và
<LengthOfStay> phần tử trong Gợi ý hành trình chính xác
Thư trả lời. Mỗi <Item> chỉ có thể chứa một
<Stay> . |
<StaysIncludingRange> | Required | Object | Hành trình theo phạm vi ngày | Vùng chứa các thành phần <FirstDate> và <LastDate> trong thông báo Phản hồi gợi ý sử dụng phương thức thời gian lưu trú theo phạm vi ngày. |
Ví dụ
Hành trình chính xác
Ví dụ sau đây xác định nhiều hành trình cho một cơ sở lưu trú thông báo Phản hồi gợi ý:
<!-- Exact Itinerary Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>3</LengthOfStay>
</Stay>
</Item>
<Item>
<Property>12345</Property>
<Stay>
<CheckInDate>2018-07-03</CheckInDate>
<LengthOfStay>4</LengthOfStay>
</Stay>
</Item>
</Hint>
Phạm vi ngày nhận phòng
Dưới đây là ví dụ về cách xác định hai khách sạn có giá đã thay đổi và cần phải cập nhật lại. Google thu thập tất cả các hành trình từ ngày 3 tháng 7 đến ngày 7 tháng 7 6 đối với tài sản 12345 và 67890:
<!-- Check-in Ranges Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<Item>
<Property>12345</Property>
<Property>67890</Property>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</Item>
</Hint>
Thời gian lưu trú theo phạm vi ngày
Dưới đây là ví dụ về hai cách sử dụng thời gian lưu trú theo phạm vi ngày khác nhau, một cách cho phạm vi nhiều đêm và một cách cho một đêm duy nhất:
<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
<!-- Google fetches prices for all itineraries (first and last date are set) -->
<Item>
<Property>12345</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
<LastDate>2018-07-06</LastDate>
</StaysIncludingRange>
</Item>
<!-- Google fetches prices for a single night (first date only) -->
<Item>
<Property>67890</Property>
<StaysIncludingRange>
<FirstDate>2018-07-03</FirstDate>
</StaysIncludingRange>
</Item>
</Hint>
Trong mỗi ví dụ trên, Google sẽ phản hồi bằng một thông báo <Query>
, sau đó bạn nên phản hồi bằng một thông báo <Transaction>
chứa thông tin cập nhật về giá cho các khách sạn/hành trình được xác định.
<HintRequest>
Thành phần gốc của thông báo Yêu cầu gợi ý. Google sẽ gửi một thông báo Yêu cầu gợi ý đến máy chủ của bạn và bạn phản hồi với thông tin xác định những khách sạn và hành trình có giá đã thay đổi so với lần gần nhất mà Google nhận được thông báo Phản hồi gợi ý thành công từ máy chủ của bạn.
Nếu có thay đổi về giá, Google sẽ gửi một <Query>
tìm nạp dữ liệu giá mới cho các khách sạn và hành trình đã chỉ định.
Để biết thêm thông tin, hãy tham khảo bài viết Thông báo Yêu cầu gợi ý.
Cú pháp
Phần tử <HintRequest>
sử dụng cú pháp sau:
Cú pháp
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
<LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>
Thuộc tính
Phần tử <HintRequest>
không có thuộc tính nào.
Phần tử con
Phần tử <HintRequest>
có các phần tử con như sau:
Thành phần con | Loại | Mô tả |
---|---|---|
<LastFetchTime> | DateTime | Lần gần đây nhất mà Google nhận được thông báo Phản hồi gợi ý
thành thông báo Yêu cầu gợi ý.
Nếu thời gian này cũ hơn lần gần đây nhất bạn đã cập nhật giá trên máy chủ của mình, thì bạn nên phản hồi bằng Gợi ý Tin nhắn phản hồi chỉ định những khách sạn đã thay đổi. Nếu không có lần tìm nạp thành công nào gần đây, thì giá trị này sẽ được đặt thành giá trị khoảng thời gian cố định (để tránh các vấn đề nghiêm trọng hơn với phần chưa thực hiện). Giá trị khoảng thời gian cố định hiện tại là 1000 giây, nhưng có thể thay đổi. Để biết thêm thông tin, tham khảo ý kiến Thông báo Phản hồi gợi ý. |
Ví dụ
Ví dụ sau đây cho thấy một thông báo Yêu cầu gợi ý:
Thông báo Yêu cầu gợi ý
Ví dụ sau đây cho thấy một thông báo Yêu cầu gợi ý:
<?xml version="1.0" encoding="UTF-8"?>
<HintRequest id="ABCDEF" timestamp="2018-06-07T16:20:00Z">
<LastFetchTime>2018-03-25T00:04:09Z</LastFetchTime>
</HintRequest>
<Query>
Phần tử gốc của thông báo Query
. Query
tin nhắn là các yêu cầu
của Google để cập nhật giá hoặc siêu dữ liệu. Chúng được dùng với cả chế độ phân phối lấy dữ liệu
và Mức giá đã thay đổi
chế độ phân phối.
Có ba loại thông báo Query
:
Cung cấp mức giá hiện tại: Google phản hồi một yêu cầu cụ thể của người dùng, đề nghị cung cấp thông tin cập nhật giá theo thời gian thực. Khi đối tác nhận được một
Live pricing query
thì đối tác nên trả lời bằng một thông báo<Transaction>
chứa thông tin về giá được yêu cầu trong phần tử<Result>
.Khi sử dụng tính năng định giá theo bối cảnh: Google sẽ cập nhật bộ nhớ đệm giá dựa trên các bối cảnh phổ biến trước đây. Khi bạn nhận được
With context query
, bạn nên trả lời bằng thông báo<Transaction>
có chứa thông tin về giá được yêu cầu trong phần tử<Result>
.Siêu dữ liệu: Google yêu cầu thông tin cập nhật về siêu dữ liệu cho phòng và Gói dịch vụ phòng cho các khách sạn được chỉ định. Khi nhận được thông báo
Metadata Query
, bạn cần phản hồi bằng thông báo<Transaction>
để chỉ định dữ liệu về phòng và Gói dịch vụ phòng trong phần tử<PropertyDataSet>
.
Để biết thêm thông tin, hãy tham khảo bài viết Tổng quan về giá cho các truy vấn về giá và siêu dữ liệu của Gói dịch vụ phòng cho các truy vấn siêu dữ liệu.
Sau đây là 3 loại cú pháp:
Cú pháp
Phần tử <Query>
sử dụng cú pháp sau:
Cung cấp mức giá hiện tại
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyList>
<Property>hotel_id</Property>
...
</PropertyList>
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</Query>
Có bối cảnh
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>YYYY-MM-DD</Checkin>
<Nights>number_of_nights</Nights>
<!-- Only for Check-in Date Range pricing queries (Changed Pricing) -->
<FirstDate>YYYY-MM-DD</FirstDate>
<LastDate>YYYY-MM-DD</LastDate>
<!-- Only for Ranged Stay pricing queries (Changed Pricing) -->
<AffectedNights>number_of_nights</AffectedNights>
<PropertyContextList>
<PropertyContext>
<Property>hotel_id</Property>
...
<!-- See documentation below for <Context> -->
<Context>
...
</Context>
</PropertyContext>
</PropertyContextList>
</Query>
Metadata
<HotelInfoProperties>
<Property>property_ID</Property>
...
</HotelInfoProperties>
Thuộc tính
Phần tử <Query>
có thể chứa một thuộc tính: latencySensitive
.
Thuộc tính latencySensitive
là không bắt buộc. Khi được cung cấp và đặt thành
true
, dấu hiệu này cho biết truy vấn là Live Pricing Query
. Để có Google
gửi truy vấn có thuộc tính latencySensitive
, hãy liên hệ với Nhóm hỗ trợ kỹ thuật
Người quản lý Tài khoản (TAM).
Phần tử con
Phần tử <Query>
có các phần tử con như sau:
Thành phần con | Loại truy vấn | Loại | Mô tả |
---|---|---|---|
<AffectedNights> | Pricing | integer | Số đêm trong một thời gian lưu trú theo phạm vi ngày. Phần tử này được sử dụng chỉ dành cho những cụm từ tìm kiếm về giá của Thời gian lưu trú theo phạm vi ngày được sử dụng trong chế độ Mức giá đã thay đổi. |
<Checkin> | Pricing | Date | Ngày thay đổi giá cụ thể. |
<Context> | Pricing (Live Pricing Queries only) | <Context> | Đối với Truy vấn giá hiện tại, hãy chỉ định một số thông số mà theo đó
truy vấn được thực hiện. Các phần tử con bao gồm:
Bạn có thể lặp lại phần tử |
<FirstDate> | Pricing | Date | Ngày bắt đầu của phạm vi các hành trình mà mức giá sẽ được áp dụng. Phần tử này chỉ dùng cho giá Phạm vi ngày nhận phòng cụm từ tìm kiếm được dùng trong chế độ Mức giá đã thay đổi. |
<HotelInfoProperties> | Metadata | string | Một hoặc nhiều cơ sở lưu trú mà Google muốn cập nhật
siêu dữ liệu về phòng và Gói dịch vụ phòng trong thông báo Query siêu dữ liệu.
Phần tử này có thể chứa một hoặc nhiều <Property>
các phần tử chỉ định mã cơ sở lưu trú khách sạn. |
<LastDate> | Pricing | Date | Ngày kết thúc của phạm vi các hành trình mà mức giá sẽ được áp dụng. Phần tử này chỉ dùng cho giá Phạm vi ngày nhận phòng cụm từ tìm kiếm được dùng với chế độ Lấy dữ liệu Gợi ý. |
<Nights> | Pricing | integer | Số đêm trong một hành trình cụ thể, tối đa 30 đêm. |
<PropertyList> | Pricing | Object | Một hoặc nhiều mã của khách sạn cần phải cập nhật giá. Hãy xác định từng khách sạn trong phần tử <PropertyList> <Property>pid1</Property> <Property>pid2</Property> </PropertyList> |
Ví dụ
Cụm từ tìm kiếm về giá
Ví dụ sau đây thể hiện một thông báo Truy vấn giá yêu cầu giá thông tin cập nhật cho một nhóm khách sạn, áp dụng cho 3 đêm và bắt đầu vào Ngày 10 tháng 6 năm 2018:
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>3</Nights>
<PropertyList>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</PropertyList>
</Query>
Cụm từ tìm kiếm về chế độ cung cấp mức giá hiện tại
Ví dụ sau đây cho thấy một Truy vấn Yêu cầu cung cấp giá hiện tại có thời gian phản hồi giới hạn 500 mili giây:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="8"/>
<Child age="5"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Có truy vấn theo ngữ cảnh
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<Checkin>2023-05-23</Checkin>
<Nights>2</Nights>
<PropertyContextList>
<PropertyContext>
<Property>8675309</Property>
<!-- In the future, occupancy and device might be specified -->
<Context><UserCountry>US</UserCountry></Context>
<Context><UserCountry>GB</UserCountry></Context>
</PropertyContext>
<PropertyContext>
<Property>8675310</Property>
<Property>8675311</Property>
<Context><UserCountry>CA</UserCountry></Context>
</PropertyContext>
</PropertyContextList>
</Query>
Truy vấn siêu dữ liệu
<?xml version="1.0" encoding="UTF-8"?>
<Query>
<HotelInfoProperties>
<Property>pid5</Property>
<Property>pid8</Property>
<Property>pid13</Property>
<Property>pid21</Property>
</HotelInfoProperties>
</Query>
Các ví dụ khác như thời gian lưu trú theo phạm vi ngày và phạm vi ngày nhận phòng
hãy tham khảo các ví dụ về thông báo Query
.
<Context>
Phần tử <Context>
mô tả thông tin cho Live pricing query
,
bao gồm cả số lượng và loại khách, quốc gia của người dùng và thiết bị của người dùng.
Không bao giờ dùng nhiều <Context>
với nhiều quốc gia của người dùng hoặc
thiết bị của người dùng. Khi nhiều <Context>
được dùng để truy vấn nhiều
số người lưu trú, hãy cung cấp từng giá cho số người lưu trú dưới dạng một Gói dịch vụ phòng bổ sung
đối với cơ sở lưu trú hoặc hành trình tương ứng. Mỗi cơ sở lưu trú hoặc hành trình phải
có một khối <Result>
duy nhất với các mức giá cho nhiều mức sức chứa
bao gồm.
Để biết thông tin chi tiết về phản hồi cho truy vấn <Context>
, hãy xem
<OccupancyDetails>
.
Cú pháp
Phần tử <Context>
sử dụng cú pháp sau:
Cú pháp
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true_or_false">
<Checkin>date</Checkin>
<Nights>number_of_nights</Nights>
<DeadlineMs>number_of_milliseconds</DeadlineMs>
<PropertyList>
<Property>property_ID</Property>
</PropertyList>
<Context>
<Occupancy>total_number_of_guests</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
<UserCountry>end_user_country</UserCountry>
<UserDevice>user_device_type</UserDevice>
</Context>
</Query>
Phần tử con
Phần tử <Context>
có các phần tử con sau:
Thành phần con | Loại truy vấn | Loại | Mô tả |
---|---|---|---|
<Occupancy> | Pricing | integer | Xác định tổng số khách. Mặc dù không bắt buộc nhưng các truy vấn có Lưu ý: |
<OccupancyDetails> | Pricing | Object | Theo sau là <Occupancy> . Chỉ định khách theo
loại, bao gồm:
Mặc dù không bắt buộc nhưng các truy vấn có Lưu ý: Không phải lúc nào |
<UserCountry> | Pricing | string | Lọc đơn giá theo quốc gia nơi người dùng đang có mặt. Giá trị là
Mã quốc gia gồm 2 chữ cái, chẳng hạn như Các truy vấn có xác định |
<UserDevice> | Pricing | string | Lọc đơn giá theo loại thiết bị mà người dùng sử dụng để tìm kiếm. Các loại tệp có thể được thu thập dữ liệu bao gồm:
Truy vấn có |
Ví dụ
Số người lưu trú
Ví dụ sau đây cho thấy một truy vấn Yêu cầu cung cấp giá hiện tại cho <Occupancy>
trong <Context>
. Cụm từ tìm kiếm Mức giá hiện tại dành cho 3 người lớn
khách.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Thông tin về người lưu trú
Ví dụ sau đây cho thấy một truy vấn về chế độ Cung cấp giá hiện tại có
<OccupancyDetails>
thuộc <Context>
.
Truy vấn Yêu cầu cung cấp mức giá hiện tại dành cho 4 khách, trong đó có 2 khách
là trẻ em và muốn tìm một mức giá áp dụng cho lượt đặt phòng từ khách tại Hoa Kỳ
một thiết bị di động:
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>5</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>8675309</Property>
</PropertyList>
<Context>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="4"/>
<Child age="12"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>
Nhiều ngữ cảnh
Dưới đây là ví dụ về việc sử dụng thành phần <Context>
bổ sung trong một truy vấn Yêu cầu cung cấp giá hiện tại.
<?xml version="1.0" encoding="UTF-8"?>
<Query latencySensitive="true">
<Checkin>2017-06-07</Checkin>
<Nights>4</Nights>
<DeadlineMs>500</DeadlineMs>
<PropertyList>
<Property>45617</Property>
</PropertyList>
<Context>
<Occupancy>3</Occupancy>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
<Context>
<Occupancy>6</Occupancy>
<OccupancyDetails>
<NumAdults>4</NumAdults>
<Children>
<Child age="6"/>
<Child age="10"/>
</Children>
</OccupancyDetails>
<UserCountry>US</UserCountry>
<UserDevice>mobile</UserDevice>
</Context>
</Query>