Константы: group_message, message -> attribute SENDER_DEL = 1 - удалено у отправителя RECEIVER_DEL = 2 - удалено у получателя(для группы у всех) (если я отправитель, то удалить у получателя могу если оно непрочитанно или прошло меньше 30 минут) SENDER_CHANGE = 4 - отправитель отреадактировал, обновить у получателя PUSH = 8 - отправлен push RECEIVER_READ = 16 - получатель прочитал (для группы не используется) SERVICE = 32 - сервисное: добавлен/удален/забанен пользователь MUTE = 64 - “Беззвучное” - Приходит без оповещения ALARM = 128 - “Громкое” - Звук будет даже если беззвучный режим WARNING = 128 - Это сообщение важное и его прочтение обязательно, например запрос прав HTTP_SUCCESS = 200 - успешно HTTP_CREATED = 201 - объект создан HTTP_NO_CONTENT = 204 - нет данных, ответ на запрос пуст HTTP_MOVED_PERMANENTLY = 301 - переадресация на указанный адрес в поле location HTTP_MOVED_TEMPORARILY = 302 - временная переадресация на указанный адрес в поле location HTTP_SEE_OTHER = 303 - HTTP_NEED_SEND_POST_TO_URL = 303 - HTTP_BAD_REQUEST = 400 - неверный запрос HTTP_UNAUTHORIZED = 401 - требуется авторизация HTTP_PAYMENT_REQUIRED = 402 - необходима оплата HTTP_FORBIDDEN = 403 - недоступно HTTP_NOT_FOUND = 404 - объект не найден HTTP_METHOD_NOT_ALLOWED = 405 - метод неподдерживается или не хватет параметров, в error описание проблемы HTTP_NOT_ENOUGH_DATA = 422 - недостаточно данных для выполнения запроса, список недостающих данных передан в поле inputs HTTP_TOO_MANY_REQUESTS = 429 - Превышен лимит запросов HTTP_PERMISSION_DENIED = 550 - нет прав доступа к данному объекту obj=Message&m=send отправить сообщение на устройство или в группу может быть добавлено голосовое, видео или текстовое сообщение Получатель должен: или дать право на получение или быть в общей приватной группе или у получателя отправитель в телефонной книге или отправитель официальный поставщик услуг. входные параметры: text - текст сообщения id - получатель или список получателей если id отрицательное, это чат если id начинается с +, это номер телефона. files или img - ссылка на ранее загруженное временное изображение или файл. м.б. массивом reply_id - id сообщения на которое ответ my_x,my_y - текущие координаты attribute - MUTE/ALARM, см.message -> attribute todo отладить возвращает: HTTP_SUCCESS или HTTP_PERMISSION_DENIED отправляет PUSH: m=message, device_id, device_name, x, y, text, id, img(если есть изображение) если это группа, то дополнительно group=id_группы, id=id_записи, group_name=заголовок, group_img=аватарки группы[big,medium,small] todo защита от спама: при написании первого сообщения в публичный чат, оно уходит только админам, если админы не реагируют, то через 15 минут всем. todo защита от спама: Вариант второй: карма написавшего todo защита от спама: Вариант третий: пометка "это спам", если 3 человека сказали, что это спам, у всех удаляется и пользователь банится или полу/бан, - его сообщения будут уходить только админам todo можно удалить приложение, установить заново и опять насрать в чат todo без ограничений можно отправить тому, у кого я есть в контактах obj=Message&m=ping Проверить доступность получателей по номеру телефона входные параметры: phones - список номеров телефонов возвращает: HTTP_SUCCESS и phones=список номеров телефонов, которым можно отправить сообщение obj=Message&m=attribute удаляет сообщение или устанавливает признак прочтения obj=Message&m=change изменяет сообщение входные параметры: id - сообщение text - измененный текст сообщения возвращает: HTTP_SUCCESS отправляет PUSH: m=message_change, device_id, device_name, text, id obj=Message&m=mark_as_read устанавливает признак прочтения входные параметры: id - сообщение возвращает: HTTP_SUCCESS отправляет PUSH: m=message_read, device_id, device_name, id obj=Message&m=del удаляет сообщение входные параметры: id - сообщения receiver_del=1 - по возможности удалить у получателя возвращает: HTTP_SUCCESS или HTTP_PERMISSION_DENIED - если забанен в группе или чужое сообщение. Админ группы может удалить любое сообщение отправляет PUSH: m=message_del, device_id, device_name, id obj=Message&m=dialogues возвращает список диалогов. todo Архивные группы и устройства не выводятся, но по ним осуществляется поиск входные параметры: p=страница (умолчание =0) perpage=кол-во сообщений на странице (умолчание =30) text - строка для поиска возвращает: HTTP_SUCCESS + items или HTTP_NO_CONTENT items=[mes1,mes2] каждое сообщение: device|group - корреспондент[id,name,img], для группы id<0, message - объект, см. message->list { id - id сообщения, для группы <0, time - создано, device - фактически написавший последнее сообщения[id,name,img] attribute - см. message -> attribute text - текст сообщения answer - id сообщения на который ответили files=[список картинок и документов вложенных в сообщение] info - json с доп. информацией } obj=Message&m=list возвращает список сообщений входные параметры: id - устройство - корреспондент если id отрицательное, это группа warning=1 - показать все непрочитанные важные уведомления от всех p=страница (умолчание =0) perpage=кол-во сообщений на странице (умолчание =30) q - строка для поиска service=1 - показывать все сервисные сообщения, иначе сервисные только за сегодня возвращает: HTTP_SUCCESS + items или HTTP_NO_CONTENT items=[mes1,mes2] каждое сообщение: id сообщения, time - создано, device - отправитель[id,name,img], receiver - получатель[id,name,img], для группы id<0 attribute - см. message -> attribute text - текст сообщения files=[список картинок и документов вложенных в сообщение] answer - id сообщения на который ответили, если <0, то это личный ответ на сообщение из чата todo info -> [доп. информация] TODO если на сервере нет сообщений, запрашивает их на устройстве-кореспонденте obj=Message&m=get возвращает одно сообщение входные параметры: id - сообщениия возвращает: HTTP_SUCCESS + item или HTTP_NO_CONTENT item=[ id сообщения, time - создано, device - отправитель[id,name,img], receiver - получатель[id,name,img], для группы id<0 attribute - см. message -> attribute text - текст сообщения files=[список картинок и документов вложенных в сообщение] answer - id сообщения на который ответили, если <0, то это личный ответ на сообщение из чата todo info -> [доп. информация] TODO если на сервере нет сообщений, запрашивает их на устройстве-кореспонденте ] obj=Message&m=typing todo Я набираю текст. Необходимо отправлять при наборе текста не чаще чем раз в 5 секунд. входные параметры: id - устройство - корреспондент если id отрицательное, это группа возвращает: HTTP_SUCCESS отправляет PUSH: m=message_typing, device_id, device_name если это группа, то дополнительно group=id_группы obj=Message&m=del_all удаляет все сообщения лички для меня или если я админ чата, то весь чат входные параметры: id - id группы или id device возвращает: HTTP_SUCCESS obj=Message&m=abuse жалоба пользователя входные параметры: message или msg или text - текст жалобы rating 0-99 - необязательное from - необязательное email - необязательное или todo message_id - нажали кнопку СПАМ на сообщение с id=message_id obj=Message&m=getForm Отображение формы добавления/редактирования/вступления входные параметры: id - id объекта(не обязательно) template - шаблон (КЛАСС_template), если не передан, то если id>0 возвращает КЛАСС_add, иначе КЛАСС_edit obj=Message&m=get_can_do входные параметры: id - id группы возвращает: HTTP_SUCCESS + can_do[[title, action, icon], [..] ] items=[mes1,mes2]