Чат-боты для Вконтакте
В рамках нескольких последних проектов мы сталкивались с задачей настроить для заказчика чат бот ВК. Почти у всех компаний сейчас есть странички, группы или сообщества пользователей в соцсетях – это обычная и популярная практика. Многие клиенты уже настолько к этому привыкли, что для решения любых вопросов им проще написать компании во Вконтакте, нежели искать ее сайт. Практика показывает, что такие клиентские вопросы по большей части повторяются или однотипны, а потому с ними вполне успешно справятся боты для бесед в ВК.
Создание чат бота для Vkontakte, по нашим представлениям, должно было помогать клиентам со следующими задачами:
- быстрые ответы на самые популярные вопросы от клиентов должен был взять на себя бот, который отвечает на сообщения ВКонтакте. В том числе предполагалось, что он сможет отправлять изображения и видео, предлагать на выбор товары или услуги
- автоматическое оформление заказов для компаний, у которых большой поток заказов и все они более-менее однотипны – заказ еды, такси, курьерские службы
- чат бот для страницы Vk должен заменять собой операторов первой линии техподдержки – предлагать пользователю решения типовых проблем (например, когда забыли пароль к сервису) или фиксировать информацию об обращении и передавать ее техническому специалисту
- использование ботов для рассылки Вконтакте сообщений, ответов на вопросы — делать массовые рассылки для подписчиков страницы
Как выбрать онлайн бот Вконтакте
От идеи создания ботов Вконтакте самостоятельно мы отказались сразу, посчитав, что намного быстрее будет купить чат-бота или скачать бот и настроить уже готовое решение. К счастью, это направление сейчас более чем популярно, вариантов для выбора много, так что была большая вероятность, что кто-нибудь уже реализовал все те функции, которые нам требовались от чат-бота.
Как сделать чат-бота для ВК
Стоит отдельно упомянуть, что нам важен был не только функционал чат бота — создать бота в ВК, отвечающего на сообщения, довольно-таки несложно. Однако нас больше волновало удобство именно для корпоративного клиента, поэтому в конечном итоге мы и остановили свой выбор на сервисе Chat Helpdesk. Его преимущества:
- возможность интеграции с CRM-системой или по меньшей мере выгрузка в Excel, чтобы информация о контактах с клиентами фиксировалась, велась история контактов;
- возможность создать рабочие места операторов и переключиться на оператора, на случай, если необходимо будет живое общение с клиентом;
- круглосуточная техподдержка со стороны разработчика бота, которая расскажет, как подключить и настроить чат бот для ВК, Telegram, WhatsApp, поможет в случае любых вопросов по его работе;
ЧАТ БОТ НА PYTHON ДЛЯ БЕСЕДЫ ВКОНТАКТЕ
- сбор статистики по клиентским обращениям;
- вся переписка с клиентами из разных мессенджеров и социальных сетей (а мы в дальнейшем не собирались ограничиваться только сетью Вконтакте) собрана в едином интерфейсе.
Пробный период показал, что этот сервис соответствует всем нашим запросам, поэтому мы подключили его на сайте клиента и на странице Вконтакте. Сейчас он успешно работает, заменяя собой небольшой колл-центр.
Источник: integrus.ru
VKCOM/bot-example-php
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
15da224 Mar 7, 2018
fixed index.php link
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
Feb 7, 2018
Feb 7, 2018
Mar 7, 2018
README.md
Пример простого бота для ВКонтакте на PHP. Обработка событий с использованием Callback API, голосовые сообщения с помощью Яндекс SpeechKit.
Сообщество бота: https://vk.com/botexample. Бот отправляет в ответ на любое сообщение картинку и голосовое сообщение с именем собеседника.
Подготовка к использованию
Укажите свои данные в config.php. Ключ доступа к API и код подтверждения для Callback API Вы можете получить в настройках сообщества. Подробнее о получении ключа доступа для Яндекс SpeechKit можно прочитать здесь.
Обработка событий Callback API. В нашем примере обрабатываются два события:
- confirmation — уведомление для подтверждения адреса сервера;
- new_message — уведомление о входящем сообщении.
Подробную информацию о типах событий и формате уведомлений Вы найдёте в документации ВК API.
Отправка сообщений с вложениями.
Функции для работы с методами API ВКонтакте
Функции для работы с API Яндекс SpeechKit для генерация голосовых сообщений.
Источник: github.com
Создаем чат бота с командами
В одной из прошлых статей мы создавали простой скрипт для переписки. Были рассмотрены базовые возможности. На этот раз мы напишем чат-бот с командами. Реализуем такие команды:
- город [название города]. Данной командой задается город собеседника, бот запомнит его, сохранит в файл. Эти данные будут доступны даже после перезапуска программы.
- погода. Бот отправляет текущую температуру в городе собеседника.
- пробки. Бот получает скриншот Яндекс.Карт с состоянием пробок и отправляет картинку.
- события. Бот отправляет список событий в городе собеседника.
- пришли наemail [email]. Бот сохраняет email собеседника в файл.
Город
Город собеседника мы будем хранить в текстовом файле. Для каждого скрипта создается отдельная папка в которой он может хранить произвольные файлы, которые будут переживать перезапуск программы. Папка будет создана рядом со скриптом. Рассмотрим фрагмент кода по обработке команды город.
var cityFile = profile + «__» + contact; if (content.startsWith(«город «))
В переменную cityFile мы сохраняем имя файла. Далее с помощью вызова метода tools.writeToFile(file, data) мы сохраняем город в файл. Обратите внимание, что функцией writeToFile пользоваться небезопасно в случае если несколько анкет выполняют один и тот же скрипт и обращаются к одному и тому же файлу. Поэтому мы используем id анкеты в имени файла, чтобы исключить такие конфликты.
Для чтения из файла используется метод tools.readFromFile(file). Данная функция читает весь файл и возвращает содержимое. Если файла не существует, функция возвращает пустую строку.
var city = tools.readFromFile(cityFile); if (city.isEmpty())
Выбор имени файла
Мы используем текстовый файл для хранения города собеседника. Как уже было замечено, имя файла нужно выбирать аккуратно. Так, чтобы несколько анкет не обращались к одному и тому же файлу.
var profile = hist.localContact().getID().toString(); var contact = hist.externalContact().getID().toString(); var cityFile = profile + «__» + contact;
Здесь мы получаем данные об анкете в боте через метод hist.localContact(). Далее методом getID() получаем внутренний идентификатор анкеты (выглядит примерно так profile_www.vk.com_+79129192508). Аналогично получаем идентификатор собеседника (id361493719). В результате в переменной cityFile получаем profile_www.vk.com_+79129192508__id361493719.
Поскольку имя содержит идентификатор анкеты, добавленной в бот, другая анкета не сможет сгенерировать такое же имя файла и конфликтов не будет.
Погода
Для получения данных о погоде воспользуемся сервисом openweathermap.org. Нужно зарегистрироваться и получить бесплатный ключ для доступа к API. Далее отправить HTTP-запрос с названием города и получить в ответ JSON с данными.
function getWeather(city, tools) < city = city.replace(» «, «%20»); var apiKey = «43599b515694631087a103907284116d»; var url = «http://api.openweathermap.org/data/2.5/weather?q=» + city + » + apiKey + «; return JSON.parse(tools.httpGet(url)); >
Для выполнения HTTP-запроса используем метод tools.httpGet(url). Метод возвращает тело HTTP-ответа. Обратите внимание, что пробелы в названии города мы заменяем на специальный код.
Пробки
Получать данные о пробках будет с Яндекс.Карт также через выполнение HTTP-запроса.
function getTraffic(city, file, log, tools) < log.info(«Getting coordinates for city » + city); city = city.replace(» «, «%20»); var url = «https://geocode-maps.yandex.ru/1.x/?geocode=» + city + «; var resp = JSON.parse(tools.httpGet(url)); var coord = resp[«response»][«GeoObjectCollection»][«featureMember»][0][«GeoObject»][«Point»][«pos»].replace(» «, «,»); log.info(«Coordinates are: » + coord + «, getting traffic pic»); var url = «https://static-maps.yandex.ru/1.x/?ll=» + coord + «l=map,trf»; return tools.download(url, file); >
Сервис Яндекс.Карт возвращает данные о пробках по географической координате.
У нас же есть только строковое название города. Поэтому сначала мы отправляем HTTP-запрос на получение данных о городе на другой сервис. Среди прочего в ответе есть данные о координате. Координату используем для другого HTTP-запроса. Обратите внимание, что для получения картинки с пробками мы используем метод tools.download(url, file).
Этот метод также выполняет HTTP GET запрос, но сохраняет бинарный результат в файл. Метод получает URL и имя файла для сохранения ответа. Обратите внимание, что в имени файла должно быть только имя, без путей. Метод возвращает полный путь к этому файлу.
События
Для получения событий в конкретном городе воспользуемся API timepad.ru.
function getEvents(city, tools) < city = city.replace(» «, «%20»); var url = «https://api.timepad.ru/v1/events.json?limit=10cities=» + city + «sort=+starts_at»; return JSON.parse(tools.httpGet(url)); >
Пришли на email
Воспользуемся методом tools.appendToFile(file, line). Метод добавляет строку line в файл file (только имя файла, без путей). Данный метод является безопасным для использования из нескольких анкет с одним и тем же именем файла.
Таким образом удобно собирать какие-то сообщения или фрагменты сообщений от пользователей в одном файле. В данном скрипте мы будем собирать email адреса пользователей.
if (content.startsWith(«пришли на email «))
Весь скрипт
Приведем весь код скрипта.
function getTemplates() < return []; >function getWeather(city, tools) < city = city.replace(» «, «%20»); var apiKey = «43599b515694631087a103907284116d»; var url = «http://api.openweathermap.org/data/2.5/weather?q=» + city + » + apiKey + «; return JSON.parse(tools.httpGet(url)); >function getTraffic(city, file, log, tools) < log.info(«Getting coordinates for city » + city); city = city.replace(» «, «%20»); var url = «https://geocode-maps.yandex.ru/1.x/?geocode=» + city + «; var resp = JSON.parse(tools.httpGet(url)); var coord = resp[«response»][«GeoObjectCollection»][«featureMember»][0][«GeoObject»][«Point»][«pos»].replace(» «, «,»); log.info(«Coordinates are: » + coord + «, getting traffic pic»); var url = «https://static-maps.yandex.ru/1.x/?ll=» + coord + «l=map,trf»; return tools.download(url, file); >function getEvents(city, tools) < city = city.replace(» «, «%20»); var url = «https://api.timepad.ru/v1/events.json?limit=10cities=» + city + «sort=+starts_at»; return JSON.parse(tools.httpGet(url)); >function handle(content, profile, contact, log, tools) < log.info(«Got message: » + content + » from » + contact + » to » + profile); var cityFile = profile + «__» + contact; if (content.startsWith(«город «)) < var city = content.substring(6); log.info(«Saving city for contact » + contact); tools.writeToFile(cityFile, city); return «Теперь я знаю твой город.»; >else if (content.startsWith(«погода»)) < var city = tools.readFromFile(cityFile); if (city.isEmpty()) < return «Я не знаю твой город :(«; >log.info(«Getting weather for city » + city); var weather = getWeather(city, tools); return «Температура: » + weather[«main»][«temp»]; > else if (content.startsWith(«пробки»)) < var city = tools.readFromFile(cityFile); if (city.isEmpty()) < return «Я не знаю твой город :(«; >var trafficFile = profile + «__» + contact + «.png»; var fullFileName = getTraffic(city, trafficFile, log, tools); return «такие пробки [image:» + fullFileName + «]»; > else if (content.startsWith(«пришли на email «)) < var email = content.substring(16); tools.appendToFile(«emails», email); return «Спасибо! Я напишу.»; >else if (content.equals(«события»)) < var city = tools.readFromFile(cityFile); if (city.isEmpty()) < return «Я не знаю твой город :(«; >log.info(«Getting events for city » + city); var events = getEvents(city, tools)[«values»]; log.info(«Got » + events.length + » events»); var result = «»; for (var i = 0; i < events.length; ++i) < var dateTime = events[i][«starts_at»]; var dateTimeStr = dateTime.substring(0, 10) + » » + dateTime.substring(11, 17); var name = events[i][«name»]; result += (i + 1) + «. » + dateTimeStr + » » + name + «n»; >return result; > return «»; > function getAnswer(hist, log, tools) < var profile = hist.localContact().getID().toString(); var contact = hist.externalContact().getID().toString(); var toReply = hist.unansweredMessages(); var result = «»; for(var i = 0; i < toReply.size() ; ++i) < var message = toReply.get(i); var content = message.content().toLowerCase(); var dup = false; for(var j = 0; j < i !dup; ++j) < dup = content.equals(toReply.get(j).content().toLowerCase()); >if (!dup) < result += handle(content, profile, contact, log, tools) + » «; >> return result; >
Пример работы
Что еще можно получить из истории
Из истории переписки в скрипте можно получить некоторую дополнительную информацию об анкете и собеседнике. А именно:
hist.localContact().getLogin() | логин анкеты в боте |
hist.localContact().getPassword() | пароль анкеты в боте |
hist.localContact().getHomePageUrl() | ссылка на анкету в боте (например, https://vk.com/id381559011) |
hist.localContact().getProxy() | прокси анкеты в боте или пустая строка, если прокси не задан |
hist.localContact().getUserAgent() | User-Agent анкеты в боте |
hist.externalContact().getAlias() | имя собеседника (например, Иван Иванов) |
Хотите получить БроБот бесплатно?
Присылайте нам кейсы своих успешных проектов с БроБотом, мы опубликуем его в историях успехов и мы поделимся с Вами безлимитным тарифом!
Поиск по статьям
База знаний
Мы написали очень подробное описание всех страниц бота. Стараемся для наших Бро)
Статистика
- Установок бота: 1900420 раз
- Комментариев на сайте: 4476
- БроБот работает 11.5 лет
Быстрый старт в smm.
- С чего начать?
- Частые ошибки новичков
- Какие аккаунты покупать?
- Как использовать прокси?
- Ограничения соц сетей
- Как использовать шаблоны?
- Как использовать iii?
- Как установить бота на сервер?
Источник: brobot.ru
Конструктор чат-ботов для ВКонтакте
Бот ВКонтакте – это чат-бот (виртуальный собеседник), который ведет диалог с пользователем от имени страницы ВКонтакте.
Напишите номер телефона и мы дадим попробовать бесплатно
Визуальный редактор кнопок
Легко и просто создавать кнопки, перемещать их курсором.
Работайте с клиентами в удобной CRM-системе
Встроенная в платформу CRM или интеграция с amoCRM, Битрикс24, Google Таблицы, Клиентская База, САМО-турагент.
Принимайте оплату прямо в боте
После совершения покупки бот может автоматически отправить сообщение с приватной информацией.
Поддерживаем платежные системы: ЮKassa, ЮMoney, Cloudpayments, Robokassa, LiqPay и другие по запросу.
Авторассылки
Легко сегментировать аудиторию и рассылать необходимый контент.
Отправляйте не просто текст или мультимедиа, а целые сценарии с возможностью взаимодействия подписчика с ботом после получения рассылки.
A/B тестирование
Отслеживайте эффективность рекламного трафика, а также тестируйте конверсии сценариев вашего бота ВКонтакте.
Встроенный мессенджер
Переписывайтесь с клиентами ВКонтакте прямо из личного кабинета.
Аналитика переходов
Отслеживайте аналитику перемещений в боте.
Сферы где уже работают чат боты
Авто бизнес
- Автосалоны
- Автошколы
- Автосервисы
- Грузоперевозки
- Продажа автомобилей
- Продажа автозапчастей
Продажа товаров и услуг
- Магазин одежды
- Юридические услуги
- Продажа оборудования
- Клининговые компании
- Медицинские центры
- Доставка еды
- Салоны красоты
- Инфобизнес
- Типография
- Продажа франшизы
- Рекламные агентства
И многое другое
- Дизайн и ремонт квартир
- Натяжные потолки
- Монтажные работы
- Пластиковые окна
- Интеграция CRM
- Курсы иностранных языков
- Консалтинг
Источник: watbot.ru