В данной статье будет рассказано о том, как отправлять сообщения из А-Парсера себе в Телеграм, а также показано 2 примера использования данного способа на практике. Подготовка Сначала нужно создать Telegram бота. В интернете о том как это сделать есть очень много статей, поэтому я расскажу о данной процедуре вкратце. Ищем в Telegram "отца всех ботов" @BotFather Отправляем ему команду /newbot и следуем дальнейшим инструкциям: задаем отображаемое имя и юзернейм бота После создания бота BotFather пришлет его токен - сохраняем (записываем, запоминаем...) его вместе с юзернеймом, который мы задали на 2-м шаге Бот готов. Теперь создаем группу в Телеграме. Открываем Меню - Создать группу Приглашаем в группу ранее созданного бота, введя в строку поиска его юзернейм. Также обязательно добавляем специального бота, который в будущем выдаст нам ID группы: @myidbot Называем группу любым удобным именем Теперь наша группа готова. Сюда будут приходить уведомления от созданного бота. Для отправки сообщений в данный чат, нужен его ID. В его получении нам поможет IDBot, которого мы ранее добавили в группу. Отправляем ему команду /getgroupid и получаем нужный ID, который также сохраняем. После этого IDBot можно удалить из группы. На этом работа с Telegram закончена. Теперь перейдем к А-Парсеру. Импортируем пресет из каталога: https://a-parser.com/resources/271/ Вписываем полученные ранее токен (вместо {YOUR_TOKEN}) и ID (вместо {CHAT_ID}) Тестируем: если все было сделано правильно, то после запуска пресета в ранее созданную группу должно прийти сообщение. Если же что-то пойдет не так, то в файл результата выведется сообщение об ошибке. Если тест успешен - сохраняем пресет Теперь у нас есть готовая система для отправки сообщений из A-Parser в Telegram. Примеры использования Уведомление об окончании работы задания А-Парсер может обрабатывать различные проекты, некоторые могут работать по несколько часов, а то и дней. Следить за тем, когда же завершится то или иное задание не очень удобно, поэтому настроим уведомление об окончании в Телеграм. Для этого воспользуемся функционалом Цепочки заданий. В задании, завершение которого нужно отследить, укажем в пункте Запустить по завершению ранее сохраненный пресет. Теперь можно запускать основное задание. По его окончанию запустится пресет, отправляющий уведомление и вы сразу узнаете о завершении работы основного задания, получив заранее сохраненное сообщение, например такое: Периодическое получение данных Аналогичным способом можно периодически получать необходимые данные прямо в Telegram. Для примера возьмем получение позиций сайта a-parser.com по нескольким ключевым словам. Создаем пресет, который будет парсить позиции: В поле Запустить по завершению указываем пресет, который отправляет уведомления. Но теперь включаем опцию Использовать файл результатов для запросов: Запускаем созданный пресет. Если все сделано правильно, то в телеграм прийдет сообщение с результатом основного пресета: Теперь воспользуемся Планировщиком и настроим периодическое выполнение созданного пресета. Например вот так (каждый день в 8:45): Теперь каждое утро к чашечке утреннего кофе и новостям нас будет ждать в Телеграме сводка по позициям сайта
@Support А можно такое же сделать для заданий, в которых может быть очень много результатов? Чтоб результаты разбивались пачками, скажем по 100 строк и отправлялись на Телеграм?
Можно. Формируйте в основном задании результат таким образом, чтобы в файле результата в каждой строке было по 100 подстрок. Подобный подход описан выше в примере "Периодическое получение данных". Вот пример шаблона (по 100 ссылок в сообщении): Код: [% FOREACH item IN p1.serp; count = count + 1; separator = count mod 100 ? '%0A' : "\n"; item.link _ separator; END %] Рекомендую запускать задание, которое отправляет сообщения, в 1 поток, чтобы не нарушать очередность. Примерно вот так: P.S. Хотя не совсем понятно, зачем отправлять себе в Телеграм весь результат, если его очень много...
@Support Не совсем то, чего хотелось бы. Вот если у нас есть задача которая может идти очень долго и она периодически пишет результат. И нужно этот результат отправлять в Телеграм не дожидаясь завершения всего задания так как важна оперативность получения. Как-то это можно сделать?
Как вариант - JS парсер, который будет парсить то что вам нужно и отправлять результаты по ходу выполнения в Телеграм
Можно, используя api методы телеграма sendPhoto или sendVideo (https://core.telegram.org/bots/api) Но для реализации нужной логики наверное лучше использовать JS парсеры.
добрый день. я использую пресет парсинга Яндекс Новостей https://a-parser.com/threads/2777/ и попробовал настроить чтобы результат парсинага отправлялся в Телеграм. Все сделал по инструкции, но сообщения в чат не попадают. Подскажите, пожалуйста, возможно ли использование комбинации парсинга новостей с телеграм-ботом или я просто в чем-то ошибся и по этому не посылаются сообщения?
Конечно возможно, вы можете отправлять любые сообщения в группу. Скорее всего где-то допускаете ошибку. Попробуйте сначала протестировать пресет отправки сообщений. Если с ним все в порядке, тогда тестируйте с парсингом новостей. Обращайте внимание на сообщения в ответе от API телеграма, там как правило пишется в чем проблема.
А возможно ли отправлять в телеграм сообщение только при определенном результате парсинга? Например, парсим наличие товара на сайте. Если "нет в наличии", то не отправляем по завершении. Если "в наличии", то отправляем.
Можно. Если следовать описанной в статье логике, то формируйте итоговый файл 1-го пресета так, чтобы в результате были сообщения только о товарах, которые "в наличии" (т.е. фильтруйте по наличию).
Подскажите, как отправлять одно сообщение, если контент берем из текстового файла построчно? 1 строка= 1 сообщение
скажите, а как реализовать отправику уведомлений только для тех запросов, позиции которых изменились? И чтобы он показывал на сколько и стркелочку "вврх-вниз"? например: купить a-parser: 30 ⬆️ - 10 ну или просто позиция ключа "купить a-parser" повысилась с 30 до 10.
Это реализуется с помощью JS парсера и написания соответствующей логики с хранением предыдущих результатов в БД.