Способы работы со статистикой в API myTarget. Александр Покатилов (myTarget)
Разработка и внедрение PHP SDK myTarget. Василь Кулаков (DSL)
1. Василь Кулаков / SocialKey Ads
РАЗРАБОТКА И ВНЕДРЕНИЕ
PHP SDK myTarget
2. SocialKey Ads
• Централизуем управление таргетированной
рекламой в разных соцсетях;
• предоставляем собственные сегменты,
собранные аналитикой BigData;
• работаем с MyTarget как агентство;
• тысячи новых активных баннеров в месяц.
3. Инструменты курильщика
• Примитивные примеры по работе с API из
документации;
• небольшие библиотеки, не отвечающие
требованиям сертификации;
• самописная логика на голом curl.
4. Что хотелось получить
• Полноценную объектную модель:
– ресурсов с вложенной структурой зависимостей;
– логики работы с API;
• авторизацию «из коробки»:
– 4 способа авторизации;
– sudo is deprecated;
– правильный подход – получение клиентских
токенов;
– но есть нюансы: лимиты на получение и
обновление токенов.
5. Что хотелось получить
• Удобную работу с лимитами API:
– разные лимиты для разных клиентов;
– throttling.json vs HTTP-headers.
• обработку ошибок:
– 4хх в виде понятных и информативных
исключений.
6. Что хотелось получить
• Учет «особенностей»:
– восприятие html-ответа как “нормального”
сообщения об ошибке;
– 429 код – не обязательно говорит о
превышении лимита;
– две версии API;
• работа с пакетными запросами;
• логирование;
• расширяемость, универсальность.
7. Архитектура SDK
• Основной действующий слой – операторы;
• оператор использует:
– клиент для работы с HTTP
• запросы, парсинг ответа;
• валидация ответа;
– маппер для преобразования json в объекты
доменной модели;
10. Архитектура SDK
• Middleware-stack
– каждый middleware получает запрос и передаёт
его следующему middleware по стеку;
– внизу стека находится TerminatingMiddleware,
который совершает реальный запрос и
передаёт ответ на выход;
– ответ также передается обратно по стеку;
– порядок играет роль.
11. Ехал middleware через middleware
• Логирование;
• контроль лимитов, DoctrineCache для
хранения где угодно;
• проверка валидности ответа;
• получение и обновление токенов.
14. Архитектура SDK
• Mapper преобразует json в объекты:
– Правила мапинга конфигурируются для
каждого объекта аннотациями;
– если какой-то информации не хватает – пишем
null;
18. Интеграция. SocialKeyAds.
• Используем бандл;
• асинхронно и многопоточно обрабатываем задания на
выгрузку:
– Rabbitmq;
– Event-band;
• «отложенные очереди» для повторов при ошибках;
• для лимитов интервал повтора вычисляется в момент
ошибки;
• для ошибок сети со временем интервал повторов
увеличивается;
• «мертвая очередь» для постоянных ошибок и
терминальных ошибок;
• микросервис токенов.
19. Что хочется доделать
• Push-уведомления?
• расширенная поддержка 2-й
версии:ремаркетинг;
– загрузка html5-баннеров;
– projection.json;
– быстрая статистика и статистика по
конверсиям;
• поддержка недокументированных ресурсов
в виде отдельной библиотеки.
20. Спасибо за внимание
Лицензия Apache 2.0
https://github.com/Digsolab/mytarget-php-ads-sdk
https://github.com/Digsolab/MyTargetClientBundle
vasil@digsolab.com