SkryabinD
@SkryabinD
Программирование, управление проектами.

Как отправлять сообщения из приложений сообщества VK?

Хочу отправлять сообщения пользователям из приложения сообщества (приложение - iframe).
Запрашиваю разрешение на отправку методом showAllowMessagesFromCommunityBox, но потом, когда пытаюсь отправить сообщение методом secure.sendNotification (с сервера), получаю ошибку "Permission to perform this action is denied". То есть вроде как нет прав, хотя пользователь дал разрешение при вызове метода showAllowMessagesFromCommunityBox.
Как правильно отправлять сообщения после получения разрешения через showAllowMessagesFromCommunityBox?
Мне без разницы, откуда отправлять - с сервера, или с клиента.
Метод messages.send тоже пробовал, но там нужно дополнительно запрашивать разрешение на управление сообщениями, так что это не то.
  • Вопрос задан
  • 2028 просмотров
Решения вопроса 1
SkryabinD
@SkryabinD Автор вопроса
Программирование, управление проектами.
Привел знания в порядок, отвечаю сам на свой вопрос.
Чтобы отправлять сообщения из приложений сообществ, нужно 2 разрешения:
1. Чтобы администратор сообщества разрешил приложению отправлять от его имени сообщения.
2. Чтобы пользователь разрешил приложению отправлять ему сообщения.

Для того, чтобы приложение могло отправлять сообщения от имени сообщества, приложение должно получить для этого токен. Для этого приложение на стороне клиента должно запросить у администратора разрешение на управление сообщениями:
VK.callMethod("showGroupSettingsBox", 4096); //4096 - это только управление сообщениями, здесь можно добавить другие разрешения.
Когда администратор подтвердил права, вызывается событие onGroupSettingsChanged, там вторым параметром передается токен, который нужно будет использовать для отправки сообщений, то есть его нужно передать на сервер и в дальнейшем его использовать.

Второе - это запрос разрешения у пользователя. С использованием полученного токена на стороне сервера методом messages.isMessagesFromGroupAllowed нужно проверять, разрешил ли пользователь отправку сообщений. Если разрешения нет, то на стороне клиента для запроса разрешения вызывать метод showAllowMessagesFromCommunityBox. И далее уже на стороне сервера отправлять сообщения методом messages.send
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы