Как настроить бота вконтакте чтобы он отправлял личные сообщения

Как настроить бота вконтакте чтобы он отправлял личные сообщения

Чат-бот общается с пользователями с помощью сообщений сообщества. Вы можете отправлять в сообщениях любые вложения, будь то фотографии, аудиозаписи или видео, документы, аудиосообщения, ссылки.

Сообщения отправляются с помощью запросов к API ВКонтакте. Здесь Вы можете узнать о том, как работают такие запросы.

Для отправки сообщения используйте метод messages.send. Обратите внимание, что с ключом доступа сообщества можно совершать до 20 запросов в секунду. Вы можете сократить число запросов к API, если группировать сообщения с одинаковым текстом (параметр message) для разных получателей — для этого перечислите идентификаторы получателей (до 100) в параметре user_ids. Кроме того, Вы можете группировать вызовы любых методов API, включая messages.send, с помощью execute — до 25 вызовов в одном запросе.

Используйте параметр random_id(int64), чтобы избежать повторной отправки сообщения одному и тому же получателю. Этот параметр должен быть всегда уникальным, поэтому используйте большие случайные числа.

В ответе метод вернёт Вашему серверу id отправленного сообщения или ошибку. Если Вы используете Callback API, в случае удачной отправки будет сгенерировано событие message_reply.

Если Вы хотите обращаться к разным методам API, будет удобнее использовать одну общую функцию для вызова любого метода.

//Функция для вызова произвольного метода API
function _vkApi_call($method, $params = array()) <
$params[‘access_token’] = VK_API_ACCESS_TOKEN;
$params[‘v’] = VK_API_VERSION;
$url = VK_API_ENDPOINT.$method.’?’.http_build_query($params);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($curl);
curl_close($curl);
$response = json_decode($json, true);
return $response[‘response’];
>

Читайте также:  Как отремонтировать утюг для волос

//Функция для вызова messages.send
function vkApi_messagesSend($peer_id, $message, $attachments = array()) <
return _vkApi_call(‘messages.send’, array(
‘peer_id’ => $peer_id,
‘message’ => $message,
‘attachment’ => implode(‘,’, $attachments)
));
>

vkApi_messagesSend(494075, ‘Hello world!’);

Параметр conversation_message_id позволяет взаимодействовать боту с сообщениями без использования общего id сообщения, который может отсутствовать в некоторых случаях.
С помощью метода messages.getByConversationMessageId можно получить информацию о сообщении по conversation_message_id. У бота должен быть доступ к переписке.

Обратите внимание бот имеет доступ к следующим сообщениям:

  • находящиеся в личном диалоге с ботом;
  • являющиеся исходящими сообщениями бота;
  • написанными после того, как бот вступил в беседу и появился доступ к сообщениям. Доступ к сообщениям есть в случаях, когда:
    • бота упомянули в сообщении;
    • сообщение начинается с «/»;
    • боту выдали права на просмотр всех сообщений.

Вы можете использовать публичные объекты, которые уже были загружены ВКонтакте (прислать фотографию со стены своего сообщества или видеозапись из поиска), или загрузить новое вложение.

Есть несколько способов загрузки изображений. Если Вы хотите отправить одно и то же изображение сразу многим собеседникам, например, если делаете рассылку, используйте один из следующих способов:

  • Предварительно загрузите изображение в публичный альбом того же сообщества, и используйте в attachment идентификатор этой фотографии.
  • Загрузите изображение с помощью photos.getMessagesUploadServer без указания peer_id, а затем действуйте по этой схеме — изображение будет загружено в скрытый альбом группы.

Если вы не планируете рассылку и хотите загрузить и отправить изображение определенному пользователю — используйте метод photos.getMessagesUploadServer с идентификатором получателя, а затем действуйте по этой схеме.

Обратите внимание, что после загрузки owner_id фотографии будет равен переданному peer_id, это правильное поведение. Для таких загрузок нет лимита, Вы можете загружать подобным способом фотографии для неограниченного числа пользователей.

Стоит иметь в виду, что каждый раз при указании в attachment фотографии не из сообщества, изображение загружается повторно от имени сообщества. Для таких загрузок существует лимит, стоит рассчитывать не более чем на 7 тысяч загрузок в сутки.

function vkApi_photosGetMessagesUploadServer($peer_id) <
return _vkApi_call('photos.getMessagesUploadServer', array(
'peer_id' => $peer_id,
));
>

function vkApi_photosSaveMessagesPhoto($photo, $server, $hash) <
return _vkApi_call('photos.saveMessagesPhoto', array(
'photo' => $photo,
'server' => $server,
'hash' => $hash,
));
>

function vkApi_upload($url, $file_name) <
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array('file' => new CURLfile($file_name)));
$json = curl_exec($curl);
curl_close($curl);
return json_decode($json, true);
>

//Загрузка фотографии в сообщение от бота
function uploadPhoto($user_id, $file_name) <
$upload_server_response = vkApi_photosGetMessagesUploadServer($user_id);
$upload_response = vkApi_upload($upload_server_response['upload_url'], $file_name);
$save_response = vkApi_photosSaveMessagesPhoto($upload_response['photo'], $upload_response['server'], $upload_response['hash']);
return array_pop($save_response);
>

Чтобы загрузить новый документ для отправки, используйте метод docs.getMessagesUploadServer с id получателя в параметре peer_id, а затем действуйте по этой схеме.

Обратите внимание, что после загрузки owner_id документа будет равен переданному peer_id. Такое поведение правильное, это нужно для того, чтобы Ваш бот мог загружать новые документы для неограниченного числа пользователей.

function vkApi_docsGetMessagesUploadServer($peer_id, $type) <
return _vkApi_call('docs.getMessagesUploadServer', array(
'peer_id' => $peer_id,
'type' => $type,
));
>

function vkApi_docsSave($file, $title) <
return _vkApi_call('docs.save', array(
'file' => $file,
'title' => $title,
));
>

//Загрузка голосового сообщения от бота
function uploadVoiceMessage($user_id, $file_name) <
$upload_server_response = vkApi_docsGetMessagesUploadServer($user_id, 'audio_message');
$upload_response = vkApi_upload($upload_server_response['upload_url'], $file_name);
$save_response = vkApi_docsSave($upload_response['file'], 'Voice message');
return array_pop($save_response);
>

Источник

Как написать чат-бота для vk.com за 3 минуты

К сожалению, на данный момент нет хороших библиотек на Python2, для того, чтобы быстро создать чат-бота. Ниже я покажу, как легко можно написать примитивного чат бота для VK, используя API VK.

Статья написана для новичков, чтобы показать, что ничего сложного в написании ботов на Python нет.

Авторизация

Нам понадобится библиотека vk_api. Авторизоваться в вк можно двумя способами:
— Как пользователь
— Как сообщество

В первом случае надо будет ввести логин и пароль. Во втором случае в группе надо включить "Сообщения сообщества" и создать ключ доступа к API:

Авторизация в две строчки:

Отправка сообщений

Теперь напишем короткую функцию, которая отправляет сообщение выбранному человеку.

P.S. Сообщество может отправлять сообщения только ранее писавшим пользователям.

В vk.method мы можем вызывать любой метод из VK API и передавать параметры в виде словаря.

В данном случае мы вызываем метод messages.send и в качестве параметров передаем id пользователя и текст сообщения.

Прием сообщений

Отлично! Отправлять сообщения мы научились, осталось научиться их принимать. Для этого нам нужен метод messages.get.

Несколько параметров, на которые стоит обратить внимание:

1) out — если этот параметр равен 1, сервер вернет исходящие сообщения.
2) count — количество сообщений, которое необходимо получить.
3) time_offset — максимальное время, прошедшее с момента отправки сообщения до текущего момента в секундах.
4) last_message_id — идентификатор сообщения, полученного перед тем, которое нужно вернуть последним (при условии, что после него было получено не более count сообщений)

В нашем случае этот метод вернет все полученные сообщения за последние 60 сек, если их конечно было меньше 100, а если больше, то последние 100.

В итоге мы получаем список items:

Если объяснять простыми словами, то items — это то, что можно выделить в диалоге.

Финальный аккорд, делаем вечный цикл, где на каждое сообщение будем отвечать "Привет, Хабр!".

Источник

Как создать бота ВКонтакте: гайд для старта на платформе

Автоматизируем рутинные процессы с помощью платформы ботов VK — подборка материалов для разработчиков

Привет! Меня зовут Семён, я деврел платформы ботов ВКонтакте. Расскажу о том, как с ней работать, какие есть возможности и перспективы для разработчиков. В этой статье вы найдёте краткий пошаговый мануал: от поиска идеи для вашего чат-бота до проектирования его бизнес-возможностей. К каждому этапу будут ссылки на полезные материалы и источники, где можно узнать больше и погрузиться в технологию.

Статья будет дополняться по мере развития платформы — свежими ссылками на документацию, обзорами и интересными кейсами.

Начинаем с идеи

Первый шаг при создании бота — продумать идею и сценарии использования. Для этого полезно уже на старте знать, что умеет платформа. Вариантов масса:

автоматизация вашей службы поддержки;

помощь в работе бизнеса (оформление заказов и доставки в вашем магазине, общение с клиентами);

внедрение социальных механик (знакомства, поиск единомышленников, опросы);

рекламные проекты или, например, текстовые квесты.

Чем больше нюансов вы учтёте до того, как погрузитесь в написание бота, тем проще будет в реализации. Здесь нет исключений и неважных мелочей: подумайте над целями, потенциальной аудиторией, продвижением, разными сценариями — всё это упростит и ускорит работу в дальнейшем.

Готовим сообщество для бота

Сообщество — это точка входа для пользователей, которые будут общаться с вашим ботом. Если у вас уже есть такая страница, проверьте, включены ли сообщения («Управление сообществом» → «Сообщения»). Так пользователи смогут писать боту, когда он будет готов.

Если сообщества ещё нет, его нужно создать.

Как открыть сообщество ВКонтакте — подробная инструкция по всем шагам запуска и возможностям сообществ.

Выбираем сценарий для получения обновлений

Чтобы реагировать на какие-либо события, ваш скрипт бота должен о них узнать. Для этого существуют два подхода — Callback API и Long Poll.

Как начать использовать Callback API

Подключите свой сервер в настройках сообщества («Управление сообществом» → «Настройки» → «Работа с API»). А затем выберите типы событий, данные о которых требуется получать: например, новые комментарии и фотографии.

Документация Callback API — подробно о подключении, удалении сервера, настройках через API, типах событий, поддержке в SDK + пример использования.

Long Poll API

Этот подход позволяет работать с событиями из вашего сообщества в режиме реального времени. В отличие от Callback API, очередь из событий хранится на стороне ВКонтакте — мы не будем присылать отдельное уведомление для каждого события. Чтобы использовать Bots Long Poll API, откройте раздел «Управление сообществом», на вкладке «Работа с API» перейдите к «Long Poll API» и выберите «Включён».

Документация Long Poll API — инструкция по подключению, настройке через API, информация о формате данных и ошибках, а также поддержке в SDK.

Изучаем стартовую документацию и правила платформы

Правила платформы — обязательные требования к функциональности и сценарию бота;

Знакомство с API ВКонтакте — если вы ещё не работали с нашим сервисом API, узнайте, с чего начать;

ВКонтакте API — сообщество с актуальной информацией об обновлениях и дополнениях API.

Получаем ключ доступа

Ключ доступа потребуется для получения обновлений в Long Poll, а также для работы с API. Вы можете сгенерировать несколько ключей с разными правами доступа. Важно помнить, что ключи нельзя размещать публично. Для получения ключа требуется лишь открыть раздел «Управление сообществом» (или «Управление страницей», если у вас публичная страница), выбрать вкладку «Работа с API» и нажать «Создать ключ доступа».

Получить ключ доступа можно, используя Authorization Code Flow — двухэтапный вариант с дополнительной аутентификацией вашего сервера.

Документация Authorization Code Flow — всё о запросе списка администрируемых сообществ, открытии диалога авторизации, правах доступа, получении code и access_token.

Если вы хотите, чтобы пользователи могли добавлять бота в беседу, требуется выдать необходимые права. Перейдите в «Управление сообществом» → «Сообщения» → «Настройки для бота» и поставьте галочку в пункте «Разрешать добавлять сообщество в беседы». После этого в сообществе появится кнопка «Пригласить в беседу», открывающая модальное окно со списком чатов.

Сейчас боты поддерживают три уровня доступа: только упоминание, доступ ко всей переписке и доступ уровня администратора. Подробнее о различиях в доступах можно узнать в документации о добавлении ботов в беседы.

Переходим к возможностям

Чат-бот общается с пользователями с помощью сообщений сообщества. Для их отправки применяется метод messages.send. Вы можете использовать любые вложения: фотографии, аудиозаписи или видео, документы, голосовые, ссылки. Сообщения отправляются с помощью запросов к API ВКонтакте.

Сообщения от бота. API для чат-ботов, часть 2 — подробная инструкция по работе с сообщениями бота, вложениями, пользовательским контентом и другими возможностями.

Следующий шаг — подключение клавиатуры. Чтобы запустить её в сообществе, перейдите в «Управление сообществом» → «Сообщения» → «Настройки для бота» и включите «Возможности ботов». Там же можно добавить кнопку «Начать».

Боты могут отправлять специальные сообщения, используя шаблоны. Такие сообщения отличаются от обычных и внешним видом, и функциональностью. Сейчас поддерживается один шаблон — карусель. В нём несколько элементов, которые можно скроллить горизонтально.

Карусели. API для чат-ботов, часть 4 — всё об этом шаблоне сообщений, их отправке, структуре элементов и обратной совместимости.

Выбираем функции для бизнеса

Рекламный API позволяет с помощью бота отправлять пользователям промосообщения. Их важно помечать визуально и в программном интерфейсе. Чтобы получить доступ к рекламному API, бот должен соответствовать критериям платформы и пройти модерацию ВКонтакте.

Правила монетизации ботов — о способах заработка с чат-ботами (платной подписке, предложении получать рекламную рассылку), а также критериях модерации для доступа к рекламному API.

После успешной модерации бот сможет отправлять своим собеседникам рекламные сообщения. В диалоге с таким ботом пользователь увидит предупреждение об этом.

Если вы не разработчик, но хотите обзавестись чат-ботом для своего бизнеса или любого другого проекта — это тоже возможно. Например, пригодятся сервисы-конструкторы: они помогают создать бота под ваши задачи и предлагают простой, удобный интерфейс для работы. А если функциональности конструктора будет недостаточно, всегда есть услуги аутсорс-разработчиков. Проверенные команды специалистов и конструкторы ботов можно найти на платформе «Бизнес ВКонтакте» — в разделе «Эксперты и сервисы».

Источник

Оцените статью