АТИ Мессенджер
«АТИ Мессенджер» (далее Мессенджер) — сервис для обмена сообщениями, документами, файлами между пользователями ATI.SU. С помощью мессенджера можно договориться о перевозке, отправить фото, электронные документы.
Возможности Мессенджера
- Создание диалогов между пользователями ATI.SU
- Создание диалогов из приложения АТИ Водитель
- Отправка текстовых сообщений
- Отправка файлов, изображений, документов ATI.SU, геометок
- Общение в открытых и закрытых групповых чатах
- Общение с подписчиками в каналах
Типичные сценарии использования мессенджера
Диалог
- Создать диалог по конкретному грузу или из интерфейса мессенджера с определенным пользователем
- Отправить сообщение
- Закрепить диалог
- Заблокировать/разблокировать пользователя
- Скрыть диалог
Групповой чат и канал
- Создать групповой чат или канал
- Отправить приглашения участникам ATI.SU
- Вступить в чат по приглашению
- Исключить участника
API для работы с АТИ Мессенджером
API Мессенджера предоставляет набор методов, необходимых для получения списка чатов пользователя ATI.SU, получения сообщений в чате, отправки сообщения в чат и другие. Благодаря этому API можно организовать интеграцию между мессенджером и сторонней системой.
Используемые термины
Чат - абстрактная сущность чата в мессенджере, любой чат имеет одну или более подписку.
Подписка - связка пользователя и конкретного канала. Диалог, например, состоит из 2-х подписок, групповой чат - из N подписок. Список чатов, отображающийся в интерфейсе, есть список подписок. Подписка так же содержит опции пользователя относительно этого чата (скрыт, заблокирован, закреплен и т.п.).
Диалог - чат между двумя участниками; диалог нельзя удалить, только скрыть.
Групповой чат - чат между группой участников, пользователи вступают чат по приглашению; в закрытых чатах приглашать могут только администраторы, в открытых - все участники.
Администратор - создатель и владелец группового чата. В закрытых группах только администратор может приглашать пользователей в чат.
Канал - групповой чат, писать в который может только администратор.
История - список сообщений чата.
Хвост - последнее сообщение в истории (отображается в каждом чате из списка).
Пользователь ATI.SU - участник ATI.SU, обладающий лицензией и имеющий доступ ко всем сервисам ATI.SU.
Псевдопользователь(АТИ Водитель) - пользователь чата, не являющийся полноценным участником ATI.SU, но имеющий возможность быть участником как диалога, так и группового чата в мессенджере.
ID аккаунта ATI.SU - уникальный идентификатор аккаунта в ATI.SU, для АТИ водителя имеет формат driver_{номер телефона}.
User ID - {ID аккаунта ATI.SU}.{ID контакта}, у АТИ водителя контакт ID контакта всегда 0.
АТИ код - код участника ATI.SU отображающийся в шапке сайта и в профиле участника, может совпадать с ID аккаунта. Код АТИ Водителя совпадает с ID.
Структура подписки
Подписка является ключевой сущностью в чате, большинство АПИ методов так или иначе отдают объект подписки в качестве ответа. Некоторые поля в теле подписки могут дублироваться или казаться избыточными, так же типы некоторых полей могут вызывать вопросы - все это связано с поддержкой старых версий, в новых версиях эти рудименты исчезнут.
Подписки диалогов и групповых чатов выглядят похоже, но имеют некоторые отличия.
| Имя поля | Описание | Тип | Пример | Диалог | Группа | Обязательное поле |
|---|---|---|---|---|---|---|
| id | ID чата | string | 28ba1e3b16974c32989b1а | да | да | да |
| channel_type | Тип чата | string | group | да | да | да |
| name | Название чата | string | my awesome group | да | да | да |
| description | Описание чата | string | my awesome group description | да | да | да |
| owner | User ID владельца чата | string | 890386.0 | да | да | да |
| user | User ID владельца подписки | string | 1423414.0 | да | да | да |
| ctime | Дата и время создания чата (GMT+3) | string | 2021-01-22T11:25:15+00:00 | да | да | да |
| utime | Дата и время последнего обновления подписки (GMT+3) | string | 2021-03-24T08:51:53+00:00 | да | да | да |
| dts | UTC Timestamp последнего прочитанного пользователем сообщения | integer | 1611314906749707 | да | нет | да |
| uts | UTC Timestamp последнего обновления подписки | integer | 1622639302000000 | да | да | да |
| del_ts | UTC Timestamp последней очистки истории | integer | 1622639302000000 | да | нет | нет |
| ts | UTC Timestamp последнего сообщения | integer | 1622639302435456 | да | да | да |
| unread | Количество непрочитанных сообщений в чате | string | 0 | да | да | да |
| partner | АТИ Код партнера | string | 777 | да | нет | да |
| partner_full | АТИ Код партнера с ID контакта | string | 777.0 | да | нет | да |
| partner_id | ID Аккаунта АТИ партнера | string | 2716044 | да | нет | да |
| users | Список {АТИ код}.{ID контакта} участников чвтв | list | [“14234140.0”, “777.0”] | да | нет | да |
| count | Кол-во участников | integer | 3 | нет | да | да |
| invite | Флаг подписки с приглашением | bool | true | нет | да | нет |
| removed | Флаг подписки на удаленный канал | bool | true | нет | да | нет |
| excluded | Флаг исключенной подписки | bool | true | нет | да | нет |
| pinned | Флаг прикрепленной подписки | string | 1 | да | да | нет |
| locked | Флаг подписки с заблокированным юзером | string | 1 | да | нет | нет |
| complaint | ID пожаловавшегося пользователя | string | 1423414.0 | да | нет | нет |
| complaint_reason | Причина блокировки | string | spam | да | нет | нет |
| tail | Хвост чата | dict | {…} | да | да | нет |
Описание методов
Чаты
Создание чата post /messenger/1.1/chats/
тип чата
имя групп.чата/собеседника
описание
{ID аккаунта партнера}.{id контакта} (только для типов dialog, ati_driver)
{код в ATI.SU партнера}.{id контакта} (только для типов dialog, ati_driver)
открытый/закрытый (только для типов channel, group)
alias'ы (коды в ATI.SU) партнеров с contact_id (только для типов channel, group)
curl 'https://api.ati.su/messenger/1.1/chats/' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json' \ --data-raw '{"channel_type":"group","name":"Моя группа","is_open":true,"description":"Описание моей группы"}'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("POST", "https://api.ati.su", "/messenger/1.1/chats/", "{""channel_type"":""group"",""name"":""Моя группа"",""is_open"":true,""description"":""Описание моей группы""}"); 200 Данные подписки
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
400 Ошибка валидации
Для создания диалогов и групповых чатов используется общий метод.
Диалог:
- При добавлении диалога создастся 2 подписки, но подписка собеседника будет скрыта пока в нее не напишут.
- Между двумя одинаковыми пользователями возможен только один диалог, при повторном создании будет возвращена та же самая подписка.
- Диалог можно создать двумя способами: используя ID аккаунта либо АТИ код, в зависимости от способа необходимо использовать поля id и ati_id соответственно. Не стоит указывать оба поля при запросе.
Группа, канал:
- По умолчанию при добавлении группы создастся чат с одним юзером в качестве участника (в ответ вернется его подписка).
- Можно создать чат и одновременно пригласить нескольких пользователей указав их списком в поле
members.
Обновление мета-данных группового чата put /messenger/1.1/chats/{chat_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
имя групп.чата
описание
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/' \ -X 'PUT' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json' \ --data-raw '{"name":"Новое название группы","description":"Новое описание моей группы"}'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("PUT", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/", "{""name"":""Новое название группы"",""description"":""Новое описание моей группы""}"); 200 Обновленные данные подписки
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
400 Ошибка валидации
403 Только владелец канала/группы может выполнять это действие
404 Чат не найден
Метод используется для изменения имени или описания группового чата администратором.
Удаление группового чата владельцем delete /messenger/1.1/chats/{chat_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/' \ -X 'DELETE' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("DELETE", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/"); 204 Канал удален
403 Пользователь не является владельцем группового чата
404 Не найден групповой чат или пользователь в этом чате
При удалении канала или группы все подписки участников будут помечены флагом removed.
Подписки
Получение всех подписок пользователя get /messenger/1.2/subscriptions/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
type | string | query | Необязательный тип подписок (channel, dialog, group, groups) Пример: channel |
limit | integer | query | По сколько чатов выводить на страницу Пример: 0 |
before | integer | query | Перед каким временем обновления чата (utime) в формате unix time (микросекунды) необходимо загружать список чатов Пример: 1580326210000000 |
after | integer | query | После какого времени обновления чата (utime) в формате unix time (микросекунды) необходимо загружать список чатов Пример: 1580326210000000 |
curl 'https://api.ati.su/messenger/1.2/subscriptions/' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.2/subscriptions/"); 200 Подписки пользователя
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
Метод возвращает постраничный список подписок.
Получение информации о подписке get /messenger/1.1/subscriptions/{chat_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id чата Пример: string |
curl 'https://api.ati.su/messenger/1.1/subscriptions/{chat_id}/' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.1/subscriptions/{chat_id}/"); 200 Подписки пользователя
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
404 Канал не найден
Участники групповых чатов
Получение списка участников get /messenger/1.1/chats/{chat_id}/users/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
start | integer | query | Начало пагинации Пример: 0 |
end | integer | query | Конец пагинации Пример: 0 |
with_invite | boolean | query | Включить в список приглашенных пользователей Пример: false |
invited | boolean | query | Вернуть только приглашенных пользователей Пример: false |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/users/"); 200 Список участников
id юзера (c contact_id)
alias юзера (без contact_id)
имя юзера
название компании
email юзера
факс юзера
icq юзера
номер мобильного телефона юзера
номер телефона юзера
skype юзера
403 У вас нет прав. Только администратор может совершать это действие.
404 Канал не найден, Пользователь в групповом чате не найден
С помощью параметров метода можно запрашивать как приглашенных так и текущих участников группового чата.
Приглашение пользователя в групповой чат post /messenger/1.1/chats/{chat_id}/users/{user_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
user_id
обязательный
| string | path | firm_id юзера с контактом Пример: string |
ati_id | boolean | query | Использовать алиас (код в ATI.SU) с контактом в качестве user_id Пример: false |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/{user_id}/' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("POST", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/users/{user_id}/"); 200 Подписка добавленного пользователя
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
400 Пользователь не является владельцем группового чата, Канал был удален, Код пользователя задан в неверном формате
403 У вас нет прав. Только администратор может совершать это действие.
404 Группа не найдена
При вызове метода у приглашенного пользователя создастся подписка с флагом invite.
Исключение участника из группового чата delete /messenger/1.1/chats/{chat_id}/users/{user_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
user_id
обязательный
| string | path | id пользователя Пример: string |
ati_id | boolean | query | Использовать алиас (код в ATI.SU) с контактом в качестве user_id Пример: false |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/{user_id}/' \ -X 'DELETE' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("DELETE", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/users/{user_id}/"); 204 Подписка удалена
400 Код пользователя задан в неверном формате
403 Пользователь не является владельцем группового чата, Групповой чат был удален
404 Канал не найден
При вызове метода у исключенного пользователя в подписку добавится флаг excluded.
Принятие приглашения в групповой чат patch /messenger/1.1/subscriptions/{chat_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id групповой чат Пример: string |
curl 'https://api.ati.su/messenger/1.1/subscriptions/{chat_id}/' \ -X 'PATCH' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("PATCH", "https://api.ati.su", "/messenger/1.1/subscriptions/{chat_id}/"); 204 Приглашение принято
400 У пользователя нет приглашения
404 Канал не найден
После принятия приглашения флаг invite должен пропасть из подписки.
Удаление себя из группового чата или удаление приглашения delete /messenger/1.1/subscriptions/{chat_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
curl 'https://api.ati.su/messenger/1.1/subscriptions/{chat_id}/' \ -X 'DELETE' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("DELETE", "https://api.ati.su", "/messenger/1.1/subscriptions/{chat_id}/"); 204 Подписка на групповой чат удалена
403 Нельзя удалить администратора группового чата
404 Канал не найден
При вызове метода подписка удалится из базы данных.
Сообщения
Получение истории сообщений Возвращает список сообщений из эластика get /messenger/1.1/chats/{chat_id}/history/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id чата Пример: string |
before | integer | query | timestamp, до которого вернуть список сообщений (с пагинацией) Пример: 1553154991842130 |
num | integer | query | Ограничить количество выдаваемых сообщений Пример: 10 |
since | integer | query | timestamp, с которого вернуть список сообщений (с пагинацией) Пример: 1553154991842130 |
with_ts | boolean | query | включить в ответ timestamp прочитанности последнего сообщения Пример: 1 |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/history/' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/history/"); 200 список сообщения
id чата
доставлено/недоставлено
таймстемп (isoformat) сообщения
текст сообщения
таймстемп (unix) сообщения
id сообщения
id отправителя, отстутствует в системных событиях
тип системного события
Имя отправителя сообщения
ссылка на документ в атидоках
id загруженного в filestorage файла
Метод возвращает постраничный список сообщений.
Отправка сообщения post /messenger/1.2/chats/{chat_id}/messages
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id чата Пример: string |
Прикреплённый файл
Прикреплённая картинка
curl 'https://api.ati.su/messenger/1.2/chats/{chat_id}/messages' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: multipart/form-data' \ -F 'text={text}' \ -F 'image_height={image_height}' \ -F 'image_width={image_width}' \ -F 'geo_longitude={geo_longitude}' \ -F 'geo_latitude={geo_latitude}' \ -F 'geo_zoom={geo_zoom}' \ -F 'file=@{file}' \ -F 'image=@{image}'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("POST", "https://api.ati.su", "/messenger/1.2/chats/{chat_id}/messages"); 200 json сообщения
id чата
доставлено/недоставлено
таймстемп (isoformat) сообщения
текст сообщения
таймстемп (unix) сообщения
id сообщения
id отправителя, отстутствует в системных событиях
тип системного события
Имя отправителя сообщения
ссылка на документ в атидоках
id загруженного в filestorage файла
Метод отправки сообщения. Поддерживаются текстовые сообщения, сообщения с картинкой или файлом, а также сообщения с геометкой. Одно сообщение должно содержать либо текст, либо одно вложение (картинку или файл), либо геометку.
Для отправки картинки обязательно прислать одновременно image, image_height и image_width.
Для отправки геометки обязательно прислать одновременно geo_longitude и geo_latitude.
Получение прикреплённого к сообщению изображения get /messenger/1.2/messages/{message_id}/image
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
message_id
обязательный
| string | path | id сообщения Пример: string |
height | integer | query | требуемая высота картинки (по умолчанию используется исходная высота) Пример: 0 |
width | integer | query | требуемая ширина картинки (по умолчанию используется исходная ширина) Пример: 0 |
biggest_side | integer | query | требуемый размер наибольшего измерения картинки (по умолчанию используется исходный размер) Пример: 0 |
curl 'https://api.ati.su/messenger/1.2/messages/{message_id}/image' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.2/messages/{message_id}/image"); 200 Картинка, прикреплённая к сообщению
Получение изображения, прикреплённого к сообщению. Работает только для сообщений, у которых image_id не равен null. Использовать image_id не нужно: достаточно передать идентификатор сообщения message_id.
Получение прикреплённого к сообщению файла get /messenger/1.2/messages/{message_id}/file
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
message_id
обязательный
| string | path | id сообщения Пример: string |
curl 'https://api.ati.su/messenger/1.2/messages/{message_id}/file' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.2/messages/{message_id}/file"); 200 Файл, прикреплённый к сообщению
Получение файла, прикреплённого к сообщению. Работает только для сообщений, у которых file_id не равен null. Использовать file_id не нужно: достаточно передать идентификатор сообщения message_id.
Прочие методы
Изменение настроек подписки Скрытость(hidden), запиненность(pin) в значениях true/false. post /messenger/1.1/chats/{chat_id}/settings/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id чата Пример: string |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/settings/' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json' \ --data-raw '{"pin":true,"hidden":false}'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("POST", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/settings/", "{""pin"":true,""hidden"":false}"); 200 Возвращает объект подписки с обновленными настройками
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
400 Ошибка валидации
403 Скрыть канал можно только после принятия приглашения
404 Канал не найден
Изменение настроек подписки (скрыть/закрепить).
Приглашение нескольких пользователей в групповой чат post /messenger/1.1/chats/{chat_id}/users/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id группового чата Пример: string |
ati_id | boolean | query | Использовать алиасы (коды в ATI.SU) с контактами в качестве user_id в поле members Пример: false |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/' \ -X 'POST' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json' \ --data-raw '{"members":["string"]}'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("POST", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/users/", "{""members"":[""string""]}"); 200 Подписки добавленных пользователя
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
400 Пользователь не является владельцем группового чата, Канал был удален, Код пользователя задан в неверном формате
403 У вас нет прав. Только администратор может совершать это действие.
404 Группа не найдена
По умолчанию используются id-шники аккаунтов, но если флаг ati_id выставлен в true, будут использованы именно коды.
Удаление сообщения из диалога Использует timestamp либо id для идентификации сообещния delete /messenger/1.1/chats/{chat_id}/messages/{ts_or_id}/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id чата Пример: string |
ts_or_id
обязательный
| — | path | timestamp либо id удаляемого сообщений Пример: [1553154991842130,"5b42d88fea1cb745d23db8d7b9de11da5473ad61"] |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/messages/{ts_or_id}/' \ -X 'DELETE' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("DELETE", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/messages/{ts_or_id}/"); 200 Возвращает объект подписки с обновленным tail и ts
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
Удалять сообщения можно в диалогах и только если они не прочитаны собеседником. В качестве идентификатора можно использовать как непосредственно id сообщения так и его временную метку в UTC.
Очистка истории delete /messenger/1.1/chats/{chat_id}/history/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
chat_id
обязательный
| string | path | id чата Пример: string |
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/history/' \ -X 'DELETE' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("DELETE", "https://api.ati.su", "/messenger/1.1/chats/{chat_id}/history/"); 200 Возвращает объект подписки с обновленным tail и ts
id чата
тип чата
Название чата (имя собеседника)
время создания чата (iso)
время последнего изменения (iso)
создатель чата
текст сообщения (в случае картинки или файла - название объекта)
таймстемп (unix) сообщения
id отправителя, отстутствует в системных событиях
имя отправителя сообщения
имя файла (если есть)
имя картинки (если есть)
описание чата (для диалогов - название фирмы)
alias участника (c contact_id)
id партнера (без contact_id)
id партнера (c contact_id)
alias партнера (c contact_id)
количество учасчтников группового чата (для диалогов - null)
timestamp последней очистки сообщений
количество непрочитанных сообщений
id юзера (c contact_id)
timestamp последнего изменения
короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа
Очистить переписку можно только в диалогах, причем история изменится лишь для владельца подписки, у собеседника все останется как есть. При вызове метода в подписку добавится поле del_ts, содержащее временную метку, начиная с которой сообщения не будут возвращаться в методе history.
Получение счетчика чатов с непрочитанными сообщениями get /messenger/1.1/inbox/
curl 'https://api.ati.su/messenger/1.1/inbox/' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.1/inbox/"); 200 Счетчик непрочитанных
Метод вернет количество чатов с непрочитанными сообщениями.
Получение количества непрочитанных чатов по типам (все/диалоги/групповые чаты) get /messenger/1.1/subscriptions/unread/
| Параметр | Тип | Расположение | Описание |
|---|---|---|---|
with_messages | string | query | Если true, то возвращает дополнительно количество непрочитанных сообщений. Пример: string |
curl 'https://api.ati.su/messenger/1.1/subscriptions/unread/' \ -X 'GET' \ -H 'Authorization: Bearer {authorizationToken}' \ -H 'Content-Type: application/json'Процедура ВыполнитьHTTPЗапрос(МетодЗапроса, АдресХоста, АдресРесурса, ТекстЗапроса) Экспорт ЗаголовкиHTTP = Новый Соответствие(); ЗаголовкиHTTP.Вставить("Accept", "application/json"); ЗаголовкиHTTP.Вставить("Content-Type", "application/json"); ЗаголовкиHTTP.Вставить("Authorization", "Bearer {authorizationToken}"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, ЗаголовкиHTTP); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстЗапроса, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); ЗащищенноеСоединениеSSL = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows, Новый СертификатыУдостоверяющихЦентровWindows);
Соединение = Новый HTTPСоединение(АдресХоста,,,,,, ЗащищенноеСоединениеSSL);
Попытка Ответ = Соединение.ВызватьHTTPМетод(МетодЗапроса, HTTPЗапрос); Сообщить("Код ответа: " + Ответ.КодСостояния); Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8")); Исключение Сообщить("Ошибка выполнения запроса!" + Символы.ПС + ОписаниеОшибки()); КонецПопытки;КонецПроцедуры
ВыполнитьHTTPЗапрос("GET", "https://api.ati.su", "/messenger/1.1/subscriptions/unread/"); 200 Данные по количеству непрочитанных чатов по типу
Метод аналогичный inbox, но счетчики будут разбиты по типам чатов.