Отправить сообщение пользователю через VK API из приложения с типом «Веб-сайт»
Есть сайт с уже работающей авторизацией.
Для сайта в VK создали приложение с типом веб-сайт.
Есть необходимость добавить возможность сайту от имени приложения отправлять сообщение пользователям через VK API .
Возможно ли подобное? Насколько я понял, для приложений типа «сайт» доступны не все методы.
Если возможно, то какой метод будет правильнее использовать?
Отслеживать
5,542 2 2 золотых знака 20 20 серебряных знаков 41 41 бронзовый знак
задан 27 апр 2016 в 7:47
43 1 1 серебряный знак 4 4 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
На сегодня есть следующие варианты отправки сообщения пользователю ВК:
- от другого пользователя ВК messages.send() ;
- от сообщества в ответ на запрос пользователя – Сообщения для бизнеса;
- уведомления от приложения secure.sendNotification() ;
- платная отправка SMS secure.sendSMSNotification() .
Варианты 1–3 не доступны приложению типа «Сайт». Но можно поступить так:
Заведите аккаунт пользователя ВКонтакте, представляющий ваш сайт – вымышленный персонаж, директор, «лицо» сайта.
Создайте приложение типа Standalone, и получите для него бессрочный токен с правами messages. Тут придётся всего один раз выполнить процедуру с копированием токена из адресной строки браузера.
Зато теперь у вас есть токен, с которым вы сможете из скриптов сайта писать личные сообщения пользователям. Приходить они будут от имени того аккаунта.
Скорее всего, пользователи будут что-то писать в ответ – обрабатывайте их ответы.
Наладьте какой-то механизм на случай если токен вдруг перестанет работать – чтобы вы тут же узнали и выпустили новый.
Отправка сообщений ботом в беседу Vk Api — Python — Ответ 15131829
Отправка ботом сообщений из телеграм канала
Доброго времени суток, уважаемые форумчане, на досуге при написании телеграмм бота с помощью.
Отправка сообщения в беседу ВКонтакте (VK API)
Пытаюсь разобраться с vk api. Использую библиотеку vknet Залогиниться удалось. Отправить.
Отправка сообщений через API VK
Здравствуйте. Возникла небольшая трудность при написании небольшой программы которая будет.

Отправка сообщений вк через API
Помогите пожалуйста кто шарит!! Я хочу авторизоваться вк и отправить сообщение, ПАРОЛЬ И ЛОГИН У.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Отправка сообщений друзьям Vknet Api
Хочу отправить сообщение выбранному другу, но даже не могу отправить сообщение себе )). В.
Автоотправка сообщений вконтакте в беседу, скрипт
Мне нужен скрипт, который позволит мне отправлять много сообщений(число которое я укажу) в беседе в.
Создать беседу в сообществе VK средствами API
Всем привет. Прошу направить на пути решения проблемы. Нужно создать беседу в существующем.
Создать беседу в сообществе VK средствами API
Всем привет. Прошу направить на пути решения проблемы. Нужно создать беседу в существующем.
Обработка сообщений телеграм-ботом
Как НЕ обрабатывать сообщения, которые были отправлены боту, пока он был выключен? Использую.
Декоратор у функции обработки сообщений ботом
Приветствую всех, учусь разрабатывать тг ботов с помощью модуля telebot. Меня мучают два вопроса.
Пересылка сообщений Телеграм ботом с удалением изображений
Всем привет! Программированием не занимаюсь, но для личного пользования понадобилось сделать.
Как отправить сообщение VK, с помощью Python 3?
Добрый день. До этого писал бота используя vk_api и отправлял сообщения в ответ на присланные. Все работает отлично и без проблем. Но тут встала задача отправки сообщения пользователю просто из списка. Начал искать в интернете и натолкнулся на такую возможность, но через приложение. Во всех примерах (датируемых 2017) используется методы — vk.Session и vk.API, которых на данный момент в библиотеке vk нет. Других примеров найти не смог. Вопрос — как все же отправить сообщение пользователю, зная его ID? Спасибо.
- Вопрос задан более трёх лет назад
- 13073 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 3
Отправлять сообщение может только группа и только в том случае если пользователь уже отправил ей сообщение
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
vks = vk_api.VkApi(token=token) vk = vks.get_api() vk.messages.send(peer_id = 'ид пользователя или конфы в которую хочешь отправить', random_id = 0, message = 'сообщение')
mspuz @mspuz Автор вопроса
Вот что получилось:
1. С помощью OAuth-авторизации (https://oauth.vk.com/authorize?client_id=&. смог получить token
Далее
import vk token = session = vk.AuthSession(access_token = token) api = vk.API(session) # Например, смог получить тестовые данные о пользователе api.users.get(user_ids=1, v='5.103') # Но при попытке отправки сообщения - получаю Access denied api.messages.send(user_id=96440718, message='Test message', v='5.103')
Как это победить? Или все же невозможно отправить сообщение пользователю просто так?
Нашел такую вот информацию. Видимо теперь просто так сообщение не отправить.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
vk.Session и vk.API были в vk, а вы используете vk_api. Это разные модули.
from vk_api import VkApi, AuthError from vk_api.utils import get_random_id vk_session = VkApi('login', 'password') vk_session.auth(token_only=True) vk = vk_session.get_api() vk.messages.send(user_id=ID_пользователя, message='Сообщение', random_id=get_random_id())
Ответ написан более трёх лет назад
mspuz @mspuz Автор вопроса
from vk_api import VkApi, AuthError from vk_api.utils import get_random_id vk_session = VkApi(login = , password = ) vk_session.auth(token_only=True) vk = vk_session.get_api() vk.messages.send(user_id=, message='Сообщение', random_id=get_random_id())
В результате выдает — «Access denied: no access to call this method». Мне вот интересно, а вы сами хоть раз это делали? Или просто вырываете куски кода из интернета и сюда отправляете?
mspuz @mspuz Автор вопроса
mspuz, Так же попробовал отправлять сообщение друзьям:
from vk_api import VkApi, AuthError from vk_api.utils import get_random_id vk_session = VkApi(login = , password = ) vk_session.auth(token_only=True) vk = vk_session.get_api() for friend in vk.friends.get()['items']: res = vk.messages.send(user_id=friend, message='Сообщение', random_id=get_random_id())
Список ID’шников своих друзей я удачно получаю. Но при попытке отправить сообщение — получаю все тот же «[15] Access denied: no access to call this method».
mspuz, да пробывал, спасибо. Выше человек уже уточнил что с недавних пор message.send не работает для простых смертных. Но вы можете это обойти получив токен из официального приложения и авторизовавшись с его помощью. (Так же нужно указать app_id официального приложения)
VK API¶
Сервис предоставляет REST API для отправки VK-сообщений через платформу. Devino Telecom с возможностью переотправки по Viber и SMS в случае недоcтавки, а также для получения отчетов о статусах доставки сообщений.
Работа с API осуществляется с использованием протокола HTTP.
Тела запроса клиента и ответа сервера представлены в формате JSON. Данные должны быть в кодировке UTF-8.
API поддерживает базовую авторизацию через заголовок Authorization (https://en.wikipedia.org/wiki/Basic_access_authentication).
В заголовке запроса необходимо передать логин и пароль из Личного Кабинета в формате login:password в base64 кодировке, например:
Authorization: Basic dGVzdGVyOjExMTExMQ==
Подключение услуги¶
Для подключения услуги необходимо предоставить следующую информацию Вашему персональному менеджеру:
- Название и адрес группы ВКонтакте
- Описание Вашей компании и вида ее деятельности
- Ссылку на Ваш сайт или мобильное приложение.
- Шаблоны которые будут использоваться для отправки сообщений.
Используемые типы данных¶
| Тип данных | Описание |
|---|---|
| Integer | Положительные числа больше нуля |
| DateTime | Значение, обозначающее дату и время, представляются в пакетах в формате «yyyy-MMdd hh:mm:ss», например, 1999-05-31 13:20:00 |
| Address | Адрес абонента. Номер мобильного телефона абонента в международном формате (в формате E.164). Например, 79031112233, для России или 491791112233 для Германии |
| String | Строка символов в формате UTF-8 |
| Object | Объект (включает в себя несколько полей других типов) |
Ограничения и допустимые значения описаны далее в разделе описания пакетов протокола.
На стороне VK имеются ограничения на отпарвку:
- не более 50 уведомлений в секунду для одного service (для одной группы в VK)
- не более 5 уведомлений в сутки для одного пользователя от одного service (одной группы в VK)
Методы работы с API¶
Отправка сообщения¶
(/send/vk)
Платформа Devino инициирует отправку VK-сообщения абоненту в соответствии с данными,переданными в теле POST-запроса:
https://im.devinotele.com/send/vk
В одном запросе может быть информация об отправке только одного сообщения.
Пример тела запроса отправки сообщения
"vk": "subject":"TEST", "priority":"high", "routes":[ "vk" ], "validityPeriod":180, "phone":"79999999999", "templateId":"123456", "templateData": "param1":"value1", "param2":"value2" > >, "viber": "subject":"TEST", "priority":"high", "validityPeriodSec":30, "type":"viber", "comment":"comment", "contentType":"button", "text":"text", "caption":"caption", "action":"http://company.com/resource", "imageUrl":"http://company.com/image.jpg", "dstAddress":"79999999999" >, "sms": "srcAddress":"TESTSMS", "text":"тест сообщения", "validityPeriod":60, "dstAddress":"79999999999" > >
Описание полей тела запроса отправки сообщения¶
| Поле | Тип данных | Допустимые занчения | Описание | Обязательное поле |
|---|---|---|---|---|
| Описание полей объекта VK | ||||
| subject | String | Строка от 1 до 11 символов | Адрес отправителя | Да |
| priority | String | Варианты: 1) «low» 2) «medium» 3) «high» 4) «realtime» | Приоритет сообщения | Да |
| routes | массив String | Варианты: 1) «vk» 2) «ok» 3) «ok»,»vk» 4) «vk»,»ok» | Массив маршрутов VK в порядке использования, пример «routes»:[«ok»,»vk»] | Да |
| validityPeriod | Long | Целое число от 15 до 86400 | Время жизни сообщения в секундах | Да |
| deliveryPolicy | String | Варианты: 1) «any» 2) «mobile_device_required» | По умолчанию any. Если указано mobile_device_required, то доставка производитсятолько в случае наличия у пользователямобильного приложения и его использования в течение последних 7 дней. Доставка при этом производится во все имеющиеся устройства, а не только мобильные. в секундах. | Да |
| phone | String | Номер телефона в соответствии со стандартом E.164, возможен + в начале | Номер телефона получателя сообщения | Да |
| templateId | Long | Целое число | Идентификатор шаблона | Да |
| templateData | Object | Значения параметров шаблона — например если шаблон «Уважаемый #abonent# с #startTime# по #endTime# сервис будет недоступен», то пример templateData может быть такой: «templateData»: < «abonent»: «Иванов А.Б.», «startTime»: «10.01.2017 15.15», «endTime»: «10.01.2017 15.30» >Шаблон должен быть согласован VK | Да | |
| Описание полей объекта Viber | ||||
| subject | String | Имя отправителя Viber-сообщения | Да | |
| priority | String | Варианты: 1) «low» 2) «medium» 3) «high» 4) «realtime» | Приоритет сообщения | Да |
| validityPeriod | Long | Целое число от 15 до 86400 | Время жизни сообщения в секундах | Да |
| comment | String | Произвольный текстовый комментарий. | Нет | |
| type | String | Тип отправляемого сообщения. Определяет канал, которые используется для доставки сообщения на мобильный телефон абонента | viber | Да |
| contentType | String | Тип содержимого сообщения. | text – текстовое сообщение image – изображение button – гиперссылка в виде кнопки | Да |
| dstAddress | String | Номер телефона в соответствии со стандартом E.164, возможен + в начале | Номер телефона получателя сообщения | Да |
| text | String | Текст viber-сообщения | Зависит от значения contentType | |
| caption | String | Текст кнопки | Зависит от значения contentType | |
| action | String | Ссылка кнопки | Зависит от значения contentType | |
| imageUrl | String | Ссылка на картинку | Зависит от значения contentType | |
| text | String | Текст viber-сообщения | Да | |
| Описание полей объекта SMS | ||||
| srcAddress | String | Имя отправителя SMS-сообщения | Да | |
| text | String | Текст SMS-сообщения | Да | |
| validityPeriod | Long | Число от 60 до 86400 | Время жизни SMS-сообщения в секундах | Да |
| dstAddress | String | Номер телефона в соответствии со стандартом E.164, возможен + в начале | Номер телефона получателя сообщения | Да |
Пример ответа на запрос отправки сообщения
"code": "ok", "description": "", "result": "code": "ok", "messageId": 3222269333010907000 > >
Описание полей тела ответа на запрос отправки сообщения¶
| Поле | Тип данных | Допустимые занчения | Описание | Обязательное поле |
|---|---|---|---|---|
| code | String | Возможные значения перечислены в таблице кодов ответа на запрос отправки сообщения | Код ответа на запрос отправки сообщения | Да |
| description | String | Возможные значения перечислены в таблице кодов ответа на запрос отправки сообщения | Описание ошибки обработки запроса отправки сообщения (если была) | Да |
| result | Object | Информация о коде валидации и ID сообщения | Да, если code=»ok» | |
| Описание полей объекта result | ||||
| code | String | Возможные значения перечислены в таблице кодов валидации сообщения | Код валидации сообщения | Да |
| messageId | Long | Уникальный идентификатор сообщения | Да, если code=»ok» | |
Коды ответа на запрос отправки сообщения¶
| code | description |
|---|---|
| ok | |
| validation_error | login_not_specified |
| validation_error | messages_not_specified |
| validation_error | invalid_json |
| queue_full | login_send_queue_overflow |
| system_error | Описание внутренней ошибки сервера |
Коды валидации сообщения¶
| code | Описание |
|---|---|
| ok | Сообщение добавлено в очередь на отправку |
| subject_not_specified | Не указан адрес отправителя |
| subject_invalid | Недопустимый адрес отправителя |
| priority_not_specified | Не указан приоритет сообщения |
| priority_invalid | Недопустимый приоритет сообщения |
| routes_not_specified | Не указаны маршруты доставки |
| routes_invalid | Недопустимый набор маршрутов доставки |
| vp_invalid | Недопустимый validityPeriod |
| phone_not_specified | Не указан номер телефона |
| phone_invalid | Недопустимый номер телефона |
| text_not_specified | Не указан текст сообщения |
| text_invalid | Недопустимый текст сообщения |
| sms_text_not_specified | Не указан текст SMS-сообщения |
| sms_subject_not_specified | Не указан номер отправителя SMS-сообщения |
| sms_validity_period_not_specified | Не указано время жизни SMS-сообщения |
| invalid_sms_validity_period | Недопустимое время жизни SMS-сообщения |
| not-enough-credits | Недостаточно средств на лицевом счете |
Получение статуса сообщения¶
(/status/vk)
Платформа Devino возвращает статус доставки ранее отправленного VK-сообщения, messageId которого был ранее передан в теле GET-запроса:
https:/im.devinotele.com/status/vk?message=
Описание параметров запроса статусов
| Поле | Тип данных | Допустимые занчения | Описание | Обязательное поле |
|---|---|---|---|---|
| message | Long | Идентификатор сообщения | Да |
Пример ответа на запрос статусов
"code": "ok", "description": "", "result": "providerId": 3287014702114144256, "code": "ok", "status": "failed", "statusAt": "2018-07-03 16:31:40", "smsStates": [ "id": 711869146186383364, "status": "delivered" > ], "viberStatus": "id": 3287014702114144256, "status": "undelivered", "statusAt": "2018-07-03 16:31:41", "code": "not-viber-user" > > >
Описание полей тела ответа на запрос статусов¶
| Поле | Тип данных | Допустимые занчения | Описание | Обяз-ое поле |
|---|---|---|---|---|
| code | String | Возможные значения перечислены в таблице кодов ответа на запрос статусов | Код ответа на запрос отправки сообщения | Да |
| description | String | Возможные значения перечислены в таблице кодов ответа на запрос статусов | Описание ошибки обработки запроса запроса статусов (если была) | Да |
| result | Object | Каждому объекту из массива messages запроса соответствует объект в массиве result ответа | Да, если code=»ok | |
| Описание полей объекта result | ||||
| providerId | Long | Идентификатор сообщения | Да | |
| code | String | Возможные значения перечислены в таблице кодов валидациисообщения идентификаторов сообщений | Код валидации идентификатора | Да |
| status | String | enqueued – сообщение добавлено в очередь на отправки, sent – сообщение отправлено, delivered – сообщение доставлено, undelivered – сообщение отправлено, но не доставлено, failed – сообщение не доставлено в результате сбоя, vp_expired – сообщение не доставлено в течение validityPeriod, read – сообщение просмотрено абонентом. | Статус доставки сообщения VK | Да |
| statusAt | DateTime | Возможные значения перечислены в таблице | Время обновления статуса доставки сообщения VK | Да |
| error | String | Набор всех возможных ошибок заранее не предопределен | Информация о статусе сообщения | Нет |
| viberStatus | Object | Информация о статусе сообщения | Да, если code=»ok» | |
| smsStates | Object | Статусы доставки SMS-сообщения | Нет | |
| Описание полей объекта viberStatus | ||||
| id | Long | Уникальный идентификатор сообщения на платформе | Да | |
| statusAt | timestamp | Дата и время получения статуса | Да | |
| Status | String | enqueued – сообщение находится в очереди на отправку. sent – сообщение отправлено абоненту delivered – сообщение доставлено абоненту. read – сообщение просмотрено абонентом. visited абонент перешел по ссылке в сообщении. undelivered – сообщение отправлено, но не доставлено абоненту. failed – сообщение не было отправлено в результат сбоя. cancelled –отправка сообщения отменена. vp_expired – сообщение просрочено, финальный статус не получен в рамках заданного validity period | Код статуса доставки Viber сообщения. | Да |
| Code | String | user-blocked – абонент заблокирован not-viber-user – абонент не является пользователем Viber. | Причина, по которой сообщение не было доставлено абоненту (status=undelivered) | Нет |
| Описание полей объекта smsStates | ||||
| id | Long | Идентификатор SMS-сообщения | Да | |
| status | String | enqueued – сообщение находится в очереди на отправку, sent – сообщение отправлено абоненту, delivered – сообщение доставлено абоненту, undelivered – сообщение отправлено, но не доставлено абоненту | Статус SMS-сообщения | Да |
Коды ответа на запрос статусов¶
| code | description |
|---|---|
| ok | |
| validation_error | message_not_specified |
| system_error | Описание внутренней ошибки сервера |
Коды валидации идентификаторов сообщений¶
| code | description |
|---|---|
| ok | Известный идентификатор сообщения |
| unknown_message_id | Неизвестный идентификатор сообщения |
Коды возврата обработки viber сообщения в рамках запроса (code)
| Код | Описание |
|---|---|
| ok | исходящее сообщение успешно принято на отправку |
| error-system | системная ошибка |
| error-instant-message-client-id-not-unique | клиентский идентификатор сообщения не уникален в рамках всего взаимодействия между клиентом и провайдером. |
| error-subject-format | неправильный формат подписи |
| error-subject-unknown | указанная подпись не разрешена клиенту в конфигурации платформы провайдера |
| error-subject-not-specified | подпись не указана |
| error-address-format | неправильный формат номера абонента |
| error-address-unknown | отправка на номерную емкость, к которой относится номер абонента не разрешена клиенту в конфигурации платформы провайдера |
| error-address-not-specified | номер абонента не указан |
| error-priority-format | неправильный формат значения приоритета |
| error-comment-format | неправильный формат значения комментария |
| error-instant-message-type-format | неправильный формат типа сообщения |
| error-instant-message-type-not-specified | неправильный формат типа содержимого сообщения |
| error-content-type-format | неправильный формат содержимого сообщения |
| error-content-not-specified | содержимое сообщения не указано |
| error-validity-period-seconds-format | неправильно указано значение времени ожидания доставки |
| error-instant-message-provider-id-format | неправильный формат провайдерского идентификатора |
| error-instant-message-provider-id-duplicate | провайдерский идентификатор исходящего сообщения неуникален в рамках запроса проверки статуса |
| error-instant-message-provider-id-unknown | исходящее сообщение с данным провайдерским идентификатором не найдено на платформе провайдера |
| error-resend-sms-error | указаны поля для переотправки смс но переотправка не включена |
| error-resend-sms-validity-period-error | неверное время жизни для смс |
Получение статуса сообщения с помощью Callback-запросов¶
Для получения статуса сообщения могут использоваться callback-запросы. В таком случае Платформа Devino будет отправлять POST-запрос на выбранный Вами URL каждый раз, когда у отправленного Вами сообщения будет меняться статус. Запрос считается доставленным, если в ответ на него был получен статус HTTP(200). В противном случае будут совершаться повторные попытки доставки в течение 24 часов и по истечению этого срока статус сообщения можно будет получить только с помощью GET-запроса, описанного выше.
Обратите внимание, что информация о переотправке по SMS в callback-запросе не предоставляется.
Для получения callback-запросов от сервиса необходимо передать Вашему персональному менеджеру или в техническую поддержку (support @ devinotele . com) информацию об URL, на который будут отправляться запросы.
Пример тела callback-запроса
[ "messageId":1343343, "status": "DELIVERED", "receivedAt": "2017-05-31 14:51:12", "error":"Доставлено" > ]
Описание полей запроса¶
| Поле | Тип данных | Описание | Обязательное поле |
|---|---|---|---|
| id | Long | Уникальный идентификатор сообщения в Платформе Devino | Да |
| status | String | Статус доставки сообщения VK | Да |
| time | DateTime | Время получения статуса (по Москве, UTC+3) | Да |
| error | String | Ошибка доставки сообщения VK (если есть) | Да |
© Copyright 2022 Revision 84284c50 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions latest Downloads pdf html epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.