Как создать сверхскоростного робота в ВК? / СоХабр
В наши дни роботы – это новое понятие, включающее в себя возможность возложить свои труды на машину. В этой записи мы будем делать робота для развлечения. Кому-то эта публикация покажется очень исчерпывающей, и я буду верить, что, если вы тоже активны в этой теме, поделитесь информацией о своих открытиях в этой сфере. Так же я выражаю благодарность автору этой публикации за проявленный интерес к этой теме. Его публикация натолкнула меня на мысль улучшить работу с помощью новейших технологий ВКонтакте. Итак, перейдём непосредственно к теме.
Большинство из нас видели ботов в ВК. Они выглядели в виде побочных аккаунтов. Из-за этого была нужда постоянного ввода капчи или траты денег на сервисы автоввода капчи. Было много ограничений, в том числе на количество сообщений тем, кто не находится в списке друзей. Сейчас, в 2017 году, всё поменялось: ВКонтакте с ужасающей скоростью меняется. Новый дизайн, доска объявлений, сообщения в сообществах… Всё происходит так быстро, что невозможно успеть ознакомиться с большинством из них. Сегодня я это исправляю. По окончанию статьи, если вы будете придерживаться моей инструкции, вы станете ботоводом ВКонтакте. Приступим к работе.
Шаг 1. Подготовка.
Здесь ничего сложного. Сможет осознанно сделать каждый.
Группа в ВК
Для робота нам понадобится завести группу ВКонтакте. Обозвать её названием робота и провести некоторые операции.
Для начала получим вечный access_token для работы с сообществом. Можно расставить все права на случай, если вы будете улучшать мой код.
Ещё надо не забыть включить сообщения сообщества. Это всё сделать нетрудно через кнопку Управление сообществом. Я думаю, это все умеют, поэтому описывать слишком досконально смысла нет.
Создание робота-инфа
После идём на сайт замечательной компании Наносемантика Ай-яй-яй.
ру, чтобы создать своего робота. Проходим регистрацию, заходим в личный кабинет. В процессе создания робота внешность не имеет никакого значения. Выбираем какого-нибудь «киборга» и идём дальше. После корректного названия осталось только скопировать ID нашего свежеизданного робота в адресной строке.Не стоит забывать этот личный кабинет, здесь можно редактировать ответы вашего робота, когда с ним поговорят. Так же его можно сразу заполнить контентом на различные темы. Конечно, вариант немного детский (а он и создан для детей), но этот вариант не хуже, чем ничего. При токной настройке робот может очень неплохо вам прослужить.
Шаг 2. Выбор оборудования
Я не знаю, где вы будете держать робота: дома ли у себя, или на круглосуточном сервере. Лично у меня робот будет находиться на сервере, поэтому рассматриваю именно этот случай. Что касается домашнего варианта — достаточно установить Python на ваш Windows и проделать относительно те же шаги.
Шаг 3. Кодинг
Небольшое лирическое отступление
Вот тут начинается моё самое любимое… Ах! Как я обожаю кодинг. Там, где я живу, ни один человек не знает о программировании ничего, кроме этого:
Переустанови винду, тыж программист!
Мне не с кем в школе поделиться своими достижениями, поэтому пишу сюда. Надеюсь, что эта публикация позволит мне получить малейший шансик стать не только read, но и write пользователем. Тогда буду делиться с вами разного рода уникальной информацией значительно чаще. Спасибо, что прочитали это.
Код исполняется постоянно. Его работа прекратится только в случай критической ошибки или завершения процесса. Работать над ним можно вечность и сделать в итоге настоящую личность с автопостингом из разных парс-ресурсов. Я этим буду заниматься в дальнейшем. А сейчас выложу рабочую версию.
Есть вся необходимая сила для общения. Если понадобится — можно по примеру дописать реакции и на другие действия. Всё зависит от вашей фантазии.#!/usr/bin/python # coding: utf-8 # необходимые пакеты import base64 import hashlib import json import requests from urllib import urlencode, unquote # ID инфа InfId = "вставьте ID" # access token паблика ВКонтакте AccessToken = "access_token вписываем сюда" # кодовая фраза для iii.ru API (изменять нельзя) Key = "some very-very long string without any non-latin characters due to different string representations inside of variable programming languages" # оперативная память сессий Memory = [] # выключаем ненужные предупреждения от urllib3 requests.packages.urllib3.disable_warnings() # шифратор по технологии поразрядного исключающего ИЛИ # Вход ===== # message - строка для шифрования # key - ключ, который использовался для шифровки # Выход ===== # newmsg - зашифрованная строка def XOR_encrypt(message, key): ml = len(message) kl = len(key) newmsg = u"" for i in range(0, ml): newmsg = newmsg + chr(ord(message[i]) ^ ord(key[i % kl])) return base64. ord(key[i % kl])) return newmsg # инициализатор посетителя # Вход ===== # vkid - ID посетителя ВКонтакте # key - секретный ключ от API iii.ru # botid - ID робота iii.ru # Выход ===== # Строка - ID инициализированной сессии def initme(vkid, key, botid): getuid = requests.get("http://iii.ru/api/2.0/json/Chat.init/%s/%s" % (botid, vkid)) jsonparam = json.loads(base64.b64decode(XOR_decrypt(getuid.text, Key))) return jsonparam["result"]["cuid"] # получаем доступ к longpoll-серверу # Вход ===== # Не требует переменных # Выход ===== # response - словарь, содержащий === # server - сервер для подключения # key - ключ доступа # ts - штамп времени, с которого мы ждём def new_longpoll(): r = requests.get("https://api.vk.com/method/messages.getLongPollServer?use_ssl=1≠ed_pts=0&access_token=%s" % AccessToken) db = json.loads(r.text) return db["response"] # сбрасывает накопленную оперативную память в файл, чтобы не потерять # Вход и выход ===== # Не требует переменных def mem_dump(): f = open("memory. txt", "w") res = "" for m in Memory: res = res + "%s=%s=%s" % (str(m[0]), str(m[1]), str(m[2])) f.close() # Вызываем longpoll в первый раз и записываем данные longpoll = new_longpoll() server_ip = longpoll["server"] server_key = longpoll["key"] server_ts = longpoll["ts"] # инициализируем оперативную и файловую память # если робот "далеко зайдёт" - пишите доп. код на сегменты f = open("memory.txt", "w+") for line in f: try: l = line.split("=") Memory.append(l) except: Memory = [] f.close() # бесконечный цикл while True: # подключаемся к longpoll серверу r = requests.get("https://%s?act=a_check&key=%s&ts=%s&wait=25&mode=2&version=1" % (server_ip, server_key, server_ts)) db = json.loads(r.text) # перезаписываем временной штамп из longpoll отчёта server_ts = db["ts"] # если изменений нет - заново подключаемся к серверу if db["updates"] == 0: continue # иначе листаем все изменения for item in db["updates"]: print(item) # 4 - код нового сообщения от юзеров if item[0] == 4: # получаем vk id и само сообщение msgid = int(item[1]) sender = item[3] message = item[6] # если сообщением является вложением или стикером - игнорируем if message == u'': continue session = None # ищем сессию. если нет - создаём for lst in Memory: if lst[0] == sender: session = lst[1] mgid = lst[2] try: if mgid and mgid == msgid: continue except: mgid = msgid if session is None: session = initme(sender, Key, InfId) Memory.append([sender, session, msgid]) # формируем JSON запрос whattosend = u'["%s","%s"]' % (session, unquote(message)) # ... и зашифровываем hashed = XOR_encrypt(base64.b64encode(whattosend.encode("utf-8")), Key) # отправляем iii.ru headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Referer': 'http://iii.ru/static/Vishnu3.swf?v=3', 'Origin': 'http://iii.ru/' } req = requests.post("http://iii.ru/api/2.0/json/Chat.request", data=hashed, headers=headers) # расшифровываем ответ answer = json. loads(base64.b64decode(XOR_decrypt(req.text, Key))) otvet = answer["result"]["text"]["value"] # отправляем ответ в ВКонтакте r = requests.get(u"https://api.vk.com/method/messages.send?user_id=%s&message=%s&access_token=%s" % (sender, otvet, AccessToken)) # присваиваем ID ответа, чтобы робот не отвечал сам себе for lst in Memory: if lst[0] == sender: lst[2] = int(json.loads(r.text)["response"]) # опять ждём у моря погоды continue # 6 - код прочтения сообщений. продолжаем... # elif item[0] == 6: # continue # 61 - код набора текста. просто ждём... # elif item[0] == 61: # print("User writing message...") # continue
Я значительно повеселился с этим роботом. Вечер удался, хотя и было очень много ошибок. Эта версия выдерживает нескольких гостей одновременно.
И, да, спасибо за внимание.
Свидание с роботом, которого не существует: кейс «Пятницы!» и «ВКонтакте»
14 февраля телеканал Пятница! анонсировал запуск сервиса онлайн-свиданий для одиночек. Пользователям предложили провести день с Цифровым Валентином — это бот «ВКонтакте», с которым можно «пойти» на онлайн-свидание и не переживать за неловкие паузы в разговоре. Бот умеет отвечать на вопросы, использовать эмодзи и переписываться совсем как настоящий человек… потому что это и есть реальный человек.
Инсайт
В цифровом мире свидания проходят в Tinder, а на смену эмоциям пришли эмодзи и свайпы. При этом люди по-прежнему испытывают стеснение даже в онлайн-сервисах для знакомств и страдают от одиночества. «Пятница!» и «ВКонтакте» решили, что 14 февраля — отличный повод, чтобы помочь людям стать более открытыми и напомнить, что бездушные технологии никогда не заменят живого общения.
Идея
Команда проекта пригласила пользователей провести день с Цифровым Валентином. Поговорить с ботом мог любой пользователь «ВКонтакте». Для этого ему нужно было написать «привет» в личные сообщения сообществу «Пятницы!», выбрать пол и возраст, после чего в чате генерировался персональный собеседник.
Через 15 сообщений в диалоге появлялось сообщение: «Всё это время ты переписывался не с ботом, а с реальным человеком! Это ведь было несложно, правда? Не надо стесняться. И помни, что бездушные алгоритмы никогда не заменят живого общения. С днём святого Валентина!»
При взаимном согласии люди могли перейти в личку или продолжить общаться анонимно в чат-боте.
Продвижение
Для промо проекта при медийной поддержке «ВКонтакте» были использованы собственные ресурсы телеканала: соцсети и эфир. Разработку бота взяла на себя команда DevStars, специализирующаяся на создании VK Mini Apps, высоконагруженных чат-ботов и игровых механик.
Результаты
Проект показал очень высокую вовлечённость. В среднем каждый пользователь генерировал по три диалога, то есть проходил путь общения с ботом заново даже после раскрытия интриги. Аудитория отреагировала на розыгрыш положительно. Чаще всего люди смеялись, шутили и обсуждали неожиданность поворота. Около 15% решили продолжить общение в личке. Сколько из них нашли свою половинку — неизвестно.
- 277 тыс. — число запросов боту от пользователей
- 11, 6 тыс. — число уникальных пользователей
- 63% дошли до сообщения про то, что беседа была с реальным человеком
- 15% пользователей обменялись контактами, чтобы продолжить общение
- Три диалога в среднем генерировал каждый пользователь
- 1,7 млн — медийный охват в digital
Состав творческой группы:
«Пятница!»:
Артемий Гладченко — директор по маркетингу
Ирина Храпченкова — креативный digital-стратег
Николай Шамаев — креативный digital-продюсер
«ВКонтакте»:
Наталья Навотная — менеджер по работе с медиапартнёрами
DevStars:
Илья Рыжков — CBDO
Дмитрий Денисов — Head of backend development
Денис Савельев — Head of frontend development
vk-bot · Темы GitHub · GitHub
Вот 251 публичный репозиторий соответствует этой теме.
..пока правдаконец / Vk-to-telegram-трансфер-бот
Звезда 264узел-vk-bot-api / узел-vk-bot-api
Звезда 228fscdev / vkwave
Звезда 213эконда / скелет
Звезда 121Никепан / говкбот
Звезда 41витаволын / узел-vk-bot
Звезда 34ывасыльев / Java-vk-bots-long-poll-api
Звезда 33ПадшийАстарот / вк-боты
Звезда 32димончик0036 / вк-апи
Звезда 29тормозз48 / футбол-чат-бот-2
Звезда 28EnjiRouz / VK-Автоответчик-Бот
ХемульГМ / ВК_API
Звезда 25хлеб-кастейка / вкб
Звезда 24настоящий кулер / VkBotFramework
Звезда 19Джиггии / безмозглый
Звезда 18он110 / средства связи
Звезда 15ягеоргий / botman-vk-сообщество-обратный вызов-драйвер
Звезда 13xpyctum / ВкБот
Звезда 12СмешнойДождь / вкбот
Звезда 12AmadeusCode / VKGroupлайки
Звезда 12Улучшить эту страницу
Добавьте описание, изображение и ссылки на вк-бот страницу темы, чтобы разработчикам было легче узнать о ней.
Курировать эту тему
Добавьте эту тему в свой репозиторий
Чтобы связать ваш репозиторий с вк-бот тему, перейдите на целевую страницу репозитория и выберите «управление темами».
Узнать больше
Российская платформа социальных сетей «ВКонтакте» интегрировала голосовой помощник «Маруся»
Эрик Хэл Шварц
Российская социальная сеть «ВКонтакте» (ВК) включила голосового помощника «Маруся» в свое приложение. И «ВКонтакте», и «Маруся», иногда называемая «Маруся», являются продуктами технологического гиганта Mail.Ru, который утверждает, что голосовой помощник впервые интегрирован с социальной сетью, добавляя голосовые команды и другие функции к своим услугам.
ВК Вог
Маруся дает пользователям приложения ВКонтакте прямой голосовой контроль над приложением для социальных сетей на базе iOS и Android. ВКонтакте — достаточно обширная платформа, поэтому голосовой помощник не ограничивается просмотром профиля друга. Пользователи могут попросить Марусю воспроизвести песни и подкасты или позвонить в дополнение к более привычным параметрам социальных сетей. Роль Маруси в ВК добавляет еще один домен для голосового помощника, у которого уже есть собственное мобильное приложение. Пользователи запрашивают у Marusia информацию, заказывают еду и управляют устройствами умного дома, а также запускают множество сторонних голосовых приложений, работающих через голосового помощника. Соединение потенциально может значительно увеличить использование Маруси. ВК утверждает более 90% россиян, пользующихся интернетом, пользуются хотя бы одной частью экосистемы ВКонтакте каждый день. У Mail.Ru также есть туманные планы относительно дополнительных функций «ВКонтакте» для «Марусии», но они пока не обнародованы.
«Интеграция голосового помощника — важная веха в экосистеме ВКонтакте, поскольку мы делаем ее более многофункциональной и доступной для пользователей», — заявила вице-президент по продуктам экосистемы Mail.Ru Анна Артамонова. «Благодаря голосовым технологиям людям будет проще раскрыть потенциал экосистемы, а общение с Марусей сделает этот опыт более личным. По мере развития Маруси она будет предлагать все больше и больше возможностей».
Социальная Маруся
Интеграция с ВК — новейший эксперимент Mail.Ru с голосовым помощником. В прошлом году компания впервые вышла на рынок интеллектуальных динамиков, сначала самостоятельно с интеллектуальным динамиком Capsule, а затем в партнерстве с производителем смартфонов Prestigio для Prestigio SmartVoice. Движение VK также, вероятно, поможет выделиться на все более конкурентном российском рынке голосового ИИ. Давние конкуренты, такие как Алиса из Яндекса, а также новые игроки, такие как Олег из Тинькофф Банка и Салют из Сбербанка, все борются за то, чтобы выйти на первое место в области разговорного ИИ для страны. Если интеграция с ВКонтакте окажется популярной, Mail.Ru, вероятно, увеличит свои инвестиции в голосовые функции социальных сетей, которые затем могут вдохновить на совершенно новую арену конкуренции в России и за ее пределами.
Подпишитесь на @voicebotai Подпишитесь на @erichschwartz
Mail.Ru сотрудничает с производителем смартфонов Prestigio и выпускает новую умную колонку на русском языке
Российские бренды экспериментируют в Clubhouse с социальным аудио Собеседования и технические шоу
Российский техгигант Mail.Ru представляет капсульную умную колонку
Эрик Хэл Шварц — главный сценарист и продюсер подкастов Voicebot.AI. Эрик был профессиональным писателем и редактором более десятка лет, специализируясь на историях о том, как наука и технологии пересекаются с бизнесом и обществом.