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

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

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

При желании, в дальнейшем вы можете настроить данный сценарий так, что бот будет опубликован во всех ваших каналах, например в 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.ru/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.ru/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.ru/account/#/personal
    • ID пользователя указано в адресной строке страницы ВКонтакте
    • Как получить ID, если ID пользователя изменено на буквенно-цифровое, описано здесь
  • random_id — параметр для отправки сообщения в ВКонтакте. В качестве случайного числа мы указываем значение переменной $num. Для этого пишем random_id=${num}message — это сам текст сообщения. Здесь мы указываем содержание переменной $text. Мы создали ее ранее в блоке Условие. Чтобы вытащить ее значение, пишем message=${text}
  • access_token= здесь нужно указать токен доступа к сообществу. Его вы можете запросить в настройках группы согласно данной инструкции. Или просто используйте токен, который вы получили на этапе публикации бота Aimylogic ВКонтакте
  • v= — версия протокола API.
подсказка
Актуальную версию протокола API ВКонтакте можно проверить по ссылке

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

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

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

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

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

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

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