Как получить информацию о пользователе ВКонтакте
В этой статье мы расскажем вам, как получить информацию о пользователе с помощью API ВКонтакте.
Базовые данные, такие как имя пользователя, фамилию и ID вы можете получить с помощью переменной $rawRequest. А чтобы получить дополнительную информацию, такую как, например, дата рождения пользователя и номер телефона, воспользуемся API ВКонтакте. В данной статье мы приведем пример того, как можно использовать API ВКонтакте. Вы можете найти документацию по использованию API ВКонтакте здесь: https://vk.com/dev/first_guide
API (application programming interface) — это посредник между разработчиком приложений и какой-либо средой, с которой это приложение должно взаимодействовать. API упрощает создание кода, поскольку предоставляет набор готовых классов, функций или структур для работы с имеющимися данными.
Если ваш бот опубликован не только в ВКонтакте, но и в другом канале, то вы можете использовать системную переменную $channelType для определения канала.
Тестировать описанную в этой инструкции функциональность нужно в ВКонтакте! Если вы будете использовать описанную ниже функциональность и тестировать ее в тестовом виджете Aimylogic, вы будете получать ошибку, так как бот пытается использовать API ВКонтакте и, естественно, не может при тестировании не в ВКонтакте.
Прежде чем приступить к выполнению инструкции, создайте базовый сценарий, состоящий из парочки текстовых экранов (приветствие + фразы для принятия ввода пользователя), и опубликуйте его в ВКонтакте, как описано в данной инструкции.
Как узнать город пользователя?
Подключили канал ВКонтакте? Тогда приступим.
Попробуем получить информацию о городе пользователя.
- На экран приветствия в вашем сценарии добавьте блок «Переход» и соедините его с блоком условий, с помощью которого будем получать ID пользователя:
$id = $rawRequest.object.message.from_id
- От блока условий сделаем связь с HTTP-запросом, чтобы получить город пользователя из информации о странице ВКонтакте:
- Вот как будет выглядеть этот HTTP-запрос:
-
Метод — GET.
-
Вкладка RESPONSE HTTP-запроса должна содержать: Имя переменной
$city
Значение$httpResponse.response[0].city.title
-
Вкладки BODY и HEADERS заполнять не нужно.
-
URL нашего запроса выглядит так:
https://api.vk.com/method/users.get?user_ids=${id}&fields=city&access_token=ACCESS_TOKEN&v=5.199
Скопируйте этот URL, подставив вместо ACCESS_TOKEN ключ, который вы получили на этапе добавления бота в сообщество. Вы всегда можете заново получить этот токен в настройках сообщества: Настройки — Работа с API — Ключи доступа. Подробнее о добавлении канала ВКонтакте.
| Больше ничего менять в этом URL не нужно.
Разберемся в структуре этого URL
https://api.vk.com/method/users.get?user_ids=${id}&fields=city&access_token=ACCESS_TOKEN&v=5.199
Нижеследующее объяснение может помочь вам понять, как использовать API ВКонтакте.
- Мы используем метод users.get. Вы можете почитать об этом методе здесь.
- Так как мы до этого получили ID пользователя с помощью блока условий, наш запрос содержит следующее значение:
user_ids=${id}
вместо{id}
будет подставлен реальный идентификатор пользователя ВКонтакте. - Мы используем параметр fields метода users.get
- В параметре fields мы используем значение city. Это также определено документацией API ВКонтакте.
- access_token определяет токен нашего канала. Поэтому вместо ACCESS_TOKEN нужно вставить ключ, полученный из ВКонтакте.
- И, наконец, 5.199 — это последняя версия протокола API ВКонтакте. Вам нужно указать актуальную версию протокола API ВКонтакте. Посмотреть, какая версия является актуальной на данный момент, вы можете здесь (самая верхняя версия — актуальная): https://vk.com/dev/versions
У вас может получиться такой url:
https://api.vk.com/method/users.get?user_ids=${id}&fields=city&access_token=vk1.a.l7Gv1Vdy-9rUb6dUY_2YGHF8Wdvuw8mj4tnE3pQV10R5_HOSzTPv7NbBlUZvYiJIxKTTBEM2tOX51a6bbN3TDgSDvyx1UzwnQtmpwMQZ97ivh54p2KBjx0qmNGAGA_v8z8YoYbsjQp-VVz2laQQVYihyUiNygCN_7yZqFOk24J3h0FpSFdUydIBN8sY_yWhESciiaQghf1BcMSzlbHG7Rw&v=5.199
Нам нужно присвоить все полученные значения соответствующим переменным, что мы и делаем, добавляя переменную в Http-запрос на вкладке RESPONSE и записывая в эту переменную полученную информацию.
- От блока «Завершен с ошибкой» добавим связь с текстовым блоком со следующим содержанием:
Ошибка $httpStatus
Этот блок поможет нам понять, в чем ошибка, если запрос не будет успешным.
Если вы получаете ошибку, вернитесь к пункту 3 и убедитесь, что вы правильно оформили запрос.
- Убедимся, что мы получили эту информацию от пользователя
Далее, проверим, получили ли мы эту информацию — указан ли город у данного пользователя, и не закрыта ли эта информация настройками приватности. Свяжем вариант «Завершен успешно» HTTP-запроса с блоком условие, в котором пропишем: $city
Мы пишем здесь ту же переменную, которую указали в HTTP-запросе:
- Если это условие выполняется, можем продвигаться по сценарию (далее будем добавлять HTTP-запрос). А если нет (вариант else) добавим текстовый блок с вопросом о городе проживания.
- Прежде чем вывести название города, мы можем воспользоваться сервисом morpher.ru, чтобы склонять название города. Будем совершать это с помощью этого блока HTTP-запрос:
Блок HTTP-запрос, в котором будем склонять название страны, будет выглядеть так: Url: http://ws3.morpher.ru/russian/declension?s=${city}&format=json
Здесь мы в фигурных скобках указали название переменной, содержание которой будем склонять. В нашем случае это переменная $city, но вы можете склонять значение любой другой переменной. Имя переменной: $newcity
— запишем полученный от морфера массив в эту переменную Значение: $httpResponse.П
- Далее, после варианта «Выполнен успешно», сделаем связь с текстовым блоком, содержащим следующее:
Ты живешь в $newcity, верно?
Сервис morpher.ru будет склонять название города. Нам нужно выбрать, какой нам нужен падеж. В данном случае нам нужен Предложный падеж, поэтому пишем $httpResponse.П. Вы можете посмотреть содержание массива, который выдает 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.199
Здесь мы используем параметр 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.199
Имя переменной: $cellphone
Значение: $httpResponse.response[0].mobile_phone