প্রশ্ন & ইঙ্গিত XML রেফারেন্স

এই বিভাগে গুগল এক্সএমএল-ভিত্তিক হিন্ট রিকোয়েস্ট মেসেজ , হিন্ট রেসপন্স মেসেজ এবং কোয়েরি মেসেজগুলোর রেফারেন্স দেওয়া হয়েছে।

<Hint> (ইঙ্গিত প্রতিক্রিয়া বার্তা)

হিন্ট রেসপন্স মেসেজের মূল উপাদান। হিন্ট রেসপন্স মেসেজগুলো নির্দিষ্ট করে দেয় কোন হোটেল বা ভ্রমণপথের সংমিশ্রণগুলোর মূল্য পুনঃনির্ধারণ করা উচিত। গুগল থেকে আসা একটি হিন্ট রিকোয়েস্ট মেসেজের জবাবে আপনি এই মেসেজটি দেন।

একটি হিন্ট রেসপন্স মেসেজে শুধুমাত্র সেই হোটেলগুলোর নাম উল্লেখ করা উচিত, যেগুলোর দাম আপনার সার্ভার থেকে গুগলের শেষবার সফল হিন্ট রেসপন্স পাওয়ার পর থেকে পরিবর্তিত হয়েছে।

কোন হোটেল এবং ভ্রমণসূচীর মূল্য গুগল পুনরায় নির্ধারণ করবে, তা নির্দিষ্ট করার জন্য হিন্ট রেসপন্স মেসেজগুলো নিম্নলিখিত পদ্ধতিগুলোর মধ্যে একটি ব্যবহার করে:

  • সুনির্দিষ্ট ভ্রমণসূচী : চেক-ইন তারিখ এবং অবস্থানের সময়কালের সমন্বয়।

  • চেক-ইন তারিখের পরিসর : প্রথম চেক-ইন তারিখ থেকে শুরু করে শেষ চেক-ইন তারিখ পর্যন্ত একটি নির্দিষ্ট সময়সীমা উল্লেখ করে।

  • বিস্তৃত পরিসরের অবস্থান (বা বিস্তৃত পরিসরের ভ্রমণসূচী )

এই পদ্ধতিগুলোর প্রতিটির জন্য হিন্ট রেসপন্স মেসেজের ক্ষেত্রে ভিন্ন সিনট্যাক্স প্রয়োজন হয়।

আরও তথ্যের জন্য, ইঙ্গিত প্রতিক্রিয়া বার্তাগুলি দেখুন।

সিনট্যাক্স

হিন্ট রেসপন্স মেসেজের ধরনের ওপর নির্ভর করে <Hint> এলিমেন্টের সিনট্যাক্স ভিন্ন হয়:

সঠিক ভ্রমণসূচী

একটি হিন্ট রেসপন্স মেসেজে সুনির্দিষ্ট ভ্রমণপথের সিনট্যাক্স নিচে দেখানো হলো:

<!-- 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>

চেক-ইন পরিসীমা

একটি হিন্ট রেসপন্স মেসেজে চেক-ইন রেঞ্জের সিনট্যাক্স নিচে দেখানো হলো:

<!-- 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>

রেঞ্জড স্টে

একটি হিন্ট রেসপন্স মেসেজে রেঞ্জড স্টে (ranged stays)-এর সিনট্যাক্স নিচে দেখানো হলো:

<!-- Ranged Stay Hint Response -->
<?xml version="1.0" encoding="UTF-8"?>
<Hint>
  <Item>
    <!-- At least one is required -->
    <Property>1458700</Property>
    <Property>5418701</Property>
    <StaysIncludingRange>
      <!-- Required -->
      <FirstDate>2025-04-28</FirstDate>
      <!-- Optional -->
      <LastDate>2025-04-29</LastDate>
    </StaysIncludingRange>
  </Item>
  ...
</Hint>

বৈশিষ্ট্য

<Hint> এলিমেন্টটিতে id নামে একটি ঐচ্ছিক অ্যাট্রিবিউট থাকে। এটি প্রদান করা হলে, এই <Hint> এর উপর ভিত্তি করে পাঠানো <Query> মেসেজগুলিতে এটি hintId অ্যাট্রিবিউট হিসেবে অন্তর্ভুক্ত হয়।

শিশু উপাদান

<Hint> এলিমেন্টটির নিম্নলিখিত চাইল্ড এলিমেন্টগুলো রয়েছে:

শিশু উপাদান প্রয়োজন? প্রকার ইঙ্গিত প্রতিক্রিয়া প্রকার বর্ণনা
<CheckInDate> Required Date সঠিক ভ্রমণসূচী ভ্রমণসূচি অনুযায়ী চেক-ইন করার তারিখ।
<FirstDate> Required Date চেক-ইন পরিসীমা এবং পরিসীমাযুক্ত ভ্রমণসূচী চেক-ইন পরিসর বা নির্দিষ্ট পরিসরের থাকার জন্য ইঙ্গিতমূলক প্রতিক্রিয়া বার্তার তারিখের পরিসরের প্রথম তারিখ। তারিখগুলো অন্তর্ভুক্ত।
<Item> Required Object সব হোটেল/ভ্রমণসূচি হালনাগাদ করার জন্য একটি কন্টেইনার।
<LastDate> Required* Date চেক-ইন পরিসীমা এবং পরিসীমাযুক্ত ভ্রমণসূচী

চেক-ইন রেঞ্জ বা রেঞ্জড স্টে-এর জন্য নির্ধারিত তারিখের পরিসরের শেষ তারিখ। ইঙ্গিতমূলক উত্তর বার্তা। তারিখগুলো অন্তর্ভুক্ত।

দূরবর্তী অবস্থানের ক্ষেত্রে এই উপাদানটি ঐচ্ছিক।

<LengthOfStay> Required integer সঠিক ভ্রমণসূচী ভ্রমণসূচির জন্য নির্ধারিত রাত সংখ্যা, যা একটি ধনাত্মক পূর্ণসংখ্যা হিসাবে প্রকাশ করতে হবে।
<Property> Required string সব

একটি হোটেলের আইডি, যা হোটেল তালিকার আইডির মতোই। একটি একক <Item> ব্লকে আপনি কতগুলি <Property> উপাদান নির্দিষ্ট করতে পারবেন তা ইঙ্গিত প্রতিক্রিয়া বার্তার ধরণ দ্বারা নির্ধারিত হয়:

  • সুনির্দিষ্ট ভ্রমণসূচী: সর্বোচ্চ ১০০টি হোটেল।
  • চেক-ইন রেঞ্জ: একাধিক হতে পারে, যদি আপনি আপনার <QueryControl> মেসেজে <MultipleItineraries> -কে "checkin_range" হিসেবে সেট করেন।
  • নির্দিষ্ট সময়কালের অবস্থান: একাধিক হতে পারে, যদি আপনি আপনার <QueryControl> মেসেজে <MultipleItineraries> -কে "affected_dates" হিসেবে সেট করেন।
<Stay> Required Object সঠিক ভ্রমণসূচী একটি সুনির্দিষ্ট ভ্রমণসূচী ইঙ্গিত প্রতিক্রিয়া বার্তায় <CheckinDate> এবং <LengthOfStay> উপাদানগুলির জন্য একটি ধারক। প্রতিটি <Item> এ কেবল একটি <Stay> থাকতে পারে।
<StaysIncludingRange> Required Object বিস্তৃত ভ্রমণসূচী একটি রেঞ্জড স্টে হিন্ট রেসপন্স মেসেজে <FirstDate> এবং <LastDate> এলিমেন্টগুলোর জন্য একটি কন্টেইনার।

উদাহরণ

সঠিক ভ্রমণসূচী

নিম্নলিখিত উদাহরণটি একটি ইঙ্গিত প্রতিক্রিয়া বার্তা সহ একটি একক বৈশিষ্ট্যের জন্য একাধিক ভ্রমণপথ সংজ্ঞায়িত করে:

<!-- 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>

চেক-ইন পরিসীমা

নিম্নলিখিত উদাহরণটিতে এমন দুটি হোটেল উল্লেখ করা হয়েছে, যাদের মূল্য পরিবর্তিত হয়েছে এবং পুনরায় সংগ্রহ করা প্রয়োজন। গুগল ১২৩৪৫ এবং ৬৭৮৯০ প্রপার্টিগুলোর জন্য ৩ জুলাই থেকে ৬ জুলাইয়ের মধ্যেকার সমস্ত ভ্রমণসূচী সংগ্রহ করে:

<!-- 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>

রেঞ্জড স্টে

নিম্নলিখিত উদাহরণটি রেঞ্জড স্টে-এর দুটি ভিন্ন ব্যবহার দেখায়, একটি নির্দিষ্ট সংখ্যক রাতের জন্য এবং অন্যটি একটি একক রাতের জন্য:

<!-- 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>

এই প্রতিটি উদাহরণের জন্য, গুগল একটি <Query> দিয়ে সাড়া দেয়, এবং তখন আপনার উচিত একটি <Transaction> দিয়ে সাড়া দেওয়া, যাতে নির্দিষ্ট হোটেল/ভ্রমণসূচির মূল্য হালনাগাদ অন্তর্ভুক্ত থাকে।

<HintRequest>

একটি হিন্ট রিকোয়েস্ট মেসেজের মূল উপাদান। গুগল আপনার সার্ভারে একটি হিন্ট রিকোয়েস্ট মেসেজ পাঠায় এবং এমন একটি প্রতিক্রিয়া আশা করে, যা সেই হোটেল এবং ভ্রমণসূচীগুলোকে নির্দিষ্ট করে দেবে, যেগুলোর দাম আপনার সার্ভার থেকে শেষবার সফল হিন্ট রেসপন্স পাওয়ার পর থেকে পরিবর্তিত হয়েছে।

মূল্যে কোনো পরিবর্তন হলে, গুগল তখন একটি <Query> পাঠায় যা নির্দিষ্ট হোটেল ও ভ্রমণপথগুলোর হালনাগাদ করা মূল্যের তথ্য সংগ্রহ করে।

আরও তথ্যের জন্য, ইঙ্গিত অনুরোধ বার্তাগুলি দেখুন।

সিনট্যাক্স

<HintRequest> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্স

<?xml version="1.0" encoding="UTF-8"?>
<HintRequest>
  <LastFetchTime>last_fetch_time</LastFetchTime>
</HintRequest>

বৈশিষ্ট্য

<HintRequest> এলিমেন্টটির কোনো অ্যাট্রিবিউট নেই।

শিশু উপাদান

<HintRequest> এলিমেন্টটির নিম্নলিখিত চাইল্ড এলিমেন্টগুলো রয়েছে:

শিশু উপাদান প্রকার বর্ণনা
<LastFetchTime> DateTime শেষবার যখন গুগল একটি হিন্ট রিকোয়েস্ট মেসেজের জবাবে একটি হিন্ট রেসপন্স মেসেজ পাঠাতে সফল হয়েছিল।

আপনার সার্ভারে শেষবার মূল্য হালনাগাদ করার সময়ের চেয়ে এই সময়টি যদি পুরোনো হয়, তাহলে কোন কোন হোটেলের মূল্য পরিবর্তিত হয়েছে তা উল্লেখ করে একটি ইঙ্গিতমূলক বার্তা (Hint Response) পাঠাতে হবে।

যদি সম্প্রতি কোনো সফল ফেচ না হয়ে থাকে, তাহলে এটি একটি নির্দিষ্ট ব্যবধানের মানে সেট করা হবে (যাতে বিপুল পরিমাণ ডেটা জমে যাওয়ার কারণে সৃষ্ট আরও গুরুতর সমস্যা এড়ানো যায়)। বর্তমান নির্দিষ্ট ব্যবধানের মান হলো ১০০০ সেকেন্ড, তবে এটি পরিবর্তন সাপেক্ষ।

আরও তথ্যের জন্য, ইঙ্গিত প্রতিক্রিয়া বার্তাগুলি দেখুন।

উদাহরণ

নিম্নলিখিত উদাহরণটি একটি ইঙ্গিত অনুরোধ বার্তা দেখায়:

ইঙ্গিত অনুরোধ বার্তা

নিম্নলিখিত উদাহরণটি একটি ইঙ্গিত অনুরোধ বার্তা দেখায়:

<?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>

Query মেসেজের মূল উপাদান। Query মেসেজ হলো মূল্য বা মেটাডেটা আপডেটের জন্য গুগলের পক্ষ থেকে পাঠানো অনুরোধ। এগুলো পুল এবং চেঞ্জড উভয় প্রাইসিং ডেলিভারি মোডের সাথেই ব্যবহৃত হয়।

মূল্য নির্ধারণ সংক্রান্ত জিজ্ঞাসার বার্তা

মূল্য নির্ধারণ অনুসন্ধান বার্তাগুলিতে সেইসব সম্পত্তি এবং ভ্রমণপথের সংমিশ্রণ নির্দিষ্ট করা থাকে, যেগুলির জন্য আপনি মূল্য সরবরাহ করেন।

যখন আপনার সার্ভার একটি প্রাইসিং কোয়েরি মেসেজ গ্রহণ করে, তখন তার জবাবে অনুরোধ করা প্রাইসিং তথ্য সম্বলিত একটি <Transaction> মেসেজ পাঠানো উচিত।

আরও তথ্যের জন্য, মূল্য তালিকা দেখুন।

তিন ধরনের বিশেষ Query মেসেজ রয়েছে:

  • লাইভ প্রাইসিং: গুগল ব্যবহারকারীর একটি নির্দিষ্ট অনুরোধের জবাবে রিয়েল-টাইম মূল্য আপডেট জানতে চায়। পার্টনাররা যখন একটি Live pricing query মেসেজ পান, তখন তাদের একটি <Transaction> মেসেজের মাধ্যমে সাড়া দেওয়া উচিত, যেটিতে <Result> এলিমেন্টের মধ্যে অনুরোধ করা মূল্যের তথ্য থাকবে।

  • কনটেক্সট প্রাইসিং: গুগল ঐতিহাসিকভাবে জনপ্রিয় কনটেক্সটগুলোর উপর ভিত্তি করে তার প্রাইস ক্যাশে আপডেট করে। যখন আপনি একটি With Context query মেসেজ পাবেন, তখন আপনার একটি <Transaction> মেসেজ দিয়ে উত্তর দেওয়া উচিত, যেটিতে <Result> এলিমেন্টের মধ্যে অনুরোধ করা প্রাইসিং তথ্য থাকবে।

    • একক দখলের জন্য কনটেক্সট কোয়েরি সহ

      With Context কোয়েরির উত্তরে রেট দেওয়ার সময়, আপনার শুধুমাত্র নির্দিষ্ট কনটেক্সটের সাথে সঙ্গতিপূর্ণ রেটটিই পাঠানো উচিত। বেস রেট অকুপেন্সির জন্য ন্যূনতম ২ জন অকুপেন্সি প্রয়োজন, তাই বেস রেটে যদি একজন অকুপেন্সি দেওয়া হয়, তবে তা উপেক্ষা করা হবে এবং এটিকে ডাবল অকুপেন্সি হিসেবেই গণ্য করা হবে। এই ক্ষেত্রে, আপনার বেস রেটকে অনুপলব্ধ হিসেবে পাস করা উচিত এবং সিঙ্গেল অকুপেন্সির ভিতরে নেস্টেড রেট ব্যবহার করা উচিত। With Context রেসপন্স উদাহরণটি দেখুন। আপনি mergeable অ্যাট্রিবিউটটিকে "true" সেট করে Changed Pricing with Context ব্যবহার করে রেট মার্জ করতে পারেন। আরও জানুন

    • প্রসঙ্গ সাপেক্ষে মূল্য পরিবর্তন করা হয়েছে (পূর্বে যা ছিল ইঙ্গিত সহ পুল)।

      যখন আপনি 'Changed Pricing with Context' কোয়েরির জবাবে একটি <Transaction> মেসেজ রেসপন্স পাঠান, তখন Google এটিকে কোনো নির্দিষ্ট হোটেল বা ভ্রমণসূচির মূল্য এবং প্রাপ্যতার তথ্যের সম্পূর্ণ প্রতিস্থাপন হিসেবে গণ্য করে এবং সমস্ত কনটেক্সট-নির্দিষ্ট রেট রেসপন্স থেকে বাদ দেওয়া হয় ও ক্যাশ থেকে মুছে ফেলা হয়।

      ওভাররাইটিং রোধ করতে, <Transaction> মেসেজের <Result> এলিমেন্টের মধ্যে ` mergeable অ্যাট্রিবিউটটি "true" সেট করতে হবে। গুগল রেসপন্সে প্রদত্ত কনটেক্সটের জন্য বিদ্যমান ক্যাশ করা রেটগুলোর সাথে নতুন রেটগুলো যুক্ত করে দেয়। যদি আপনি `mergeable` অ্যাট্রিবিউট ব্যবহার না করেন, তবে আপনাকে রেসপন্সে প্রযোজ্য সমস্ত কনটেক্সটের জন্য সব রেট পাঠাতে হবে।

    • কনটেক্সট সহ লাইভ প্রাইসিং কোয়েরি

      কনটেক্সট সহ লাইভ প্রাইসিং কোয়েরিতে ডিফল্টরূপে মার্জেবল অ্যাট্রিবিউটের আচরণ থাকে, তাই এই অ্যাট্রিবিউটটি সেট করার প্রয়োজন নেই। যদি অন্য সব কনটেক্সট অপরিবর্তিত থাকে, তবে আপনাকে শুধুমাত্র Google-এর অনুরোধ করা নির্দিষ্ট কনটেক্সট(গুলি)র জন্য রেট(গুলি) পাঠাতে হবে। যদি অন্য কনটেক্সট পরিবর্তিত হয়, তবে আপনাকে অবশ্যই সেই কনটেক্সটগুলির জন্য পরিবর্তনগুলি স্পষ্টভাবে পাঠাতে হবে; অন্যথায়, Google-এর ক্যাশে নতুন রেটগুলি আপডেট হবে না।

  • মেটাডেটা: গুগল নির্দিষ্ট হোটেলগুলির রুম এবং রুম বান্ডেলের জন্য মেটাডেটা আপডেটের অনুরোধ করে। যখন আপনি একটি Metadata Query বার্তা পাবেন, তখন আপনাকে একটি <Transaction> বার্তা দিয়ে উত্তর দিতে হবে, যেখানে <PropertyDataSet> এলিমেন্টের মধ্যে রুম এবং রুম বান্ডেল সম্পর্কিত ডেটা উল্লেখ থাকবে। আরও তথ্যের জন্য, রুম বান্ডেল মেটাডেটা দেখুন।

সিনট্যাক্স

<Query> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

মূল্য নির্ধারণ সংক্রান্ত জিজ্ঞাসা

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>YYYY-MM-DD</Checkin>
  <Nights>number_of_nights</Nights>
  <PropertyList>
    <Property>hotel_id</Property>
    ...
  </PropertyList>
</Query>

লাইভ মূল্য নির্ধারণ

<?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>

কনটেক্সট কোয়েরির সাথে

<?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>

মেটাডেটা

<HotelInfoProperties>
  <Property>property_ID</Property>
  ...
</HotelInfoProperties>

বৈশিষ্ট্য

<Query> এলিমেন্টটিতে latencySensitive নামে একটি অ্যাট্রিবিউট থাকতে পারে।

latencySensitive অ্যাট্রিবিউটটি ঐচ্ছিক। এটি প্রদান করা হলে এবং এর মান ' true সেট করা হলে, এটি নির্দেশ করে যে কোয়েরিটি একটি Live Pricing Query । Google-কে দিয়ে latencySensitive অ্যাট্রিবিউটসহ কোয়েরি পাঠাতে চাইলে, আপনার টেকনিক্যাল অ্যাকাউন্ট ম্যানেজারের (TAM) সাথে যোগাযোগ করুন।

শিশু উপাদান

<Query> এলিমেন্টটির নিম্নলিখিত চাইল্ড এলিমেন্টগুলো রয়েছে:

শিশু উপাদান কোয়েরি টাইপ প্রকার বর্ণনা
<AffectedNights> Pricing integer একটি রেঞ্জড স্টে-এর জন্য রাতের সংখ্যা। এই উপাদানটি শুধুমাত্র চেঞ্জড প্রাইসিং-এর সাথে ব্যবহৃত রেঞ্জড স্টে প্রাইসিং কোয়েরির জন্য ব্যবহৃত হয়।
<Checkin> Pricing Date একটি নির্দিষ্ট মূল্য পরিবর্তনের তারিখগুলো।
<Context> Pricing (Live Pricing Queries only) <Context> লাইভ প্রাইসিং কোয়েরির জন্য, নির্দিষ্ট কিছু প্যারামিটার উল্লেখ করা হয় যার অধীনে কোয়েরিটি করা হয়। চাইল্ড এলিমেন্টগুলোর মধ্যে রয়েছে:
  • <Occupancy> : মোট অতিথির সংখ্যা
  • <OccupancyDetails> : অতিথিদের ধরণ, যেমন প্রাপ্তবয়স্ক বা শিশু
  • <UserCountry> : ব্যবহারকারী যে দেশে অবস্থান করছেন
  • <UserDevice> : অতিথি হোটেল খোঁজার জন্য যে ধরনের ডিভাইস ব্যবহার করেছেন, যেমন "mobile ," " tablet ," বা " desktop ।"

একটি একক অনুরোধে <Context> এলিমেন্টটি একাধিকবার ব্যবহার করা যেতে পারে, যার ফলে বিভিন্ন অকুপেন্সির জন্য কোয়েরি করা সম্ভব হয়। চাইল্ড এলিমেন্টের তালিকা, সিনট্যাক্স এবং উদাহরণের জন্য <Context> দেখুন।

<FirstDate> Pricing Date ভ্রমণসূচীর একটি পরিসরের শুরুর তারিখ, যার উপর মূল্য নির্ধারণ প্রযোজ্য। এই উপাদানটি শুধুমাত্র পরিবর্তিত মূল্য নির্ধারণের (Changed Pricing) সাথে ব্যবহৃত চেক-ইন তারিখের পরিসর (Check-in Date Range) মূল্য নির্ধারণের কোয়েরির জন্য ব্যবহৃত হয়।
<HotelInfoProperties> Metadata string এক বা একাধিক প্রপার্টি, যেগুলোর জন্য গুগল একটি মেটাডেটা Query মেসেজে হালনাগাদ করা রুম এবং রুম বান্ডেল মেটাডেটা চায়। এই এলিমেন্টটিতে এক বা একাধিক <Property> এলিমেন্ট থাকতে পারে, যা হোটেল প্রপার্টি আইডি নির্দিষ্ট করে।
<LastDate> Pricing Date ভ্রমণসূচীর একটি পরিসরের শেষ তারিখ, যার উপর মূল্য নির্ধারণ প্রযোজ্য। এই উপাদানটি শুধুমাত্র পুল + হিন্টস-এর সাথে ব্যবহৃত চেক-ইন ডেট রেঞ্জ প্রাইসিং কোয়েরির জন্য ব্যবহৃত হয়।
<Nights> Pricing integer একটি নির্দিষ্ট ভ্রমণসূচির জন্য সর্বোচ্চ ৩০ রাত পর্যন্ত থাকার সুযোগ।
<PropertyList> Pricing Object

যেসব হোটেলের মূল্য হালনাগাদ করা প্রয়োজন, সেগুলোর এক বা একাধিক আইডি।

প্রতিটি হোটেলকে একটি <Property> এলিমেন্টের মধ্যে সংজ্ঞায়িত করুন। এর ভ্যালুটি একটি স্ট্রিং, যা আপনার হোটেল লিস্টের কোনো হোটেল আইডির সাথে মিলবে। উদাহরণস্বরূপ:

<PropertyList>
  <Property>pid1</Property>
  <Property>pid2</Property>
</PropertyList>

উদাহরণ

মূল্য নির্ধারণ সংক্রান্ত জিজ্ঞাসা

নিম্নলিখিত উদাহরণটি একটি প্রাইসিং কোয়েরি মেসেজ দেখাচ্ছে, যা ২৩শে মে, ২০২৩ থেকে শুরু করে ৩ রাতের জন্য উপলব্ধ একগুচ্ছ হোটেলের মূল্য আপডেটের অনুরোধ করে:

<?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>

লাইভ মূল্য অনুসন্ধান

নিম্নলিখিত উদাহরণটি ৫০০ মিলিসেকেন্ডের প্রতিক্রিয়া সময়সীমা সহ একটি লাইভ প্রাইসিং কোয়েরি প্রদর্শন করে:

<?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>

প্রসঙ্গ কোয়েরি সহ

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <Checkin>2023-05-23</Checkin>
  <Nights>2</Nights>
  <PropertyContextList>
    <PropertyContext>
      <Property>8675309</Property>
      <!-- In the future, 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>

প্রাসঙ্গিক প্রতিক্রিয়া সহ

নিম্নলিখিত উদাহরণটি ব্যাখ্যা করে কিভাবে একক বসবাসের জন্য বেস রেট unavailable(-1) সেট করতে হয় এবং <Occupancy> এলিমেন্টের মধ্যে রেটগুলিকে নেস্ট করতে হয়।

<?xml version="1.0" encoding="UTF-8"
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2025-11-19T18:36:48Z">
<Result>
  <Property>6781291</Property>
  <Checkin>2026-01-15</Checkin>
  <Nights>1</Nights>
  <!-- Base rate is set to -1 to indicate unavailability for the default (2-person) occupancy -->
  <Baserate currency="USD">-1</Baserate>
  <Tax currency="USD">0</Tax>
  <OtherFees currency="USD">0</OtherFees>
  <Rates>
    <!-- Nested Rate for Single Occupancy -->
    <Rate rate_rule_id="rule-951">
      <Occupancy>1</Occupancy>
      <OccupancyDetails>
        <NumAdults>1</NumAdults>
      </OccupancyDetails>
      <Baserate currency="USD">150.00</Baserate>
      <Tax currency="USD">15.00</Tax>
      <OtherFees currency="USD">5.00</OtherFees>
    </Rate>
  <!-- Other nested rates for different occupancies or room types could be included here if available -->
  </Rates>
</Result>
</Transaction>

মেটাডেটা কোয়েরি

<?xml version="1.0" encoding="UTF-8"?>
<Query>
  <HotelInfoProperties>
    <Property>pid5</Property>
    <Property>pid8</Property>
    <Property>pid13</Property>
    <Property>pid21</Property>
  </HotelInfoProperties>
</Query>

রেঞ্জড স্টে এবং চেক-ইন তারিখের পরিসরের মূল্য নির্ধারণের কোয়েরি সহ আরও উদাহরণের জন্য, Query মেসেজ উদাহরণগুলি দেখুন।

<Context>

<Context> এলিমেন্টটি একটি Live pricing query জন্য তথ্য বর্ণনা করে, যার মধ্যে রয়েছে অতিথির সংখ্যা ও প্রকার, ব্যবহারকারীর দেশ এবং ব্যবহারকারীর ডিভাইস।

একাধিক <Context> কখনোই ভিন্ন ভিন্ন ব্যবহারকারীর দেশ বা ডিভাইসের সাথে ব্যবহার করা হবে না। যখন একাধিক অকুপেন্সির জন্য কোয়েরি করতে একাধিক <Context> ব্যবহার করা হয়, তখন সংশ্লিষ্ট প্রপার্টি বা ইটিনারির জন্য প্রতিটি অকুপেন্সির মূল্য একটি অতিরিক্ত রুম বান্ডেল হিসেবে প্রদান করুন। প্রতিটি প্রপার্টি বা ইটিনারিতে একটিমাত্র <Result> ব্লক থাকবে, যেখানে একাধিক অকুপেন্সির মূল্য অন্তর্ভুক্ত থাকবে।

<Context> কোয়েরির প্রতিক্রিয়ার বিস্তারিত তথ্যের জন্য, <OccupancyDetails> দেখুন।

সিনট্যাক্স

<Context> এলিমেন্টটি নিম্নলিখিত সিনট্যাক্স ব্যবহার করে:

সিনট্যাক্স

<?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>

শিশু উপাদান

<Context> এলিমেন্টটির নিম্নলিখিত চাইল্ড এলিমেন্টগুলো রয়েছে:

শিশু উপাদান কোয়েরি টাইপ প্রকার বর্ণনা
<Occupancy> Pricing integer মোট অতিথির সংখ্যা উল্লেখ করে।

বাধ্যতামূলক না হলেও, <Occupancy> সহ কোয়েরিগুলোর ফলে একটি ট্রানজ্যাকশন মেসেজ আসা উচিত যেখানে প্রতিটি <Occupancy> এর জন্য উপযুক্ত Room Bundle-গুলো সংজ্ঞায়িত থাকবে, কিন্তু যদি Room Bundle-গুলো উপলব্ধ না থাকে তবে <Occupancy> এলিমেন্টটি উল্লেখ করার পরামর্শ দেওয়া হয়।

দ্রষ্টব্য: একটি কোয়েরিতে <Occupancy> সবসময় নাও থাকতে পারে। সেক্ষেত্রে, আপনার সমস্ত অকুপেন্সির মূল্য ফেরত দেওয়া উচিত।

<OccupancyDetails> Pricing Object এর আগে <Occupancy> থাকে। এটি অতিথিদের প্রকারভেদ অনুযায়ী নির্দিষ্ট করে, যার মধ্যে অন্তর্ভুক্ত রয়েছে:
  • <NumAdults> : প্রাপ্তবয়স্ক অতিথিদের সংখ্যা
  • <Children> এবং <Child=" age "> : কারা অতিথি শিশু (সাধারণত বয়স ০-১৭) তা নির্দিষ্ট করে, এবং ঐচ্ছিকভাবে প্রতিটি শিশুর বয়সও অন্তর্ভুক্ত করে।

বাধ্যতামূলক না হলেও, <OccupancyDetails> সহ কোয়েরিগুলোর ফলে প্রতিটি <Occupancy> এর জন্য উপযুক্ত রুম বান্ডেল সংজ্ঞায়িত একটি ট্রানজ্যাকশন মেসেজ আসা উচিত, কিন্তু যদি রুম বান্ডেলগুলো উপলব্ধ না থাকে তবে <OccupancyDetails> এলিমেন্টটি নির্দিষ্ট করার পরামর্শ দেওয়া হয়।

দ্রষ্টব্য: একটি কোয়েরিতে <OccupancyDetails> সবসময় নাও থাকতে পারে। সেক্ষেত্রে, আপনাকে ধরে নিতে হবে যে সকল অতিথি প্রাপ্তবয়স্ক।

<UserCountry> Pricing string

ব্যবহারকারীর অবস্থান অনুযায়ী দেশ অনুসারে রেট ফিল্টার করে। এর ভ্যালুটি হলো একটি ২-অক্ষরের দেশের কোড, যেমন মার্কিন যুক্তরাষ্ট্রের জন্য "US" , অথবা একটি অঞ্চলের কোড, যেমন "EU" "।

<UserCountry> নির্দিষ্ট করা থাকলে, কোয়েরির ফলে প্রাপ্ত ট্রানজ্যাকশন মেসেজে কোয়েরিকৃত দেশের জন্য উপযুক্ত <Rates> ব্লকটি সংজ্ঞায়িত থাকা উচিত।

<UserDevice> Pricing string

ব্যবহারকারী যে ডিভাইস থেকে অনুসন্ধান করছেন, তার ধরন অনুযায়ী রেট ফিল্টার করে। সম্ভাব্য মানগুলো হলো:

  • mobile
  • desktop
  • tablet

<UserDevice> সংজ্ঞায়িত থাকা কোয়েরিগুলোর ফলে একটি ট্রানজ্যাকশন মেসেজ তৈরি হবে, যেখানে কোয়েরিকৃত ডিভাইসের ধরনের জন্য উপযুক্ত <Rates> ব্লকটি সংজ্ঞায়িত থাকবে।

উদাহরণ

দখলদারিত্ব

নিম্নলিখিত উদাহরণটি <Context> এর মধ্যে <Occupancy> এর জন্য একটি লাইভ প্রাইসিং কোয়েরি দেখাচ্ছে। এই লাইভ প্রাইসিং কোয়েরিটি ৩ জন প্রাপ্তবয়স্ক অতিথির জন্য।

<?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>

দখলের বিবরণ

নিম্নলিখিত উদাহরণটি <Context> এর মধ্যে <OccupancyDetails> সহ একটি লাইভ প্রাইসিং কোয়েরি দেখাচ্ছে। এই লাইভ প্রাইসিং কোয়েরিটি ৪ জন অতিথির জন্য, যাদের মধ্যে ২ জন শিশু, এবং এটি একটি মোবাইল ডিভাইস থেকে বুকিং করা একজন মার্কিন অতিথির জন্য প্রযোজ্য রেট জানতে চায়:

<?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>

একাধিক প্রেক্ষাপট

নিম্নলিখিত উদাহরণটি একটি লাইভ প্রাইসিং কোয়েরিতে অতিরিক্ত <Context> এলিমেন্টের ব্যবহার দেখায়।

<?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>