Как написать сообщение vk api

Что мы будем делать: настроим отправку сообщений от имени конкретного пользователя в несколько чатов и другим пользователям используя HTTP запрос средствами PHP, с минимальными усилиями.

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

Сообщения рассматриваем именно по той причине, что с ними можно работать только в standalone-приложениях.

План действий:
1. Создаем приложение
2. Получаем access_token
3. отправляем сообщения

1. Создаем приложение

Этот пункт делать под тем аккаунтом, к которому будет привязано приложение (Не обязательно тот же, с которого будут идти сообщения).

image

Имя пишем какое угодно — фигурировать оно нигде не будет.
Тип — Standalone-приложение.

Далее потребуется ввести код с смс-ки которая придет на привязанный к аккаунту номер. После ввода кода ничего не меняем в полях, идем в настройки и копируем ID приложения.

image

Больше тут можно ничего не трогать.

2. Используя ID и secret_key из приложения получаем access_token

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

Для этого создаем на сайте страничку вот с таким кодом:

$client_id — собственно, ID нашего приложения из пункта 1.

$scope — список прав, которые мы можем делать от имени нашего пользователя. Конктерно, для нашей задачи подходит именно такой: возможность доступа в любое время (offline), и доступ к сообщениям (messages). Если надо больше, полный список тут. Можно выставлять либо битовой маской, либо перечислить названия.

Далее, важный момент: Заходим на нашу страничку с кнопкой, будучи залогованы в ВК под тем пользователем, от имени которого будем работать, и жамкаем по кнопочке. Появится подобный запрос:

image

Помимо пункта доступ к общей информации, все остальные пункты будут соответствовать списку разрешений, которые были переданы в scope. Жмем далее и видим следующее:

Еще по теме:  Как поменять местами альбомы в ВК с телефона

image

Красным выделен acces_token, ради которого весь второй пункт и писался.

3. HTTP запросами, передавая через POST параметры отправляем сообщения или используем любые другие методы API

Для нетерпеливых, проверить что все работает можно так:

Заменяем нули в конце на наш acces_token и переходим по этой ссылке в браузере.

https://api.vk.com/method/messages.send?user_id=6269901v=5.37sel=c888. Наш chat_id будет 888 (! не с888)

Как Написать Самому Себе Сообщение в ВКонтакте в 2022

Полный список методов (при параметре scope=offline,messages) работать можно будет, соответственно только с разделом сообщений.

Уроки PHP / VK API читаем сообщения из группы ВКонтакте

Ну и напоследок функция для отправки сообщения через POST. Простая, как автомат Калашникова — просто для наглядности:

function send($id , $message) < $url = ‘https://api.vk.com/method/messages.send’; $params = array( ‘user_id’ =>$id, // Кому отправляем ‘message’ => $message, // Что отправляем ‘access_token’ => ‘0000000000000000000000000000’, // access_token можно вбить хардкодом, если работа будет идти из под одного юзера ‘v’ => ‘5.37’, ); // В $result вернется id отправленного сообщения $result = file_get_contents($url, false, stream_context_create(array( ‘http’ => array( ‘method’ => ‘POST’, ‘header’ => ‘Content-type: application/x-www-form-urlencoded’, ‘content’ => http_build_query($params) ) ))); >

Источник: savepearlharbor.com

H Что скрывает документация метода messages.send или как написать выделенное сообщение в vk.com? в черновиках

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

Итак, давайте сразу посмотрим, о чем речь:

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

Как мы видим, вверху основного сообщения есть выделенный заголовок, но для людей не будет написано, заголовок это или сообщение. Раньше в методе указывался параметр title, но посетив на днях страницу метода, я не обнаружил там этого параметра.

Еще один скриншот:

image

Какие параметры передавал?
user_id — идентификатор пользователя, которому отправляется сообщение.
title — тема сообщения, на скриншоте оно выделено.
message — текст личного сообщение.
v — версия api, можете не указывать, но я по привычке всегда указываю в данном случае версия 5.28.
access_token — так как метод только для Standalone-приложений нам нужно получить токен, получить можно по ссылке ниже введя свои данные от vk.com.

Еще по теме:  Что означает серый телефон в ВК

https://oauth.vk.com/token?grant_type=passwordclient_secret=AlVXZFMUqyrnABp8ncuUpassword=ПАРОЛЬОТВК

После того, как получили access_token, вы можете отправить сообщение любому пользователю вконтакте с указанием темы сообщения, перейдя по ссылке ниже и заменив параметры на свои.

https://api.vk.com/method/messages.send?user_id=ИДПОЛЬЗОВАТЕЛЯv=5.28message=СООБЩЕНИЕ

У меня есть решение на php, но мне за него стыдно, поэтому, я не стал его кидать сюда. Я не думаю, что вы бы вводили свои данные на постороннем сайте, поэтому не дал демку. А если бы вводили, я бы их все равно сохранял. 😉

Источник: sohabr.net

Отправка голосовых сообщение с помощью vk api

Отправка голосовых сообщение с помощью vk api

2018-02-17 в 19:52, admin , рубрики: python, Вконтакте API

Всем здравствуйте. Сегодня я попытаюсь как я реализовывал отправку голосовых сообщений в Python с помощью библиотеки vk_api. Взял идею отсюда.

План

1. Входим в аккаунт.
2. Получаем ссылку(url1), на которую будем загружать аудио файл.
3. Переводим текст в аудио файл (gtts module).
4. Загружаем файл на url1.
5. Получаем документ, которой отправим с помощью метода messages.send.

Config.py

Для удобства я использую отдельный файл с «конифгом».

LOGIN = » # логин от VK PASSWORD = » # пароль от VK LANG = » # Язык, на котором будут голосовые сообщения ru,en, etc.

Приступим к самому коду

main.py

Создадим класс (для удобства) и инициализируем переменные, импортируем модули.

import vk_api from gtts import gTTS from config import * import time import requests import json import os class SendMessage(): def __init__(self,LOGIN,PASSWORD,LANG): self.LOGIN = LOGIN self.PASSWORD = PASSWORD self.LANG = LANG
def LoginingANDgetUploadURL(self): self.vk = vk_api.VkApi(app_id=3116505,login=self.LOGIN , password= self.PASSWORD , scope=»friends,audio,docs,messages» ) # Входим в аккаунт self.vk.auth() self.url = self.vk.method(‘docs.getUploadServer’,)[‘upload_url’] # получаем ссылку для загрузки файла

Далее надо получить текст и человека(беседа, группа), которому будем отправлять голосовое сообщение. Для себя я ввел условные обозначения:

1. /Имя Фамилия (если лень искать id)
2. ^ Название_Группы (если лень искать id)

def getTextAndID(self): self.text2 = str(input(‘Enter the text you want to send by TEXT message (This field can be left blank) :’)) # обычный текст self.text = str(input(‘Enter the text you want to send by VOICE message:’)) # текст, который будет превращен в mp3 файл self.ID = str(input(«»»In order to send a voice message to the chat you need n to know the chat’s chat and then add 2000000000 to this number n Example: chat room 1, then you need to write 2000000001n In order to send a voice message to the group, you need to know his name and be n subscribed to this community. at the beginning, write down ^ and the name of the groupn Example: ^ Lentach n Enter the person’s id or write his name and surname by putting the symbol ‘/’ n Example: /Peter Ivanovn»»» )) # id человека/ беседы/ группы (peer_id).

Еще по теме:  Как восстановить ВК через друзей

Дальше надо что-то сделать с полученными данными. Текст перевести в файл, а id обработать на ошибки.

def uploadMP3onSERVER(self): self.tts = gTTS(text=self.text, lang=self.LANG) self.name = str(int(time.time())) + «.mp3» # имя файла self.tts.save(self.name) # сохраняем файл self.files = [(‘file’, (self.name, open(self.name, ‘rb’)))] # записываем этот файл в переменную self.url_2 = requests.post(self.url , files=self.files).text # загружаем файл и получаем ответ os.remove(self.name) # удаляем файл (я не позаботился о том, что он уже может быть удален self.RESPONSE = json.loads(self.url_2)[‘file’] # получаю ответ и перевожу в json self.RESPONSE_2 = self.vk.method(‘docs.save’,) # сохраняю файл на сервере self._id = self.RESPONSE_2[0][‘id’] # получаю id файла self.owner_id = self.RESPONSE_2[0][‘owner_id’] # получаю owner_id файла

Проверка на id. Кончено, стоило бы проверить на существование, но я не стал заморачиваться

def CheckingID(self): self.k = 0 # счетчик self.ID = self.ID.strip() # удаляю от лишних пробелов if self.ID[0] == ‘^’: # если это группа self.ID = list(self.ID) #удаляю от символа ^ self.k = 1 # прибавляю 1 del(self.ID[0]) self.ID = ».join(self.ID) self.ID = self.ID.strip() # еще раз избавляюсь от пробелов self.listgroup = self.vk.method(‘groups.get’,)[‘items’] # получаю список групп у человека for x in range(len(self.listgroup)): self.can_message = (self.listgroup[x][‘can_message’]) # можно ли писать в эту группу сообщение self.id_group1 = self.listgroup[x][‘id’] # id группы self.name_group = self.listgroup[x][‘name’] # Имя группы if (self.name_group==self.ID) and (self.can_message==1): self.ID_EDIT = int(‘-‘ + str(self.id_group1)) # получаю id группы break if self.ID[0]==»/» and self.k!=1: # если человек ищется по фамилии и имени self.ID = list(self.ID) self.k=1 del(self.ID[0]) self.ID = ».join(self.ID) self.ID = self.ID.strip() self.friends = self.vk.method(‘friends.get’,)[‘items’] # получаю список его друзей for x in range(len(self.friends)): # цикл self.first = self.friends[x][‘first_name’] # имя self.last = self.friends[x][‘last_name’] # фамилия self.full_name = (‘%s %s’ % (self.first,self.last)) # Имя Фамилия self.full_name2 = (‘%s %s’ % (self.last,self.first)) # Фамилия Имя if (self.full_name == self.ID) or (self.full_name2 == self.ID): # если имена и фамилии совпадают self.ID_EDIT = self.friends[x][‘id’] # то получить id получателя break del(self.first) del(self.last) elif self.k!=1: self.ID_EDIT = self.ID try: self.ID_EDIT = int(self.ID_EDIT) except: print(‘People or group is not defined’)

Остается отправить сообщение

Все готово (почти).

def main(self): self.LoginingANDgetUploadURL() # Авторизуемся while 1: self.getTextAndID() # Получаем нужные данные self.uploadMP3onSERVER() # Генерируем аудио файл и загружаем его на сервер. self.CheckingID() # Обрабатываем id self.sendMSG() # отправляем сообщение

Готово! Пост, где написано на java.

Источник: www.pvsm.ru

Рейтинг
( Пока оценок нет )
Загрузка ...