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

Как получить информацию о пользователе ВКонтакте

В этой статье мы расскажем вам, как получить информацию о пользователе с помощью API ВКонтакте.

Базовые данные, такие как имя пользователя, фамилию и ID вы можете получить с помощью переменной $rawRequest. А чтобы получить дополнительную информацию, такую как, например, дата рождения пользователя и номер телефона, воспользуемся API ВКонтакте. В данной статье мы приведем пример того, как можно использовать API ВКонтакте. Вы можете найти документацию по использованию API ВКонтакте здесь: https://vk.com/dev/first_guide

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

к сведению

Если ваш бот опубликован не только в ВКонтакте, но и в другом канале, то вы можете использовать системную переменную $channelType для определения канала.

Тестировать описанную в этой инструкции функциональность нужно в ВКонтакте! Если вы будете использовать описанную ниже функциональность и тестировать ее в тестовом виджете Aimylogic, вы будете получать ошибку, так как бот пытается использовать API ВКонтакте и, естественно, не может при тестировании не в ВКонтакте.

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

Как узнать страну пользователя?

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

Подключили канал ВКонтакте? Тогда приступим.

Попробуем получить информацию о стране пользователя.

  1. На экран приветствия в вашем сценарии добавьте блок «Переход» и соедините его с блоком условий, с помощью которого будем получать ID пользователя: $id = $rawRequest.object.user_id

  1. От блока условий сделаем связь с HTTP-запросом, чтобы получить страну пользователя из информации о странице вк:

  1. Вот как будет выглядеть этот HTTP-запрос:

  • Метод — GET.

  • Вкладка RESPONSE HTTP-запроса должна содержать: Имя переменной $country Значение $httpResponse.response[0].country.title

  • Вкладки BODY и HEADERS заполнять не нужно.

  • URL нашего запроса выглядит так: https://api.vk.com/method/users.get?user_ids=${id}&fields=country&access_token=ACCESS_TOKEN&v=5.101

Скопируйте этот URL, подставив вместо ACCESS_TOKEN ключ, который вы получили на этапе добавления бота в сообщество. Вы всегда можете заново получить этот токен в настройках сообщества: Настройки — Работа с API — Ключи доступа. Подробнее о добавлении канала ВКонтакте.

| Больше ничего менять в этом URL не нужно.

Разберемся в структуре этого URL

Нижеследующее объяснение может помочь вам понять, как использовать API ВКонтакте.

  • Мы используем метод users.get. Вы можете почитать об этом методе здесь.Так как мы до этого получили ID пользователя с помощью блока условий, наш запрос содержит следующее значение: user_ids=${id}вместо {id} будет подставлен реальный идентификатор пользователя ВКонтакте. Мы используем параметр fields метода users.getв параметре fields мы используем значение country. Это также определено документацией API ВКонтакте. access_token определяет токен нашего канала. Поэтому вместо ACCESS_TOKEN нужно вставить ключ, полученный из ВКонтакте.* И, наконец, 5.101 — это последняя версия протокола API ВКонтакте. Вам нужно указать актуальную версию протокола API ВКонтакте. Посмотреть, какая версия является актуальной на данный момент, вы можете здесь (самая верхняя версия — актуальная): https://vk.com/dev/versions

У вас может получиться такой url:

Нам нужно присвоить все полученные значения соответствующим переменным, что мы и делаем, добавляя переменную в Http-запрос на вкладке RESPONSE и записывая в эту переменную полученную информацию.

  1. От блока «Завершен с ошибкой» добавим связь с текстовым блоком со следующим содержанием: Ошибка $httpStatus

Этот блок поможет нам понять, в чем ошибка, если запрос не будет успешным.

Если вы получаете ошибку, вернитесь к пункту 3 и убедитесь, что вы правильно оформили запрос.

  1. Убедимся, что мы получили эту информацию от пользователя

Далее, проверим, получили ли мы эту информацию — указана ли страна у данного пользователя, и не закрыта ли эта информация настройками приватности. Свяжем вариант «Завершен успешно» HTTP-запроса с блоком условие, в котором пропишем: $country

мы пишем здесь ту же переменную, которую указали в HTTP-запросе:

  1. Если это условие выполняется, можем продвигаться по сценарию (далее будем добавлять HTTP-запрос). А если нет (вариант else) добавим текстовый блок с вопросом о стране проживания.

  1. Прежде чем вывести название страны, мы можем воспользоваться сервисом morpher.ru для того чтобы склонять название страны. Будем совершать это с помощью этого блока HTTP-запрос:

Блок HTTP-запрос, в котором будем склонять название страны, будет выглядеть так: Url: http://ws3.morpher.ru/russian/declension?s=${country}&format=json

Здесь мы в фигурных скобках указали название переменной, содержание которой будем склонять. В нашем случае это переменная $country, но вы можете склонять значение любой другой переменной.Имя переменной: $newcountry — запишем полученный от морфера массив в эту переменнуюЗначение: $httpResponse

  1. Далее, после варианта «Выполнен успешно», сделаем связь с текстовым блоком, содержащим следующее: Ты живешь в $newcountry.П, верно?

Сервис morpher.ru будет склонять название страны. Нам нужно выбрать, какой нам нужен падеж. В данном случае нам нужен Предложный падеж, поэтому пишем $newcountry.П. Вы можете посмотреть содержание массива, который выдает morpher.ru, если пройдете по ссылке: http://ws3.morpher.ru/russian/declension?s=Россия&format=json

Вместо «Россия» вы можете подставить любое другое слово и увидеть парадигму склонения. Выберите букву, соответствующую нужному вам падежу.

Как получить другие данные?

Вы можете запрашивать другие данные, используя метод users.get. Следуйте шагам из инструкции по получению страны пользователя, за исключением нижеследующих изменений.

Как запросить дату рождения?

URL для получения даты рождения: https://api.vk.com/method/users.get?user_ids=${id}&fields=bdate&access_token=ACCESSTOKEN&v=5.101

Здесь мы используем параметр bdate метода users.get.

Имя переменной: bdЗначение: $httpResponse.response[0].bdate

Далее, аналогично случаю со страной:

Как запросить номер телефона?

URL запроса — https://api.vk.com/method/users.get?user_ids=${id}&fields=contacts&access_token=ACCESSTOKEN&v=5.101

Имя переменной $cellphoneЗначение $httpResponse.response[0].mobile_phone

Вы можете получить номер телефона и город, если пропишете в HTTP

$city$country$cellphone$bd

  1. Далее, выдаем полученные данные с помощью обычного текстового блока.

Твоя страна - $country.response[0].country.titleТвой день рождения - $bd.response[0].bdateТвой город - $city.response[0].city.titleТвой телефон - $cellphone.response[0].mobile_phone

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