Зависимые типы на примере взаимодействия с Яндекс.Директ API. Пользовательское соглашение об использовании API Сервиса «Яндекс.Директ Действие данного соглашения

В рамках данного курса мы рассмотрим сервис по управлению ставками в Директе R-брокер - http://r-broker.ru/ .

Есть много подобных сервисов. R-брокер – это один из лидеров на рынке.

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

Если Вы хотите подключить сервис на свой аккаунт, то есть сетка тарифов. Цены за пользование возможностями сервиса зависят от кол-ва фраз и корректировок.

Как работает R-брокер?

R-брокер работает через API Директа: http://direct.yandex.ru/help/?id=1113180

Он подключается к кампании и имеет доступ для полей назначения ставок.

Сервис делает до 96 автоматических коррекций в сутки (каждые 15 минут).

По хелпу Директа новые ставки активизируются от 5 до 60 мин. Но средний срок обработки данного действия составляет 10 минут!

Смысл R-брокера

1. Защита от подсидки

Р-брокер защищает от подпора/подсидки (можно называть по-разному).

Разберем на примере.

1 спец = 5$
2 спец = 2$
вход в спец = 0.5$

Вы показываетесь на 1-м месте.

Ваша сумма, которая списывается за клик - 2.01$.

Конкурент на 2-ой позиции берет и подпирает Вас, назначает ставку 4.99$.

Все. Теперь клик для Вас стоит 5$, а не 2.01$.

Когда у Вас в кампании сотни фраз, Вы никогда не сможете сами контролировать возникновение таких ситуаций .

Сейчас подобная функция есть уже и у некоторых роботов.

Пример - www.magazion.ru.

На основании выбранной стратегии "Магазион" атакует ставки конкурентов, устанавливая собственные, более высокие ставки. Величина атакующей надбавки зависит от настройки агрессивности (может быть задана как для всей рекламной кампании, так и для отдельных фраз).

Ну а функция по защите есть у всех адекватных современных роботов.

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

Например - пластиковые окна, создание сайтов и т.п.

Без автоматизации ставок через API РК в этих тематиках не может быть действительно успешной.

2. Управление ставками

Р-брокер – это робот. Он следит за правильным осуществлением выбранной стратегии .

Р-брокер порой просто незаменим.

Главная особенность - это удержание позиций без вылета .

Цены в течении суток то поднимаются, то опускаются.

Если Вы хотите быть в спеце на входе, мы можете вручную задать ставки в интерфейсе Директа на вход в блок.

Любое колебание в 1 цент и мы вылетим оттуда.

Поставим изначально больше (в рамках своего ограничения) - возможны подсидки.

Можем сидеть весь день и сами ставки корректировать, но скоро окажемся в психушке.

Р-брокер сам может несколько раз в час корректировать ставки .

Пока у конкурентов ставки меняются автоматом через API по много раз в сутки, эти люди меняют их ручками раз в день утром. Совершенно не равная конкуренция.

Нюансы

Подключить Р-брокер к авто-стратегиям Директа нельзя, т.к. поля назначения ставок не доступны.

Р-брокер идеально использовать под наивысшую доступную позицию (он просто назначает ставку нужного места) и входы в блоки по мин. цене.

Автоброкер Директа всегда будет понижать ставку до минимально возможной именно сейчас и именно тут.

Решающее значение при определении позиции на поиске имеют автоброкер и стратегия в Директе.

Вот что плохо - Р-брокер порой долго грузится.

Настройка R-брокера

Р-брокер может на первый взгляд показаться сложным. Но, уверяю Вас, ничего сложного в нем нет.

Если Вы еще не очень хорошо поняли, как работает Директ, то пока не поймете, далее лучше не читать, иначе понять будет очень сложно. Лучше еще раз изучить прошлые темы.

Инструкция по R-брокеру обязательна к ознакомлению !

В Р-брокере много лишнего. Я напишу то, на что стоит обращать внимание.

Журналы событий / Статистика и аналитика

Статистику никогда через Р-брокер не смотрю. Журнал то полезен, то нет.

Это посредственные разделы. Можете сейчас вообще на них внимания не обращать.

Опции управления

Бегунком (слева) включаем управление и назначаем расписание корректировки ставок. Ставим галочки на то время, в которое идет Ваша реклама.

Контроль качества кампании

Лучше ничего не трогать.

Пересоздавать фразу за низкий СТR - это вообще путь в могилу.

Надо лечить проблему, а не пересоздавать. Яндекс ведь все запоминает.

Автоматическое подключение новых фраз к управлению

Если тактика одна на всю РК, то можно. А если нет, то надо каждую фразу включать самому.

Настройки тактик ведения РК

R-max - это максимальная цена, которую мы готовы платить за клик. Не та, которая будет в интерфейсе Директа. Это информация именно Р-брокеру.

Общие параметры

Ставим галочку на второй пункт "Выставлять ставку всегда не ниже минимальной для показа на поиске".

Первый пункт обычно отключаю.

Включив 3 пункт, у нас не будет ограничения r-max и ставка может быть назначена даже 50$ - главное, чтобы бюджет позволял. От греха подальше лучше не включать.

Кстати, 50$ - это максимально разрешенная ставка в Директе. Ужас. Не знаю, кто готов столько платить за 1 клик. Вы готовы?

Смена опций на все фразы в кампании

Тут можно задать общую тактику.

О стратегиях подробнее почитайте в инструкции .

Основные тактики:

1>2>3 (занимаем определенное место, выпадаем на ближайшее снизу)

1>Г>Д (занимаем место в пределах блока, выпадаем в соседний блок)

Остальные не особо и нужны. Они в какой-то степени повторяют эти тактики.

Пример

Представим, что у нас в интерфейсе Директа тактика - вход блок по мин. цене (спец + гарантия).

Настраиваем Р-брокер на 1>Г>Д CP (спецразмещение) с каким-то R-max.

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

Все, что в гарантии, как только возможно - прорывается в спец.

Экономно, сердито.

Запомните: хорошо настроенную РК очень легко испортить на поиске, поэтому тактики и правильный запуск очень важны.

Здравствуйте.

Популяризации зависимых типов для программирования немало способствует библиотека Servant, используемая как для предоставления типизированного API (servant-server), так и для написания запросов к уже существующему (servant-client). Мы будем использовать эту библиотеку (объясняние принципа ее работы выходит за рамки данного поста, желающие могут ознакомиться с докладом ). Однако, встроенными в Servant зависимыми типами дело не ограничится, и мы добавим еще своих.

План

Мы опишем несколько базовых сущностей Яндекс.Директ API: метод (add, get), операция, результат операции, объект (наименования словарей, объявления, кампании) и определим зависимо-типизированную функцию, которая позволяет вызвать любой метод, параметризованный некоторым объектом, и принять ответ, тип которого зависит от вызванного метода и типа объекта.

Операции

Объекты

Яндекс.Директ API является весьма разветвленным: с его помощью можно обрабатывать объявления, группы объявлений, кампании, расширения, ключевые слова и многое другое. Мы напишем обобщенную функцию, которая позволит передать вызываемому методу любой из этих объектов.

Сначала пару примеров. Объявления:

Кампании:

Адресом для обработки запросов, имеющих отношение к объявлениям, является “https://api.direct.yandex.com/json/v5/ads”, а адресом для обработки запросов, имеющих отношение к кампаниям, является “https://api.direct.yandex.com/json/v5/campaigns”. Все остальные объекты также имеют собственные адреса для обработки запросов. Так что заведем класс типов

То есть каждый объект должен быть сериализуем в JSON, чтобы его можно было передать по сети, и иметь имя, которое составляет часть адреса для запросов.

API

Опишем API Директа с помощью инструментов, предоставляемых Servant:

a – тип параметра вызываемого метода, r – тип возвращаемого результата. Операция автоматически сериализуется в JSON, результат автоматически десериализуется из JSON.

Нам также понадобится Директ-специфичный конфиг:

И мы наконец можем собрать все вместе и определить основную функцию для общения с API Директа:

(В новых версиях Servant Manager является частью ClientM , но на момент написания поста в последнем LTS-снимке на Stackage используется старая версия). perform принимает Директ-специфичный конфиг, менеджер соединения, метод, который следует вызвать, в форме синглтона и объект, который будет передан методу. Из сигнатуры perform видно, что тип возвращаемого значения (ResultOf m a) действительно зависит от вызванного метода (m в SMethod m) и от типа параметра (a), ему переданного. В остальном мы просто используемым базовый функционал, предоставляемый Servant.

Заключение

С помощью зависимо-типизированного Servant можно декларативно описать API, и избавиться от необходимости вручную сериализовать-десериализовать данные. Однако, типы данных, приходящих в ответ на запрос, могут зависеть от содержимого запроса, но зависимые типы и здесь позволяют выразить все необходимые инварианты.

Настоящее Соглашение регулирует отношения между Вами (далее - Вы или Пользователь) и ООО «ЯНДЕКС» (далее - Яндекс) касательно использования API (далее - API) Сервиса «Яндекс.Директ» (далее - Сервис).

Яндекс предоставляет Вам возможность использовать API Сервиса для управления рекламными кампаниями с использованием Приложений, взаимодействующих с Сервисом, а также использовать API иными способами, не противоречащими настоящему Соглашению. Использование API в рамках Сервиса регулируется настоящим Соглашением, Офертой Сервиса, размещенной по адресу , и Пользовательским соглашением Яндекса, которое доступно по адресу: .

Используя API, Вы тем самым выражаете согласие со всеми условиями настоящего Соглашения и указанных выше документов и обязуетесь их соблюдать или прекратить использование API.

Для целей настоящего Соглашения используются следующие термины:

    API Сервиса «Яндекс.Директ», API - программный интерфейс взаимодействия Приложений (как этот термин определен ниже) с Сервисом «Яндекс.Директ».

    API-Ключ (OAuth-токен) - уникальный идентификатор, выдаваемый Пользователю, позволяющий получить доступ к функциям Сервиса.

Условия использования API:

1. Ваша безопасность.

Вы несете ответственность за сохранность Вашего API-ключа, а также за все, что будет сделано на Сервисе с помощью используемого Вами Приложения и API-ключа. Все действия в Сервисе, совершенные с использованием Вашего API-ключа, считаются совершенными Вами. Вы соглашаетесь с тем, что Вы обязаны немедленно уведомить Яндекс о любом случае неавторизованного (не разрешенного Вами) доступа с Вашим API-ключа и/или о любом нарушении безопасности. Яндекс не отвечает за возможную потерю или изменение данных, которая может произойти из-за нарушения Вами положений этой части ПС. Яндекс призывает Вас использовать все меры по обеспечению безопасности работы API, в том числе меры по сохранению конфиденциальности API-ключа.

2. Автоматизированный доступ.

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

3. Мониторинг.

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

4. Гарантия доступа.

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

Вы соглашаетесь, что Яндекс может приостановить или закрыть полностью доступ к API, менять протоколы и способы доступа без объяснения причин и без ответственности со своей стороны. Вы сами отвечаете за сохранность всех своих данных и должны быть готовы к управлению кампаниями через клиентский веб-интерфейс.

5. Ограничения.

Вы соглашаетесь, что Яндекс может по своему усмотрению устанавливать ограничения (квоту) на использование API или отдельных его компонентов, зависящую от многих показателей в числе которых, помимо всего прочего, объем услуг, оказанных Пользователю Приложения, технические показатели рекламной кампании (средний CTR, наличие отклоненных на модерации объявлений и т.д).

Правила применения таких ограничений описаны в «Вопросах и ответах», размещенных по ссылке «API» в Вашем аккаунте.

В случае, если Вы используете Приложение, не соответствующее требованиям, изложенным в Пользовательском соглашении для Разработчиков, то Яндекс оставляет за собой право ограничить и/или запретить Вам доступ к API.

Вы также несете всю ответственность и риск неблагоприятных последствий, связанных с ограничением и\\или запретом доступа Приложений к API по основаниям, установленным Пользовательским соглашением для Разработчиков.

6. Третьи лица.

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

В случае предоставления доступа к API любым третьим лицам (в том числе путем создания для них учетной записи, связанной с Вашей учетной записью) Вы полностью несете ответственность за все действия таких третьих лиц, как за свои собственные.

7. Действие данного соглашения.

Яндекс оставляет за собой право приостановить в отношении Вас действие настоящего соглашения, если Вы не выполняете его условия. С момента такой приостановки Вы обязаны прекратить дальнейшее использование API.

8. Заключительные положения.

Настоящее Соглашение и все отношения, связанные с использованием Сервиса и API, регулируются законодательством РФ.

Все претензии, связанные с использованием/невозможностью использования API в рамках Сервиса, должны направляться по адресу [email protected] .

Яндекс в любое время без уведомления Пользователя может изменять текст настоящего Соглашения и/или любые иные условия использования Сервиса. Актуальный текст настоящего Соглашения размещается по адресу: .

_____________________________

Дата публикации 05.04.2019 г.

Предыдущая версия документа: .

Предыдущая версия документа: .