Всем снова привет и с наступающим!
Похоже, я теперь буду постоянным участником конкурсов зеннолаба =)
У меня для вас опять шаблон, которым я пользуюсь на постоянке и с его помощью получаю не хилые результаты.
Я Более чем уверен, что каждый "зенновод" найдёт применение этому автоответчику или каким-то отдельным частям =)
Техническое воплощение не на 10 из 10, знаю, но со своими обязанностями он хорошо справляется и если его функционала не хватает - можно его легко переделать под любые ваши узкие задачи.
В шаблоне есть C# кубик "Ответ", его постарался максимально понятно прокомментировать, т.к. возможно он не каждому будет понятен.
Так же в шаблоне в кубиках с запросами к базе фигурирует такая строчка
Она получает все настройки для коннекта к MySQL серверу, чтоб в каждом запросе не писать ip, порт, логин, пароль и бд, достаточно в поле коннекта к базе написать mysql
Посмотреть как именно она работает - можно в общем коде. Я часто пользуюсь подобными облегчениями кода, удобно.
Итак по шаблону
[-Для чего нужен-]
Сильно поможет при спам рассылках, чтоб не кидать ссылки или фотки с ссылками в лоб
Для дорвейных страниц
Для "завлекательных" страниц, чтоб не палить ссылки в статусах и прочих местах - можно провоцировать постами или фотками писать в личку, а там уже автоответчиком уводить трафик в нужное место)
[-Требования для шаблона-]
Писался шаблон в зенопостере версии 5.17, последние правки шаблона делались в 7 версии.
MySQL запросы писались и вся работа велась на MySQL 8.0
[-Функционал шаблона-]
[-Почему умный?-]
1) У автоответчика есть чёрный список. Если он кому-то ответил максимально допустимое кол-во раз, он ему больше не будет отвечать.
2) Автоответчик отвечает последовательно.
То есть диалог будет выглядеть примерно так:
- Собеседник
- Автоответ 1
- Собеседник
- Автоответ 2
- Собеседник
- Автоответ 3
При хорошем продумывании целевого диалога большая часть клиентов даже не понимают, что им отвечает автоответчик.
3) Так же автоответчик старается быть максимально похожим на реального человека, устанавливая онлайн статусы, показывая в диалогах, что он "печатает" или "записывает голосовое"
Вот примеры нескольких диалогов с одного из аккаунтов, в голосовом сообщении просто "Спасибо" =)
4) Продуманные голосовые сообщения в разы увеличивают доверие
[-Структура базы-]
3 таблицы
vk_autoresponce - в ней сохраняются все собеседники которые получили автоответ. Эта таблица заполняется сама шаблоном, в процессе автоответов, считайте это ЧЁРНЫЙ СПИСОК
Поля: id, ts, user, project, count
vk_posts - в этой таблице хранятся сообщения и аттачи для конкретных аккаунтов и проектов
Поля: login, msg*, attach*, type*, project
msg - само сообщение (поддерживается Spintax рандомизация {1|2})
attach - прикрепление к сообщению (фото, видео, аудио, файлы и т.д) Только сам аттач, вида photo522123311_451232022, спинтакс тоже поддерживается.
type - как будет показываться вашему собеседнику
typing - вы печатаете
audiomessage - записываете голосовое сообщение
vk_users - а в этой хранятся сами аккаунты, на которых будем включать автоответчик
Поля: id, login, password, hash, proxy, answers, status, last_activity, projects, owner
login - номер телефона или е-мэйл аккаунта. Обязательное поле
password - пароль от аккаунта. Обязательное поле
hash - access_token. Можно не заполнять, шаблон сам получит.
proxy - Или без прокси, тогда ничего не заполнять или socks5, тогда заполнять в виде login:pass@ip:port
status - good . Обязательное поле. Если статус будет другой - шаблон не возьмёт аккаунт в работу.
projects - название проекта на латинице, без символов и знаков препинания, желательно одним словом
[-Детали работы шаблона-]
ВНИМАНИЕ! Почти все коды в этой статье пришлось редактировать, чтоб форум не считал их за SQL инъекции, по этому актуальный код смотреть внутри шаблона!
Получаем свободный аккаунт для текущего проекта. У всех свободных аккаунтов статус "good"
Сразу после получение аккаунта меняем на нём статус на "working", чтоб другие потоки не забрали этот аккаунт в работу
Методом account.getProfileInfo проверяем аккаунт на авторизацию, если авторизация спала - будет error в json, если ошибки нету - значит авторизованы.
После того, как убедились, что авторизация успешна - устанавливаем аккаунту статус онлайн на 5 минут
После установке статуса, get-запросом получаем LongPoll сервер, через который и будем получать новые сообщения
В ответ мы получаем сам сервер, ключ и timestamp для следующего запроса (чтоб сервер знал, с какого момента для нас сообщения будут считаться новыми)
Далее мы подключаемся к полученному серверу используя полученный ключ и указываем, что мы ждём 25 секунд.
Если в течении 25 секунд произойдёт активность любого собеседника - мы получим ответ от Long Poll сервера ВК и уже проверим что там за активность и стоит ли на неё отвечать
Если активности не будет, то шаблон заного сделает запрос в ожидании сообщения.
После получения нового сообщения проверяем, есть ли id нашего собеседника в базе для текущего проекта
Если нету - добавляем
Проверяем сколько уже сообщений отправили собеседнику
Если отправлено меньше, чем мы указали, то помечаем все сообщения в диалоге прочитанными
Получаем массив сообщений, аттачей и типов для текущего аккаунта и текущего проекта
Устанавливаем в диалоге статус "печатает" или "записывает голосовое сообщение" в зависимости от необходимого типа
Отвечаем собеседнику
После ответа обновляем кол-во отвеченных сообщений и время последнего ответа для нашего собеседника в текущем проекте
Работаем в этом цикле проверки новых сообщений и ответа на них, пока не закончится указанное для работы время
После завершения таймера работы автоответчика записываем в базу, сколько у этого аккаунта в текущем проекте ответов и когда он последний раз был активен
Если у аккаунта невалидный access_token - устанавливаем соответствующий статус
Если аккаунт ловит бан - меняем его статус на забаненный
Если шаблон завершает работу с непонятной для него ошибкой (это не бан и не кривой токен) - то устанавливаем аккаунту статус "bad_end", такие аккаунты лучше проверять руками, если всё ок, то менять их статус в базе на good
[-Инструкция по настройке-]
1) Установить MySql 8.0
2) Запустить MySQL 8.0 Command Line Client (Пуск -> MySQL -> MySQL Server 8.0 -> MySQL 8.0 Command Line Client)
3) Ввести команду "use mysql"
4) Ввести команду "UPDATE user SET Host=% WHERE User=root AND Host=localhost;" (если планируется доступ к базе или управление с других компьютеров)
5) Ввести команду "FLUSH PRIVILEGES;" (если выполнили команду из пункта 4)
6) Ввести команду "CREATE DATABASE zp;" (zp - название базы данных, которую потом вписывать в настройках шаблона)
7) Ввести команду "use zp;"
Ввести команду "source <путь_до_файла_zp_struct.sql>;"
* Все команды в конце имеют ";" Будьте внимательны!
** Для удобства работы с базой лучше установить программу Navicat или её аналоги
*** В этой инструкции тоже пришлось удалить часть кода, инструкция с точными командами в прикреплении
Более подробно о настройке в видео:
Очень надеюсь, что вам понравилась статья и шаблон и рассчитываю на ваш голос!
Всех с наступающим! И хороших вам профитов! =)
Похоже, я теперь буду постоянным участником конкурсов зеннолаба =)
У меня для вас опять шаблон, которым я пользуюсь на постоянке и с его помощью получаю не хилые результаты.
Я Более чем уверен, что каждый "зенновод" найдёт применение этому автоответчику или каким-то отдельным частям =)
Техническое воплощение не на 10 из 10, знаю, но со своими обязанностями он хорошо справляется и если его функционала не хватает - можно его легко переделать под любые ваши узкие задачи.
В шаблоне есть C# кубик "Ответ", его постарался максимально понятно прокомментировать, т.к. возможно он не каждому будет понятен.
Так же в шаблоне в кубиках с запросами к базе фигурирует такая строчка
C#:
string mysql = MySQL.GetMySQL(project);
Посмотреть как именно она работает - можно в общем коде. Я часто пользуюсь подобными облегчениями кода, удобно.
Итак по шаблону
[-Для чего нужен-]
Сильно поможет при спам рассылках, чтоб не кидать ссылки или фотки с ссылками в лоб
Для дорвейных страниц
Для "завлекательных" страниц, чтоб не палить ссылки в статусах и прочих местах - можно провоцировать постами или фотками писать в личку, а там уже автоответчиком уводить трафик в нужное место)
[-Требования для шаблона-]
Писался шаблон в зенопостере версии 5.17, последние правки шаблона делались в 7 версии.
MySQL запросы писались и вся работа велась на MySQL 8.0
[-Функционал шаблона-]
- Шаблон работает только с MySQL базой (в базе все автоответы, список id кому уже ответили, сообщения для автоответчика).
- Поддерживает прокси
- Работает на API кроме получения токена
- Автоматически получает и обновляет токен для аккаунта
- Ждёт указанное кол-во минут новые сообщения и отвечает на них
- Отвечает до 5 последовательных сообщений
- Может к ответам прикреплять вложения (фото, видео, аудио, документы и т.д)
- Настройка сколько автоответов отправлять каждому собеседнику (от 1 до 5)
- Разделение аккаунтов по проектам (на каждый проект можно указать сколько угодно аккаунтов и использовать их многопотоке)
- Возможен многопоток в формате 1 копия шаблона = 1 проект = многопоток внутри проекта
- Пауза между проверками новых сообщений (ждёт новые сообщения в течении 25 секунд, если не пришло - пауза)
- Перед ответом в диалоге помечает сообщения прочитанными
- Поддерживается рандомизация сообщений (Spintax)
- При отправке сообщения собеседнику показывает, что вы печатаете
- При отправке аудио возможна установка статуса "записывает голосовое сообщение"
- При блокировке аккаунта устанавливает в базе статус "BANNED"
- При истечении срока действия токена - получает его заного
- Выводит из комы зависшие в "работе" аккаунты (у которых в базе статус "working" но по какой-то причине шаблон до конца не доработал и не вернул статус на свободный)
[-Почему умный?-]
1) У автоответчика есть чёрный список. Если он кому-то ответил максимально допустимое кол-во раз, он ему больше не будет отвечать.
2) Автоответчик отвечает последовательно.
То есть диалог будет выглядеть примерно так:
- Собеседник
- Автоответ 1
- Собеседник
- Автоответ 2
- Собеседник
- Автоответ 3
При хорошем продумывании целевого диалога большая часть клиентов даже не понимают, что им отвечает автоответчик.
3) Так же автоответчик старается быть максимально похожим на реального человека, устанавливая онлайн статусы, показывая в диалогах, что он "печатает" или "записывает голосовое"
Вот примеры нескольких диалогов с одного из аккаунтов, в голосовом сообщении просто "Спасибо" =)
4) Продуманные голосовые сообщения в разы увеличивают доверие
[-Структура базы-]
3 таблицы
vk_autoresponce - в ней сохраняются все собеседники которые получили автоответ. Эта таблица заполняется сама шаблоном, в процессе автоответов, считайте это ЧЁРНЫЙ СПИСОК
Поля: id, ts, user, project, count
vk_posts - в этой таблице хранятся сообщения и аттачи для конкретных аккаунтов и проектов
Поля: login, msg*, attach*, type*, project
msg - само сообщение (поддерживается Spintax рандомизация {1|2})
attach - прикрепление к сообщению (фото, видео, аудио, файлы и т.д) Только сам аттач, вида photo522123311_451232022, спинтакс тоже поддерживается.
type - как будет показываться вашему собеседнику
typing - вы печатаете
audiomessage - записываете голосовое сообщение
vk_users - а в этой хранятся сами аккаунты, на которых будем включать автоответчик
Поля: id, login, password, hash, proxy, answers, status, last_activity, projects, owner
login - номер телефона или е-мэйл аккаунта. Обязательное поле
password - пароль от аккаунта. Обязательное поле
hash - access_token. Можно не заполнять, шаблон сам получит.
proxy - Или без прокси, тогда ничего не заполнять или socks5, тогда заполнять в виде login:pass@ip:port
status - good . Обязательное поле. Если статус будет другой - шаблон не возьмёт аккаунт в работу.
projects - название проекта на латинице, без символов и знаков препинания, желательно одним словом
[-Детали работы шаблона-]
ВНИМАНИЕ! Почти все коды в этой статье пришлось редактировать, чтоб форум не считал их за SQL инъекции, по этому актуальный код смотреть внутри шаблона!
Получаем свободный аккаунт для текущего проекта. У всех свободных аккаунтов статус "good"
C#:
SELECT * FROM `vk_users` WHERE `status`=good AND projects LIKE %имя_проекта% LIMIT 0,1;
C#:
UPDATE vk_users SET status=working, last_activity=t WHERE login=login AND projects LIKE %имя_проекта%;
После того, как убедились, что авторизация успешна - устанавливаем аккаунту статус онлайн на 5 минут
C#:
https://api.vk.com/method/account.setOnline?voip=0&access_token=access_token&v=5.60
C#:
https://api.vk.com/method/messages.getLongPollServer?lp_version=3&need_pts=1&access_token={-Variable.access_token-}&v=5.65
Далее мы подключаемся к полученному серверу используя полученный ключ и указываем, что мы ждём 25 секунд.
C#:
https://{-Variable.server-}?act=a_check&key={-Variable.key-}&ts={-Variable.ts-}&wait=25&mode=2&version=3
Если активности не будет, то шаблон заного сделает запрос в ожидании сообщения.
После получения нового сообщения проверяем, есть ли id нашего собеседника в базе для текущего проекта
C#:
SELECT EXISTS(SELECT user FROM vk_autoresponce WHERE user = user_id AND `project`=имя_проекта);
C#:
INSERT INTO vk_autoresponce(user, project) VALUES(user_id, имя_проекта);
C#:
SELECT count FROM `vk_autoresponce` WHERE `user`=user_id AND `project`=имя_проекта LIMIT 0,1;
C#:
https://api.vk.com/method/messages.markAsRead?message_ids={id}&access_token="+access_token+"&v=5.65;
C#:
SELECT * FROM `vk_posts` WHERE `login`=login AND `project`=имя_проекта;
C#:
https://api.vk.com/method/messages.setActivity?user_id={id}&type={type}&access_token="+access_token+"&v=5.65;
C#:
https://api.vk.com/method/messages.send?user_id={id}&random_id={random}&message={msg}&attachment={att}&access_token="+access_token+"&v=5.65
C#:
UPDATE vk_autoresponce SET count=msgs, ts=timestamp WHERE user=user_id AND `project`=имя_проекта;
После завершения таймера работы автоответчика записываем в базу, сколько у этого аккаунта в текущем проекте ответов и когда он последний раз был активен
C#:
UPDATE vk_users SET status=good, last_activity=timestamp, answers=answers WHERE login=login AND projects LIKE %имя_проекта%;
C#:
UPDATE vk_users SET status=BAD_ACCESS_TOKEN WHERE login=login AND projects LIKE %имя_проекта%;
C#:
UPDATE vk_users SET status=BANNED WHERE login=login AND projects LIKE %имя_проекта%;
C#:
UPDATE vk_users SET status=bad_end WHERE login=login AND projects LIKE %имя_проекта%;
[-Инструкция по настройке-]
1) Установить MySql 8.0
2) Запустить MySQL 8.0 Command Line Client (Пуск -> MySQL -> MySQL Server 8.0 -> MySQL 8.0 Command Line Client)
3) Ввести команду "use mysql"
4) Ввести команду "UPDATE user SET Host=% WHERE User=root AND Host=localhost;" (если планируется доступ к базе или управление с других компьютеров)
5) Ввести команду "FLUSH PRIVILEGES;" (если выполнили команду из пункта 4)
6) Ввести команду "CREATE DATABASE zp;" (zp - название базы данных, которую потом вписывать в настройках шаблона)
7) Ввести команду "use zp;"
Ввести команду "source <путь_до_файла_zp_struct.sql>;"
* Все команды в конце имеют ";" Будьте внимательны!
** Для удобства работы с базой лучше установить программу Navicat или её аналоги
*** В этой инструкции тоже пришлось удалить часть кода, инструкция с точными командами в прикреплении
Более подробно о настройке в видео:
Очень надеюсь, что вам понравилась статья и шаблон и рассчитываю на ваш голос!
Всех с наступающим! И хороших вам профитов! =)
- Тема статьи
- Соц. сети
- Номер конкурса статей
- Двенадцатый конкурс статей
Вложения
-
1,4 КБ Просмотры: 523
-
138,1 КБ Просмотры: 511
-
766 байт Просмотры: 598
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.
Последнее редактирование модератором: