Долго искал готовое решение, которое позволит решить задачу:Предупредить, если например на балансе Яндекс.Директ денег осталось меньше, чем 5 000 руб.Ничего готового не было найдено, поэтому сделал через no-code платформу Make, делюсь инструкцией.Подойдет, как для клиентских аккаунтов, так и для агентских, созданных, например, через Elama.Настройка бота займет примерно 1 час. Самое долгое и нудное, это подготовить аккаунты, получить доступы. Регистрация приложения в API Яндекс.Директ1. Перейдите по ссылке под вашим аккаунтом Директа. Дайте приложению любое название, иконку прикреплять не обязательно. В списке платформ выберите веб-сервис и нажмите на «Подставить URL для разработки».2. Далее в списке «Какие данные вам нужны?» Отметьте галочкой «Использование API Яндекс.Директа».Поля «Дополнительно», «Ссылка на сайт» и «Контактные данные» можно оставить пустыми. Нажмите на кнопку «Создать приложение».3. После этого вы перейдете на страницу вашего приложения, где будут находиться данные для получения токена авторизации. Справа вы увидите графу ClientID: Чтобы получить токен перейдите по ссылке: https://oauth.yandex.ru/authorize? response_type=token&client_id=идентификатор приложенияГде идентификатор приложения это — ваш ClientID. Авторизуйтесь через ваше приложение под аккаунтом, в котором вы хотите следить за балансом и сохраните полученный токен. 4. Следующим шагом будет подачи заявки на полный доступ к API в интерфейсе Директа. Откройте доступ к API в Яндекс.Директ, если он еще не открыт. Делается это через меню: Инструменты — API. Наше приложение уже появилось в списке под пунктом «Мои приложения», осталось подать заявку на получение доступа к API.5. Для этого необходимо перейти в раздел «Мои заявки» и нажать на кнопку «Новая заявка». Заявку подавайте на полный доступ.Перед вами откроется окно с анкетой. В первом пункте выберете ваше новое приложение. В дальнейшем можно будет пропускать шаг подачи заявки на получение полного доступа к API для вашего приложения и просто использовать ссылку авторизации из пункта 3, которая автоматически добавит приложение в список. Переходим к следующим пунктам в анкете. Укажите контактный Email, данные о компании можно не указывать. Далее выбираете специфику вашей работы. Технические данные о приложении. Здесь можно написать «не используется».Выбираем для чего предназначено приложение.И его основные функции. Указываем возможности, которое дает наше приложение.И кратко описываем схему взаимодействия вашего будущего чат-бота с API Яндекс.Директ.В качестве скриншота интерфейса можно взять скриншот сценария из самого сервиса Make, в котором мы в дальнейшем зарегистрируемся.И добавить описание.Соглашаемся с правилами разработки и отправляем заявку. Если все поля заполнены корректно, заявку быстро одобрят. Теперь у нас есть приложение с полным доступом к API Яндекс.Директ, с помощью которого мы сможем вытянуть баланс и отправить в Telegram с помощью конструктора чат-ботов. Создание бота в Telegram.7. Введите в поиске Telegram @BotFather и откройте с ним диалог. Выберите пункт Create a new bot.Выберете имя для вашего бота. Если имя не занято, добавьте в конце _bot. В следующем сообщении вы получите ссылку на бота и токен авторизации.Сохраняем токен и переходим по ссылке, где активируем бота.Настройка бота в Make8. Создайте учетную запись на make.com. Перейдите во вкладку «Сценарии» и нажмите «Создать новый сценарий». Добавим первый модуль — HTTP запрос, который будет обращаться к API Яндекс.Директ через созданное ранее приложение.Нажимаем на крестик и вводим в поиск HTTP.В выпавшем списке выбираем Make a request.В поле URL прописываем следующий адрес:https://api. direct. yandex. ru/live/v4/jsonMethod: POSTДалее добавляем заголовок в Headers, нажав на кнопку Add a header.В открывшемся поле Name прописываем: Authorization. В поле Value прописываем: Bearer Ваш токенНапомню, что токен вы получили после авторизации в вашем приложении (пункт 3).Вот что получилось (не забываем пробел после Bearer) : Добавляем второй заголовок (Add a header) , в которых прописываем следующее: Name: Client-LoginValue: Логин вашего аккаунтаТретий заголовок: Name: Accept-LanguageValue: ruЧетвертый заголовок: Name: Content-TypeValue: application/json; charset=utf-8В параметре Body type выбираем значение Raw:В появившемся поле Content type выбираем значение Text:В поле Request content вставляем следующий запрос:{ "token": "Ваш токен", "method": "AccountManagement", "param": { "SelectionCriteria": {}, "Action": "Get" } }Нажимаем «Ок» и проверяем, правильно ли мы заполнили поля. Для этого нажимаем на кнопку Run once и принудительно запускаем сценарий.Если поля заполнены корректно, в ответ на запрос мы получим следующие параметры:Баланс аккаунта можно увидеть после значения Amount. Осталось вытащить это значение и назначить переменной, для того чтобы в Telegram приходили актуальные цифры. Для этого мы будем использовать модуль JSON. Ищем его в поиске.Из выпавшего списка выбираем Parse JSON.Добавляем модуль и добавляем Data structure. В открывшемся поле раскрываем строчку Specification. В поле Name вводим любое название, в поле Specification выбираем text.Нажимаем на JSON string, слева появляются переменные HTTP запроса. Выбираем переменную Data и нажимаем OK.Принудительно запускаем сценарий. Появится предупреждение о том, что модуль JSON не должен быть последним в сценарии, игнорируем предупреждение и нажимаем Run anyway.Разворачиваем то, что у нас получилось на выходе и видим, что значение Amount перешло в отдельную переменную, которую мы можем использовать для Telegram-бота.Теперь мы можем подключить к сценарию Telegram-бота. Для этого добавляем новый модуль, ищем в поиске Telegram и из выпавшего списка выбираем Send a Text Message or Reply.В открывшемся окне вводим любое название для нового соединения, а в строке Token вводим токен вашего Telegram-бота, который мы скопировали в пункте 7.Далее заполним поле Chat ID. Для этого создайте группу в Telegram и добавьте в нее вашего бота. Перейдите в настройки группы и выберите пункт Group Type. Выбираем значение Public Group и прописываем название ссылки для нашей группы.Сохраняем изменения и копируем ссылку группы. Вставляем ссылку группы в Chat ID, убираем https://t.me и ставим перед названием значок @.Бот готов, осталось настроить его на ваше усмотрение. Для того, чтобы уведомление в Telegram поступало тогда, когда баланс в Яндекс.Директ, например, меньше 5000 рублей, настроим фильтрацию. Нажимаем на пунктирную линию между модулями JSON и Telegram.Задаем название фильтра в поле Label.В первой строке поля Condition укажите переменную Amount, которая содержится в Data в теле JSON.Далее выбираем условия фильтрации: Numeric operators => Less than.Устанавливаем значение меньше 5000 и подтверждаем условия фильтрации.Далее выбираем какое сообщение наш бот будет отправлять в группу. Для этого переходим к настройкам бота и полю Text.Пишем текст по своему желанию, также можно добавить переменную Amount, чтобы получить актуальные данные о балансе. Сохраняем настройки, запускаем сценарий и смотрим, что у нас получилось. Бот сработал, отфильтровал значение и прислал уведомление в Telegram-чат о том, что баланс меньше 5000 рублей.В конце настроим триггер по времени, когда мы ходим получать уведомление о балансе в Telegram. Для этого перейдите к первому модулю HTTP запроса и нажмите на циферблат.Откроется меню с настройками времени. Укажите нужное вам время, учтите параметр Time zone.✅ Готово.Через Make можно делать и другие интересные автоматизации например с amoCRM, Trello, Asana. Позже расскажу про личного бота «Посудомойка».
А как сделать для множества аккаунтов Яндекс Директа
Крутой гайд. Отличная работа
Михаил, спасибо за полезный гайд! У меня вопрос. Делаю все так же по инструкции, но почему то выдает следующее. Не знаешь в чем может быть причина?
В статье была ошибка «https://api. direct. yandex. ru/live/v4/json» нужно без пробелов, проверьте – возможно поможет. Самое сложное, именно как раз авторизоваться в API Яндекса.
Плюс немного интерфейс Яндекса поменялся, на днях актуализирую статью.
Вот у меня тоже ошибка. Может ли это быть потому, что токен указала агентский, а логин клиентский на этом агентском аккаунте?