Обзор

Партнеры, участвующие в интеграции предложений, должны завершить настройку учётной записи для этапа интеграции на уровне продавца или организации (пилотный проект) до начала работы. Реализация, тестирование и запуск интеграции предложений подробно описаны в этом руководстве. Перед началом интеграции ознакомьтесь с этим обзором и правилами в отношении предложений .

Предложения

Интеграция предложений позволяет передавать структурированную информацию о промоакциях и скидках продавцов, действующих на определённые услуги в определённое время. Предложения включают в себя само предложение (процентная скидка, скидка в долларах США и т. д.), периоды действия (определённое время, дни недели и т. д.) и условия использования (предложение можно использовать только на определённые услуги), а также сложные комбинации ограничений.

Примеры предложений:

  • Скидки на закуски по средам и четвергам в декабре с 12:00 до 17:00.
  • Купите один десерт и получите второй бесплатно на ужин в честь Дня матери с 18:00 до 22:00
  • Скидка 5 долларов на основное блюдо для бранча каждое воскресенье с 10:00 до 14:00
  • Скидка 10% при личном обращении, которую можно комбинировать со скидкой 5% для премиум-подписчиков и скидкой 5%, если пользователь платит через ваше приложение.

Чтобы предложение было включено в интеграцию, оно должно соответствовать технической модели данных и нашим требованиям. Обязательно ознакомьтесь с нашей политикой в отношении предложений , чтобы убедиться в соблюдении правил интеграции и получить инструкции о том, что делать с предложениями, не соответствующими техническим требованиям.

Реализация предложений

Интеграция предложений состоит из двух каналов, которые будут загружаться ежедневно или с частотой, обеспечивающей высокую точность (что означает снижение вероятности устаревания):

OfferFeed

Имя поля Тип Требование Описание
data массив объектов
(Offer)

Предложение

Имя поля Тип Требование Описание
offer_id нить

Необходимый

Уникальный идентификатор предложения. Обязательно.
entity_ids массив строк

Список продавцов, участвующих в данном предложении.
add_on_offer_applicable_to_all_entities булев

Если это правда, это предложение распространяется на все организации, входящие в агрегатор. Применимо только к дополнительным предложениям.
offer_source перечисление
(OfferSource)

Необходимый

Предложение может быть предоставлено агрегатором, отдельным продавцом или даже третьей стороной в качестве дополнения. Обязательно.
action_type перечисление
(ActionType)

Необходимый

Сервис, предоставляющий предложение. Значение offer_id может принадлежать только одному типу действия. Если предложение может быть общим для нескольких типов сервисов, то для каждого типа сервиса будут созданы дубликаты предложений с уникальными идентификаторами. Обязательно.
offer_modes массив перечисления
(OfferMode)

Необходимый

Способы, которыми можно воспользоваться предложением: личное присутствие, бронирование, онлайн и т. д. Обязательно.
offer_category перечисление
(OfferCategory)

Необходимый

Категория предложения. Обязательно.
source_assigned_priority число

Неотрицательное целое число ([1-100], где 1 соответствует наивысшему приоритету), указывающее уровень приоритета предложения, назначенный источником. Наличие нескольких предложений от одного продавца служит сигналом для ранжирования предложений. 0 означает, что приоритет не установлен.
offer_details объект
(OfferDetails)

Необходимый

Подробная информация о предложении, например, скидка, стоимость бронирования и т. д. Обязательно.
offer_restrictions объект
(OfferRestrictions)

Необходимый

Описывает, как ограничено предложение, т. е. требуется ли подписка/платежное средство, можно ли комбинировать это предложение с другими предложениями (и с какими типами) и т. д. Обязательно.
coupon объект
(Coupon)

Подробная информация о купоне. Обязательно для offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER.
payment_instrument объект
(PaymentInstrument)

Информация о платежном инструменте. Обязательно для offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
subscription объект
(Subscription)

Подробная информация о подписке. Обязательно для offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER.
terms объект
(Terms)

Необходимый

Условия предложения. Обязательно.
validity_periods массив объектов
(ValidityPeriod)

Необходимый

Срок действия предложения. Описывает период действия предложения, включая время начала и окончания, дни недели и т. д. Обязательно.
offer_url нить

URL-адрес страницы предложения продавца. Обязательно для offer_category: OFFER_CATEGORY_BASE_OFFER.
image_url нить

URL-адрес изображения предложения продавца.

Подробности предложения

Имя поля Тип Требование Описание
offer_display_text нить

Необходимый

Текст предложения, который поставщик предложения хочет отображать клиентам на странице результатов поиска. Обязательно.
один из
(offer_specification)

Необходимый

Только одно из полей в этом oneOf может быть задано.
max_discount_value объект
(Money)

Максимальная скидка, на которую можно рассчитывать. Например, скидка 10% при покупке на сумму до 100 долларов США.
min_spend_value объект
(Money)

Минимальная сумма покупки для получения скидки. Например, скидка 10% при общей стоимости товара 100 долларов США или выше.
booking_cost объект
(Money)

Стоимость бронирования по этому предложению. Например, скидка 100 долларов на итоговый счёт при бронировании столика стоимостью 15 долларов.
booking_cost_unit перечисление
(FeeUnit)

Единица измерения стоимости бронирования. Например, на человека, на транзакцию.
convenience_fee объект
(Fee)

booking_cost_adjustable булев

Можно ли изменить стоимость бронирования, т.е. вычесть её из итогового счёта? Например: скидка 30% на ужин при бронировании. Стоимость бронирования составляет 15 долларов США, и эта сумма будет учтена в итоговом счёте. Итоговый счёт: Общая сумма расходов - 30% - 15 долларов США.
additional_fees массив объектов
(AdditionalFee)

Дополнительные сборы, взимаемые с пользователя. Примеры: удобство, обслуживание и т. д.

Деньги

Представляет собой сумму денег с указанным типом валюты.

Имя поля Тип Требование Описание
currency_code нить

Трехбуквенный код валюты, определенный в ISO 4217.
units нить

Целые единицы суммы. Например, если currencyCode"USD" , то 1 единица равна одному доллару США.
nanos число

Количество единиц нано (10^-9) от суммы. Значение должно быть в диапазоне от -999 999 999 до +999 999 999 включительно. Если units положительная, nanos должно быть положительным или нулевым. Если units равна нулю, nanos может быть положительным, нулевым или отрицательным. Если units отрицательная, nanos должно быть отрицательным или нулевым. Например, $-1,75 представляется как units = -1, а nanos = -750 000 000.

Платеж

Имя поля Тип Требование Описание
unit перечисление
(FeeUnit)

type перечисление
(FeeType)

один из
(cost)

Только одно из полей в этом oneOf может быть задано.

MoneyRange

Имя поля Тип Требование Описание
min_amount объект
(Money)

max_amount объект
(Money)

Дополнительный сбор

Имя поля Тип Требование Описание
name нить

Необходимый

Название дополнительной платы. Примеры: плата за обслуживание, плата за обработку и т. д. Обязательно.
fee объект
(Fee)

Ограничения предложения

Имя поля Тип Требование Описание
combinable_with_other_offers булев

Можно ли комбинировать это предложение с другими предложениями? Если установлено значение true, партнёры могут указать, с какими предложениями можно комбинировать это предложение. Если заданы оба параметра: combinable_offer_categories и combinable_offer_ids, то любое предложение, соответствующее одному из вышеперечисленных условий, будет комбинируемым.
combinable_offer_categories массив перечисления
(OfferCategory)

Список типов предложений, с которыми можно комбинировать это предложение. Например, это предложение может комбинироваться с другими купонами. Если параметр combinable_with_other_offers имеет значение true и это поле не задано, все типы будут комбинируемыми.
combinable_offer_ids массив строк

Список offer_id, с которыми можно комбинировать это предложение. Некоторые предложения можно комбинировать только с определёнными другими offer_id (они могут считаться родительскими предложениями). Если параметр combinable_with_other_offers имеет значение true и это поле не задано, все предложения можно комбинировать.
inclusions массив объектов
(OfferCondition)

Перечень условий, которые должны быть соблюдены для того, чтобы предложение было действительным (например, безалкогольные напитки, еда).
exclusions массив объектов
(OfferCondition)

Список условий, которые сделают предложение недействительным (например, шведский стол, комбинированные предложения и коктейли).
min_guest число

Минимальное количество человек, необходимое для использования предложения.
food_offer_restrictions объект
(FoodOfferRestrictions)

Ограничения, касающиеся предложений еды.

ПредложениеУсловие

Имя поля Тип Требование Описание
description нить

FoodOfferRestrictions

Имя поля Тип Требование Описание
meal_types массив перечисления
(MealType)

Типы питания, к которым может применяться предложение, например, обед или ужин. Если не указано иное, предложение может применяться ко всем типам питания.
restricted_to_certain_courses булев

Может ли предложение распространяться только на определенные курсы.

Купон

Имя поля Тип Требование Описание
text нить

Текст купона, который поставщик предложения хочет показать пользователям.
code нить

Необходимый

Для использования предложения требуется код купона. Обязательно.

Платежный инструмент

Имя поля Тип Требование Описание
items массив объектов
(PaymentInstrumentItem)

Необходимый

Список платежных инструментов, которые можно использовать для участия в акции. Обязательно.
provider_name нить

Необходимый

Название поставщика платёжного инструмента. Это может быть название банка-партнёра, название банка и т. д. Например: American Express, HDFC, ICICI. Обязательно.

PaymentInstrumentItem

Имя поля Тип Требование Описание
type перечисление
(PaymentInstrumentType)

Необходимый

Тип платежного инструмента. Обязательно.
name нить

Необходимый

Название платёжного инструмента, например, название кредитной карты. Например: HDFC Infinia, American Express Platinum. Обязательно.

Подписка

Имя поля Тип Требование Описание
name нить

Необходимый

Название подписки. Обязательно.
subscription_auto_added булев

Добавляется ли подписка автоматически, когда пользователь использует это предложение
cost объект
(Money)

Необходимый

Стоимость подписки. Обязательно.
subscription_duration объект
(Duration)

Необходимый

Срок действия подписки по указанной стоимости. Обязательно.
terms_and_conditions_url нить

Ссылка на условия партнера, относящиеся к данной подписке.

Продолжительность

Имя поля Тип Требование Описание
seconds нить

Секунды со знаком, относящиеся к промежутку времени. Должны быть в диапазоне от -315 576 000 000 до +315 576 000 000 включительно. Примечание: эти границы вычисляются следующим образом: 60 сек/мин * 60 мин/ч * 24 ч/сутки * 365,25 дней/год * 10 000 лет.
nanos число

Доли секунды со знаком с разрешением в наносекундах. Длительности менее одной секунды представлены полем «0 seconds и положительным или отрицательным полем nanos . Для длительностей в одну секунду и более ненулевое значение поля nanos должно иметь тот же знак, что и поле seconds . Диапазон значений: от -999 999 999 до +999 999 999 включительно.

Условия

Имя поля Тип Требование Описание
url нить

Ссылка на условия и положения партнера.
restricted_to_certain_users булев

Ограничено ли предложение определенными пользователями.
terms_and_conditions нить

Основной текст положений и условий предоставлен партнером.
additional_terms_and_conditions массив строк

Условия и положения в дополнение к основным положениям и положениям от партнера.

Срок действия

Имя поля Тип Требование Описание
valid_period объект
(ValidityRange)

Время начала и окончания действия предложения. Эти значения должны соответствовать разным дням, то есть время начала должно быть 00:00 (начало дня), а время окончания — 00:00 (не включая день) в день окончания срока действия.
time_of_day массив объектов
(TimeOfDayWindow)

Указывает допустимый временной интервал в заданный день и дни, в которые доступно предложение. Например: Понедельник: с 10:00 до 17:00 Вторник: с 10:00 до 14:00 Вторник: с 17:00 до 19:00 Ср, Чт, Пт, Сб, Вс: с 15:00 до 19:00 Если не указано, это означает, что предложение действительно в течение всего времени в течение valid_period .
time_exceptions массив объектов
(ValidTimeException)

Указывает исключения из указанных выше valid_period и valid_time_of_week.

ДиапазонДостоверности

Диапазон временных меток «закрыто-открыто».

Имя поля Тип Требование Описание
valid_from_time объект
(Timestamp)

Необходимый

Начальное время диапазона (включительно). Обязательно.
valid_through_time объект
(Timestamp)

Конечное время диапазона (исключая указанное). Если не указано, это означает, что этот период бесконечен. Необязательно.

Метка времени

Имя поля Тип Требование Описание
seconds нить

Представляет секунды по времени UTC с эпохи Unix 1970-01-01T00:00:00Z. Должно быть в диапазоне от 0001-01-01T00:00:00Z до 9999-12-31T23:59:59Z включительно.
nanos число

Неотрицательные доли секунды с разрешением до наносекунд. Отрицательные значения секунд с дробями должны иметь неотрицательные значения в наносекундах, которые отсчитываются вперёд во времени. Должны быть в диапазоне от 0 до 999 999 999 включительно.

TimeOfDayWindow

Объект TimeWindow — это составная сущность, описывающая список окон, в которых заказ пользователя может быть размещен или выполнен.

Имя поля Тип Требование Описание
time_windows объект
(TimeOfDayRange)

Необходимый

Временной интервал, в течение которого заказ может быть размещен/выполнен. Обязательно.
day_of_week массив перечисления
(DayOfWeek)

Список дней недели, к которым применяется окно. Если ничего не указано, это означает, что оно применяется ко всем дням недели. Необязательно.

TimeOfDayRange

Диапазон времени «закрыто-открыто».

Имя поля Тип Требование Описание
open_time объект
(TimeOfDay)

Время, указывающее время начала суток в диапазоне (включительно). Если не указано, означает 00:00:00. Необязательно.
close_time объект
(TimeOfDay)

Время, указывающее конечное время суток в диапазоне (исключая указанное). Если не указано, означает 23:59:59. Необязательно.

Время дня

Имя поля Тип Требование Описание
hours число

Часы суток в 24-часовом формате. Должно быть больше или равно 0 и, как правило, меньше или равно 23. API может разрешить значение «24:00:00» для таких случаев, как время закрытия предприятия.
minutes число

Минуты часа. Должны быть больше или равны 0 и меньше или равны 59.
seconds число

Секунда минуты. Должна быть больше или равна 0 и, как правило, меньше или равна 59. API может допускать значение 60, если допускает дополнительные секунды.
nanos число

Доли секунды в наносекундах. Должны быть больше или равны 0 и меньше или равны 999 999 999.

ValidTimeException

Имя поля Тип Требование Описание
exceptional_period объект
(ValidityRange)

Начальное и конечное время, на которое предложение недействительно. Эти значения должны соответствовать разным дням, то есть начальное время должно быть 00:00 (начало дня), а конечное время — 00:00 (не включая день) в день окончания периода исключения.

OfferSource

Имя Описание
OFFER_SOURCE_UNSPECIFIED
OFFER_SOURCE_AGGREGATOR

ТипДействия

Имя Описание
ACTION_TYPE_UNSPECIFIED
ACTION_TYPE_DINING

OfferMode

Имя Описание
OFFER_MODE_OTHER
OFFER_MODE_WALK_IN
OFFER_MODE_FREE_RESERVATION
OFFER_MODE_PAID_RESERVATION
OFFER_MODE_ONLINE_ORDER

ПредложениеКатегория

Категория предложения. Базовое предложение — это стандартное предложение, доступное всем клиентам, например, скидка 10% при покупке свыше 100 долларов США. Для базового предложения, ограниченного купоном или платежным инструментом, будут установлены соответствующие поля. Также доступны дополнительные предложения, например, ADD_ON_PAYMENT_OFFER. Такие предложения можно добавлять к другим предложениям для получения дополнительных скидок.

Имя Описание
OFFER_CATEGORY_UNSPECIFIED
OFFER_CATEGORY_BASE_OFFER
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
OFFER_CATEGORY_ADD_ON_COUPON_OFFER
OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER

FeeUnit

Имя Описание
FEE_UNIT_UNSPECIFIED
FEE_UNIT_PER_GUEST
FEE_UNIT_PER_TRANSACTION

FeeType

Имя Описание
FEE_TYPE_UNSPECIFIED
FEE_TYPE_FIXED
FEE_TYPE_VARIABLE

ТипПитания

Имя Описание
MEAL_TYPE_UNSPECIFIED
MEAL_TYPE_BREAKFAST
MEAL_TYPE_LUNCH
MEAL_TYPE_DINNER

Тип платежного инструмента

Имя Описание
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED
PAYMENT_INSTRUMENT_CREDIT_CARD
PAYMENT_INSTRUMENT_DEBIT_CARD
PAYMENT_INSTRUMENT_BANK_ACCOUNT
PAYMENT_INSTRUMENT_UPI
PAYMENT_INSTRUMENT_ONLINE_WALLET

ДеньНедели

Обозначает день недели.

Имя Описание
DAY_OF_WEEK_UNSPECIFIED День недели не указан.
MONDAY Понедельник
TUESDAY Вторник
WEDNESDAY Среда
THURSDAY Четверг
FRIDAY Пятница
SATURDAY Суббота
SUNDAY Воскресенье

спецификация_предложения

Скидка может быть выражена в процентах или фиксированной суммой, вычитаемой из общей стоимости. Например: 1. Скидка 10% на итоговый счёт. 2. Скидка 15 долларов на заказ. Продавцы также могут предлагать индивидуальные скидки, например, «купи один — получи второй бесплатно», указав соответствующие поля. Обязательно.

Имя поля Тип Требование Описание
discount_percent число

Взаимоисключающее с discount_value , other_offer_detail_text

Процент от счета, на который предоставляется скидка. [0, 100] Для предложений со скидкой 1+1 или 50%, которые применяются ко всему обеду (например, 1+1 шведский стол, 1+1 на весь счет, 1+1 на комплексное меню), это значение можно установить равным 50.
discount_value объект
(Money)

Взаимоисключающее предложение с discount_percent , other_offer_detail_text

Фиксированная величина скидки.
other_offer_detail_text нить

Взаимоисключающее с discount_percent , discount_value

Текст в свободной форме с описанием скидки. Для специальных предложений «1+1» (например, напитки +1, основное блюдо +1, отдельные блюда +1) необходимо указать эти детали здесь.

расходы

Имя поля Тип Требование Описание
amount объект
(Money)

Взаимоисключающее с amount_range

amount_range объект
(MoneyRange)

Взаимоисключающее с amount

Загрузка ленты

Фид предложений должен быть загружен на SFTP-сервер Generic Feed. Следуйте инструкциям в руководстве «Как использовать SFTP-сервер Generic Feed» и используйте name google.offer в файле дескриптора.

Частота загрузки

Как правило, Google ожидает одну загрузку фида в день. Частота может быть увеличена или уменьшена в зависимости от частоты обновления предложений с вашей стороны для обеспечения стабильно высокой точности. Проконсультируйтесь с вашим контактным лицом Google.

Данные появятся в Google через несколько часов.

Категоризация предложений

  • OFFER_CATEGORY_BASE_OFFER : Предложения, которые можно использовать отдельно, не объединяя с другими предложениями. Сюда входят:
    • Фиксированные скидки на весь счет (например, скидка 20%)
    • Предложения по подписке (например, бесплатный десерт при подписке)
    • Предложения по оплате в случаях, когда нет других базовых предложений для ресторана
  • Дополнительные предложения: предложения, для которых требуется базовое предложение. К ним относятся:
    • OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER (например, дополнительная скидка 10% при использовании определенной кредитной карты)
    • OFFER_CATEGORY_ADD_ON_COUPON_OFFER (например, бесплатный напиток с определенным кодом купона)
    • OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER (например, дополнительная скидка 10% для подписчиков)

Другие соображения:

  • Если у ресторана нет базового предложения, дополнительные предложения отображаться не будут. Если базового предложения нет, любое предложение по оплате, подписке или купону, которое можно использовать без добавления к другому предложению, должно быть помечено как OFFER_CATEGORY_BASE_OFFER .
    • В зависимости от типа необходимо установить соответствующие данные для PaymentInstrument , Subscription или Coupon .
    • Партнеры должны предоставить две копии каждого из этих предложений, чтобы охватить сценарии, в которых они действуют как базовые предложения, так и предложения-дополнения. Копию предложения-дополнения можно затем настроить для нескольких ресторанов, используя entity_ids или add_on_offer_applicable_to_all_entities .
  • Если в ресторане имеется несколько базовых предложений, которые можно суммировать, все базовые предложения следует пометить как OFFER_CATEGORY_BASE_OFFER , а базовые предложения, которые являются предложениями по оплате, подписке или купонам, следует отправлять дополнительно как соответствующий тип дополнительного предложения.
  • ValidityPeriod следует использовать для активации дополнительных предложений в качестве базовых предложений только в случае отсутствия активного базового предложения.

Примеры сценариев:

  • Ресторан предлагает скидку 5% при оплате определенной кредитной картой и бесплатный напиток по определенному промокоду.

    • Предложение о скидке 5% по кредитной карте должно быть отправлено в двух экземплярах, один с тегом OFFER_CATEGORY_BASE_OFFER и один с тегом OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER с указанием данных PaymentInstrument .
    • Предложение о бесплатном напитке с купоном следует отправлять как OFFER_CATEGORY_ADD_ON_COUPON_OFFER с указанием данных Coupon .
  • Ресторан предлагает скидку 10% при личном посещении и скидку 5% при оплате определенной кредитной картой, причем обе скидки можно комбинировать.

    • Предложение со скидкой 10% при личном посещении должно быть помечено как OFFER_CATEGORY_BASE_OFFER .
    • Предложение о скидке 5% по кредитной карте должно иметь 2 копии, одна из которых должна быть помечена как OFFER_CATEGORY_BASE_OFFER , а другая — как OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER .
  • Ресторан предлагает скидку 10% только на обед по будням и скидку 5% в любое время при оплате определенной кредитной картой.

    • Для предложения скидки 10% необходимо установить период действия ValidityPeriod так, чтобы он действовал только в обеденное время в ресторане по будням.
    • Предложение о скидке 5% по кредитной карте должно быть отправлено в 2 экземплярах.
      • Один экземпляр должен быть помечен тегом OFFER_CATEGORY_BASE_OFFER с указанием PaymentInstrument . ValidityPeriod следует установить так, чтобы исключить обеденные часы по будням, когда действует скидка 10% на обед.
      • Один экземпляр должен быть помечен как OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER с указанием данных PaymentInstrument .
    • Все остальные предложения по оплате для этого ресторана должны быть помечены как OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER .

Процесс разработки и запуска

На протяжении всей интеграции партнёрский портал будет предоставлять вам информацию и отзывы о вашей разработке. Процесс разработки будет проходить следующим образом:

  • Интеграция будет сначала разработана в среде Sandbox. Вам следует использовать экспорт производственной среды (или даже непосредственно производственных данных) в среду Google Sandbox. Это гарантирует, что ваша разработка учитывает все пограничные случаи, а Google сможет оценить качество данных и более эффективно помогать вам на основе вашей модели данных.
  • После того, как вы начнете регулярно и ежедневно загружать полный фид «Торговцы, Услуги и Сделки» в среду Google Sandbox, команда Google оценит ваши фиды. После одобрения команды Google вы сможете запустить свой код в эксплуатацию и начать отправлять данные в рабочую среду Google.
  • После полного тестирования интеграции с продакшеном команда Google также проведёт тестирование. После завершения тестирования ваша интеграция будет запущена.

Мониторинг

Чтобы обеспечить пользователям комфортный опыт, Google будет проверять предлагаемые предложения на предмет их действительности, корректности и соответствия нашим критериям до и после запуска. Для этого Google будет использовать сочетание ручной и автоматизированной проверки. Результаты этих проверок будут доступны на панели инструментов предложений в Центре действий (только в рабочей версии). Результаты этого мониторинга могут быть использованы для влияния на рейтинг предложений.

Автоматизированные проверки (сканеры)

Команда Google по качеству внедряет сканеры. Сканерами называют скрипты, которые автоматизируют веб-браузер для выполнения некоторых кликов и извлечения информации о предложениях исключительно для целей проверки качества .

Количество запросов

Например, если мы решили отправлять 5000 чеков в день, это означает, что 5000 раз в день ( равномерно распределенных в течение дня, то есть примерно один раз каждые 17 секунд ) наш сканер выполнит все следующие действия, которые выполнил бы обычный пользователь:

  • Откройте поиск Google и нажмите на партнерскую ссылку.
  • Ознакомьтесь с информацией о предложении.
  • Если предложение требует бронирования, оно будет передано в процесс бронирования для подтверждения доступности предложения в указанное время (бронирование не будет выполнено).

Обнаружение веб-скрейперов

Чтобы избежать блокировки веб-скрейпера (что может привести к выводу о недоступности предложений), убедитесь, что ваша система разрешает нашему веб-скрейперу постоянно запрашивать информацию на вашей странице. Чтобы идентифицировать наш веб-скрейпер:

  • User-Agent веб-скрапера будет содержать строку « Google-Offers »:
    • Пример: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Gecko; Google-Offers ) Chrome/104.0.5112.101 Safari/537.36
  • Вы также можете проверить, исходят ли вызовы от Google, используя обратный DNS, как рекомендовано в разделе «Проверка робота Googlebot и других поисковых роботов Google» . В нашем конкретном случае обратное разрешение DNS происходит по следующему шаблону: google-proxy-***-***-***-***.google.com .

Техническое поведение

Кэширование

Для снижения нагрузки на сайт-партнёр наши роботы, как правило, настроены на обработку всех стандартных HTTP-заголовков кэширования, присутствующих в ответе. Это означает, что для правильно настроенных сайтов мы избегаем повторной загрузки редко изменяющегося контента (например, библиотек JavaScript). Подробнее о реализации кэширования см. в этой документации по HTTP-кэшированию .