В этом уроке мы расскажем о структуре API и рассмотрим несколько примеров получения данных.
Напомним схему взаимосвязи объектов в API Директа, которую мы показывали в первом уроке:
Для каждого класса объектов в API предусмотрен соответствующий сервис: Campaigns — для управления кампаниями, AdGroups — для управления группами объявлений, Ads — для управления объявлениями и т. д. Полный список сервисов приведен в документации.
Логика работы с объектами в API унифицирована, и методы всех сервисов имеют стандартные названия. Как правило, сервис включает следующие методы:
add — добавление объектов;
update — изменение параметров объектов;
delete — удаление объектов;
get — получение объектов.
В сервисе могут быть и другие методы. Например, в сервисе Campaigns доступны следующие методы:
Как получать объекты
Давайте рассмотрим, как получить параметры рекламной кампании, используя метод get .
Метод get разработан так, чтобы можно было запрашивать только нужные данные. Например, можно получить только идентификаторы и названия кампаний, а не все их параметры. Имена нужных вам параметров необходимо перечислить во входном параметре FieldNames .
АВТОРИЗАЦИЯ В АККАУНТЕ VK ЧЕРЕЗ PYTHON
Критерии отбора объектов нужно указать во входной структуре SelectionCriteria . Если критериев отбора несколько, то сервер будет искать объекты, подходящие сразу под все критерии. Некоторые сервисы позволяют указывать пустую структуру SelectionCriteria — в этом случае возвращаются все объекты.
Тренировка в Песочнице
Напомним пример запроса из предыдущего урока. В этом примере мы получили весь список кампаний, указав пустую структуру SelectionCriteria , и для каждой кампании получили только идентификатор и название, указав соответствующие параметры в FieldNames .
Внимание. Не забудьте изменить токен и идентификаторы в примерах на ваши данные.
curl -k -H Authorization: Bearer ТОКЕН -d ,\FieldNames\:[\Id\,\Name\]>> https://api-sandbox.direct.yandex.com/json/v5/campaigns
curl -k -H Authorization: Bearer ТОКЕН -d ,FieldNames:[Id,Name],TextCampaignFieldNames:[BiddingStrategy]>> https://api-sandbox.direct.yandex.com/json/v5/campaigns
cURL для Windows
,n FieldNames: [Id, Name],n TextCampaignFieldNames: [BiddingStrategy]n >n>
curl -k -H Authorization: Bearer ТОКЕН -d ,FieldNames:[Id,Name,Status,Type]>> https://api-sandbox.direct.yandex.com/json/v5/adgroups
cURL для Windows
,n FieldNames: [Id, Name, Status, Type]n >n>
Сервис Ads
Получение списка объявлений группы.
curl -k -H Authorization: Bearer ТОКЕН -d ,\FieldNames\:[\Id\,\State\,\Status\,\Type\]>> https://api-sandbox.direct.yandex.com/json/v5/ads
curl -k -H Authorization: Bearer ТОКЕН -d ,FieldNames:[Id],TextAdFieldNames:[Text,Title,Href,VCardId]>> https://api-sandbox.direct.yandex.com/json/v5/ads
cURL для Windows
,n FieldNames: [Id],n TextAdFieldNames: [Text, Title, Href, VCardId]n >n>
curl -k -H Authorization: Bearer ТОКЕН -d ,FieldNames:[Id,Keyword,Bid,State,Status]>> https://api-sandbox.direct.yandex.com/json/v5/keywords
cURL для Windows
,n FieldNames: [Id, Keyword, Bid, State, Status]n >n>
Что дальше
Итак, вы научились работать с методом get . В следующем уроке мы рассмотрим принципы работы методов, изменяющих данные.
Скачиваем сообщения из беседы или диалога ВК Вконтакте [Python, VK API]
Вопросы
Для чего предназначен сервис Campaigns API Директа?
Для управления рекламными объявлениями. Для управления ключевыми фразами. Для получения статистики по группам объявлений. Для управления рекламными кампаниями.
Каким методом сервиса Campaigns можно получить данные?
update CreateOrUpdateCampaign get GetCampaignsParams
Почему нужно использовать постраничную выборку?
Она позволяет получить объекты поэтапно с помощью нескольких запросов. Такая выборка позволяет отправлять к API меньше запросов. Постраничная выборка обязательна при работе с Песочницей.
Источник: yandex.ru
Как получить последнее сообщение пользователя?
Есть ли способ получить последнее сообщение пользователя в беседе? Хочу сделать команду удаления, но не знаю, как определить id сообщений, которые нужно удалять. Использую ВК API и библиотеку vk-io (3.2.0, так как не могу заставить новую работать -_-). Имею свой токен, доступ есть.
- Вопрос задан более трёх лет назад
- 1348 просмотров
18 комментариев
Простой 18 комментариев
Как идея — отправлять сообщения бот с каким-либо знаком вначале, а потом через поиск находить и удалять их. Но только не хотелось юы портить сообщения.. Может, знает кто другой путь? Как генерируется ид сообщения? Просто число + 1 , если приходят сообщения новые или и идом пользователя(всё происходит в беседе и пишу бота для беседы)?
А что именно не получается в использовании vk-io^4.0?
Владлен Хеллсайт, самое начало кода, а именно import VK from ‘vk-io’;
Выдает ошибку. Версия ноды 8.11.3
Говорили, что import в экспериментальной есть, так что не горю желанием его ставить.
Знаете, как решить?
Герман Шестак, да очень просто)
const < VK >= require(‘vk-io’);
Владлен Хеллсайт, это я еще в самом начале пробовал
const vk = new VK(); ^ TypeError: VK is not a constructor
Герман Шестак, а можно полный код, и какая версия установлена? А то мне кажется что установлена 3.2, а именованный экспорт главного объекта появился в 4.0.
Владлен Хеллсайт, позже. Я хочу сейчас настроить себе GitLab deploy
Владлен Хеллсайт, вы используете vk-io?
Не подскажите, как можно отправить фото в сообщении?
Само фото получаю тут: (вместо MYID — айди приложения)
api.wolframalpha.com/v1/simple?appid=MYID await context.loadMessagePayload();
Владлен Хеллсайт, существует ли способ удалить сообщения приглашенного в беседу бота?
Как ни пытался — не удаляет. У бота права администратора.
Герман Шестак, нужно передать свойство member_id со знаком «минус», источник.
Владлен Хеллсайт, насколько я помню, при удалении сообщения требуется id сообщения..
Использовать messageConversationId
Источник: qna.habr.com
Бот ВКонтакте: руководство и полезные инструменты разработки
Яркий тренд IT-индустрии добрался и до социальной сети «ВКонтакте»: ещё в прошлом году многие разработчики стали создавать ботов для различных мессенджеров и социальных сетей. Далее мы рассмотрим сам процесс создания бота и самые частые «подводные камни». Стоит сразу заметить, что статья рассчитана на PHP-программистов, уже работавших с API ВКонтакте.
Стоит ли заниматься созданием бота?
Ответ на этот вопрос целиком и полностью зависит от ваших целей.
Если вы хотите безвозмездно предоставлять пользователям информацию — бот станет идеальным решением. Например, нет необходимости разрабатывать интерфейс, ведь всё взаимодействие происходит через личные сообщения. Аналогично с другими аспектами, где соц. сеть уже проделала всю работу: вход и регистрация пользователей, разнообразные проверки и т.п.
Расплачиваться за меньший объем работы приходится почти полной невозможностью монетизации. Когда вы создаёте сайт, то можете, например, разместить контекстную рекламу. Как реализовать подобное с ботом? Конечно, позднее администрация ВКонтакте может добавить возможность простого заработка для ботов, но мы не думаем, что это произойдет в ближайшее время.
Как работает бот ВКонтакте?
Принцип работы любого бота — получить сообщение от пользователя, сформировать ответ и отправить его обратно.
Middle Golang developer [EDT]
МТС , , можно удалённо , По итогам собеседования
К сожалению, используя API ВКонтакте, сделать это в рамках одного метода невозможно: отправка и получение сообщений никак не связаны между собой.
На момент написания статьи получение сообщений проще всего реализовывать на основе Callback API. Работает оно следующим образом: вы подписываетесь на определенные типы событий, а когда они происходят, ВКонтакте отправляет HTTP-запрос с данными о произошедшем событии на заданный вами URL.
Независимо от того, собираетесь ли вы взаимодействовать с этим событием, в ответ на запрос нужно вывести HTTP-статус «ok», его код равен 200. Если этого не произойдет, сервер ВКонтакте будет считать, что уведомление не получено и продолжит отправлять его с некоторой периодичностью, а потом временно прекратит отправку уведомлений.
Примечание Если вы не знакомы с работой Callback API, рекомендуем изучить документацию перед продолжением чтения статьи.
Ответ пользователю мы будем отправлять методом messages.send с ключом доступа сообщества. Получить его можно на странице настроек сообщества, рядом с вкладкой Callback API.
С токенами сообщества и связаны «подводные камни». Во-первых, один ключ имеет ограничение: 3 запроса в секунду. Решается это выпуском новых ключей — их число неограниченно, а значит можно забыть о лимитах. Во-вторых, новый ключ сообщества может оказаться недействительным, тогда любой запрос приведет к ошибке «Access denied». Защититься от этого можно лишь проверяя каждый новый ключ в рабочем приложении.
Какие инструменты пригодятся для создания бота?
Пример кода на чистом PHP дан на странице Callback API, но он написан без соблюдения любых соглашений программирования и выглядит нечитабельно.
Кроме того, маловероятно, что в своем проекте вы будете использовать процедурную архитектуру. Большинство разработчиков используют для ботов Laravel (или микро-фреймворк Lumen): помимо более удобной архитектуры эти фреймворки радуют своей системой «очередей» (queue).
Дело в том, что статус «ok» на запрос ВКонтакте необходимо вывести менее чем за 3 секунды, что не всегда возможно при выполнении ресурсоёмких операций. Именно в этой ситуации нам помогают очереди: мы можем вывести код 200 сразу при получении запроса, а остальную логику, включая отправку ответа пользователю, добавить в очередь и обработать асинхронно. Собственно говоря, в большинстве случаев именно так и следует поступать.
Пример реализации контроллера бота в фреймворке Laravel с использованием очередей:
switch ($data->type) case ‘confirmation’:
return $this->confirm();
case ‘message_new’:
dispatch(new HandleMessage($data->object->user_id));
return ‘ok’;
default:
return ‘ok’;
>
>
>
В отложенном таске, попадающим в очередь в результате работы этого кода, дальнейшую работу с API ВКонтакте, в том числе отправку сообщений, удобнее всего проводить через пакет VK-Client.
От других подобных пакетов VK-Client отличает поддержка генерации VKScript для метода execute, и исключений при ошибках API, что делает программу с его использованием быстрее и стабильнее. Главное, не забывайте про try/catch, а подробнее про обработку исключений в многопоточных приложениях читайте в нашем переводе.
Стоит упомянуть и библиотеку VkApiPHP, о которой мы рассказали в подборке библиотек для работы с VK API, ведь она тоже поможет сгенерировать код для execute-запроса.
Источник: techbyteshub.com