Перейти к основному содержимому

Как отправить сообщение в ВКонтакте

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

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

Также вы можете настроить отправку сообщения:

предупреждение
Обратите внимание: бот может отправить сообщение только тем пользователям, которые ранее писали боту

Создайте сценарий

Для начала создадим сценарий, который будет собирать данные у клиента. Начнем с определения канала. Это может быть полезно, если ваш сценарий будет опубликован на нескольких каналах. Добавьте блок Условия и пропишите в нем: $channelType == "vk"

В данной статье мы будем создавать сценарий специально для бота, который будет общаться с пользователями в ВКонтакте. Инструкцию для определения других каналов смотрите здесь. Создайте связь от else и напишите:

Данный сценарий следует тестировать в ВКонтакте. Пожалуйста, подключите канал ВКонтакте и беседуйте с ботом в ВКонтакте.

Оставим это сообщение на случай, если вы забудете, где нужно тестировать бота.

Подключите канал ВКонтакте

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

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

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

Добавьте экран приветствия

Добавьте экран приветствия. Свяжите вариант условий $channelType == "vk" с блоком Текст, в котором напишите:

Здравствуйте, $request.userFrom.firstName! Я помогу вам оставить заявку на оказание наших услуг. С ценами и акциями вы можете ознакомиться по данной ссылке: (ссылка)

С помощью переменной $request получаем имя клиента из его профиля ВКонтакте (переменная также работает в Aimylogic).

Добавьте на экран приветствия блок Переход:

Уточним вид услуги.

Для этого свяжем блок Переход с блоком text to $var: Какой вид услуги вам требуется? Пожалуйста, опишите одним сообщением.

Имя переменной: $service

Блок text to $var может принимать абсолютно любой текст, так что прописывать множество разных интентов для принятия вида услуги не нужно.

Запросите комментарий

Чтобы получить дополнительную информацию от пользователя, свяжите блок Переход после ввода $service с еще одним блоком text to $var с содержанием:

Если у вас есть какие-либо дополнительные комментарии или пожелания, пожалуйста, оставьте их сейчас одним сообщением.

Имя переменной: $comment

Запросите телефонный номер

Для запроса номера телефона свяжите блок Переход после ввода $comment с блоком Текст: Укажите, пожалуйста, ваш телефон для связи.

Добавьте блок Интенты на экран с текстом Укажите, пожалуйста, ваш телефон для связи. Выберите готовый интент Телефон.

Свяжите вариант Любая другая фраза с блоком Текст: Пожалуйста, напишите российский мобильный телефон в формате +79111112233.

Добавьте блок Переход на экран с текстом Пожалуйста, напишите российский мобильный телефон в формате +79111112233.

Свяжите блок Переход с экраном Укажите, пожалуйста, ваш телефон для связи..

Оформим сообщение. Для этого от интента Телефон сделайте связь с блоком Условие.

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

В блок Условие нужно скопировать и вставить следующее:

$text = «Получен новый заказ!» + «\n» + «Ссылка на профиль клиента: " + «https://vk.com/id» + $rawRequest.object.message.from_id + «\n» + «Телефон: " + $PHONE + «\n» + «Вид услуги: " + $service + «\n» + «Комментарий: " + $comment, $num = _.random(1, 9223372036854775808)

Что это означает?

  • Мы создали переменную $text, в которую поместили перечисленные элементы.
  • Мы используем сложение строк (строка — это название типа данных в языке программирования JavaScript). То есть по сути мы складываем значения переменных, которые получили в ходе сценария, с текстом, который будет пояснять их значение.
  • Также мы используем переменную $rawRequest.object.message.from_id, которая будет содержать значение id страницы пользователя.
  • И добавляем переносы строк с помощью знака \n.
  • После присвоения значения переменной $text, мы ставим запятую, пробел и создаем переменную $num.
  • Этой переменной мы присваиваем случайное значение от 1 до 9223372036854775808 с помощью метода _.random. Этот параметр нужен для идентификации сообщения при отправке в ВКонтакте.
  • Если вы используете в сценарии другие переменные, то измените, соответственно, и текст условия в соответствии с вашим сценарием.

Напоминаем, что бот может отправлять сообщения только тем пользователям, с которыми он уже общался. Поэтому, чтобы менеджер, который обрабатывает заявки пользователей, мог получать сообщения, он должен для начала написать любое сообщение самому сообществу.

Оформите HTTP-запрос

От блока Условие создайте связь с блоком HTTP-запрос.

  • метод POST
  • в BODY скопируйте и вставьте: {"response": 484045}

Вкладки RESPONSE и HEADERS заполнять не нужно. Составим URL запроса. Он будет выглядеть так:

https://api.vk.com/method/messages.send?user_id=<реальные цифры ID>&random_id=${num}&message=${text}&access_token=<токен сообщества>&v=5.199

Разберем его по частям.

  • messages.send — это метод API ВКонтакте, который отправляет сообщение
  • user_id= — это значение ID страницы ВКонтакте, которое можно увидеть на https://id.vk.com/account/#/personal
    • ID пользователя указано в адресной строке страницы ВКонтакте
    • Как получить ID, если ID пользователя изменено на буквенно-цифровое, описано здесь
  • random_id — параметр для отправки сообщения в ВКонтакте. В качестве случайного числа мы указываем значение переменной $num. Для этого пишем random_id=${num}message — это сам текст сообщения. Здесь мы указываем содержание переменной $text. Мы создали ее ранее в блоке Условие. Чтобы вытащить ее значение, пишем message=${text}
  • access_token= здесь нужно указать токен доступа к сообществу. Его вы можете запросить в настройках группы согласно данной инструкции. Или просто используйте токен, который вы получили на этапе публикации бота Aimylogic ВКонтакте
  • v= — версия протокола API.
подсказка
Актуальную версию протокола API ВКонтакте можно проверить по ссылке

После оформления HTTP-запроса сохраните блок. Затем соедините вариант «Завершен успешно» с сообщением Спасибо, ваша заявка отправлена! В ближайшее время с вами свяжется менеджер.

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

Вариант «Завершен с ошибкой» соедините с сообщением Что-то пошло не так. Ошибка $httpStatus. Не страшно! Менеджер читает диалоги с ботом, так что мы свяжемся с вами.

На этот экран вы также можете добавить интенты для обработки сообщений, которые клиент может написать на этом этапе.

Вот и все, готово!

Теперь клиент может пообщаться с ботом и оставить свои контакты. А менеджер получит сообщение с данными клиента.

Не забудьте протестировать сценарий, отправив сообщение в сообщество ВКонтакте.