POST graph.user.messages
Создание новых сообщений и действия над чатами и диалогами
Внимание! POST-запросы должны выполняться с заголовком Content-Type: application/json;charset=utf-8
С помощью данного метода можно совершить ряд действий над чатом / диалог, а именно:
- создавать новые сообщения;
- управлять состоянием чата / диалога;
- управлять участниками чата / диалога;
- оповещать других пользователей о состоянии текущего пользователя.
Пример запроса
?access_token=tkn18YdUJZe:CQABPOJKAKEKEKEKE
Управление состоянием чата
Можно управлять следующими параметрами чата:
- название чата;
- иконка / логотип чата.
Пример запроса для изменения названия чата:
Пример запроса для изменения иконки чата:
Управление участниками
Для участников чата доступны следующие действие:
- добавление участника в чат;
- удаление участника из чата;
- выход из чата
Пример добавления участника в чат:
Пример удаления участника из чата:
Пример запроса для выхода участником из чата:
Создание новых сообщений
Создание новых сообщений - ключевое действие для данного метода.
Чтобы создать новое сообщение, надо передать в POST-payload метода объект сообщения, который соотвествует по структуре объекту сообщения из метода /me/messages/get.
Пример текстового сообщения:
Отправка сообщений с приложениями
Также в данный момент можно отослать сообщение с изображениями и файлами.
Для отправки изображения в чат необходимо выполнить запрос с телом запроса вида (type = IMAGE):
Для отправки файла в чат необходимо выполнить запрос вида:
Подробное описание процесса загрузки и отправки файла в чат описано здесь - graph.user.fileUploadUrl
Состояние текущего пользователя
Текущий пользователь может оповестить других участников о следующих действиях:
- отметить все сообщения как прочитанные - mark_seen;
- пользователь печатает новое сообщение - typing_on;
- пользователь отсылает новый файл (видео, аудио, фото) - sending_photo.
Пример запроса:
Отсылка сообщения пользователям
С помощью данного метода можно произвести отсылку сообщения от группы одному или нескольким пользователям сразу.
Для успешной отсылки сообщения пользователь должен разрешить группе отсылать ему сообщения.
Чтобы отослать такое сообщение, необходимо при вызове метода передать сообщение со следующим содержимым
Каждый пользователь получит это сообщение в своём персональном чате между пользователем и группой.
API в качестве ответа отдаст два списка значений:
- список boolean-значений, определяющих то, было ли успешно отослано сообщение;
- список идентификаторов чатов между пользователями и группой, в которые были отосланы сообщения. Если сообщение не было отослано, то вместо id чата указывается значение null.
Порядок этих значений соответствует порядку указания пользователей в запросе.
Если сообщение нужно отослать не группе пользователей, а одному пользователю, то можно использовать укороченный вариант запроса:
Общий формат сообщения
Аттачменты
Сообщение может содержать как одно, так и несколько (до 5ти) аттачментов следующего типа:
- IMAGE - изображение;
- VIDEO - видео;
- AUDIO - аудиозапись;
- SHARE - решара контента в ОК;
- FILE - файл любого формата;
- CONTACT - контакт пользователя;
- INLINE_KEYBOARD - список кнопок действий;
- LOCATION - место;
- MUSIC - музыкальный трек в ОК;
- CALL - информация о видео-/аудиозвонке;
- PRESENT - подарок в ОК;
- STICKER - стикер.
В зависимости от типа аттачмента у него могут быть разные payload.
IMAGE
Изображение.
Аттачмент можно создать следующими способами:
- указать токен полученный из данных существующего сообщения с аттачментом
- указать токен полученный в процессе загрузки изображения с помощью метода GET graph.user.fileUploadUrl
- указать ссылку на изображение, но только 1 такое изображение может быть в запросе
VIDEO
Видео.
Аттачмент можно создать следующими способами:
- указать токен полученный из данных существующего сообщения с аттачментом
- указать токен полученный в процессе загрузки видео с помощью метода GET graph.user.fileUploadUrl
AUDIO
Аудио.
Аттачмент можно создать следующими способами:
- указать токен полученный из данных существующего сообщения с аттачментом
- указать токен полученный в процессе загрузки аудио с помощью метода GET graph.user.fileUploadUrl
FILE
Файл любого формата.
Аттачмент можно создать следующими способами:
- указать токен полученный из данных существующего сообщения с аттачментом
- указать токен полученный в процессе загрузки аудио с помощью метода GET graph.user.fileUploadUrl
SHARE
Решара какого-либо контента, уже опубликованного в ОК. Это могут быть, например группы, публикации групп и пользователей, изображения и т.д.
Создание аттачмента этого типа через ботапи не поддерживается
CONTACT
Контакт пользователя ОК.
Аттачмент можно создать следующими способами:
- указать идентификатор пользователя
- указать данные электронной визитной карточки vCard
LOCATION
Местоположение пользователя.
Аттачмент можно создать следующим способом:
- указать координаты latitude и longitude (остальные поля опциональны)
MUSIC
Музыкальный трек, загруженный в ОК.
Аттачмент можно создать следующим способом:
- указать идентификатор трека
CALL
Видео-/аудиозвонок в ОК.
Создание аттачмента этого типа через ботапи не поддерживается
PRESENT
В данный момент данный тип приложения не поддерживается
Подарок в ОК.
Создание аттачмента этого типа через ботапи не поддерживается
STICKER
Стикер в ОК.
Аттачмент можно создать следующим способом:
- указать идентификатор стикера
INLINE_KEYBOARD
Список кнопок действий.
В данный момент кнопки с типом REQUEST_GEO_LOCATION и REQUEST_CONTACT не поддерживаются на всех платформах ОК
Список кнопок (или т.н. клавиатура) это достаточно сложная структура, позволяющая производить действия по нажатию на кнопку, а не через ручную отправку сообщения.
Список кнопок представляет из себя двумерный массив объектов. Можно указывать как по одной кнопке на каждой строке, так и по несколько кнопок в одну строку.
Есть несколько видов кнопок (параметр type):
- CALLBACK - стандартный вид кнопки, предполагает, что по нажатию от лица пользователя будет отправлено сообщение;
- LINK - кнопка-ссылка, по нажатию на неё открывается указанная ссылка;
- REQUEST_CONTACT - запрос шаринга контакта пользователя;
- REQUEST_GEO_LOCATION - запрос шаринга локации пользователя.