MyChat 2023.5 — обновление Integration API

  1. Новый Integration API
  2. Новая система протоколирования
  3. Разные полезности
  4. Все изменения общим списком + история разработки
  5. Как обновиться на последнюю версию?

1. Новый Integration API


Эта технология уже давно работает в MyChat, через неё работает отправка сообщений из консольной утилиты, связки с разными системами через REST, интеграции с 1С: Предприятие, phpBB и прочее.

Мы основательно обновили документацию, дополнили команды новыми полезными параметрами, о которых нас просили пользователи.

В каждой команде теперь можно использовать опциональный текстовый параметр "context", чтобы проще было анализировать ответы на команды в асинхронных запросах. Сообщения про ошибки дополнили уже готовыми ссылками на справку (прямо в JSON-ответах).

Также в Integration API появилось несколько новых команд: MCIAPI_CS_SetUserInfoByUIN, MCIAPI_CS_SetChannelTopic, MCIAPI_CS_GetChannelInfo и MCIAPI_CS_GetChannelUIDByName.


2. Новая система протоколирования


В MyChat Client переделана система протоколов для совместимости со стандартом SysLog.

Все события теперь делятся на 6 категорий:

[FATAL] = 1

любая ошибка, которая приводит к закрытию службы или приложения для предотвращения потери данных (или дальнейшей потери данных). Это — самые тяжёлые ошибки и ситуации, когда гарантировано повреждение или потеря данных.

[ERROR] = 2

любая ошибка, которая является фатальной для операции, но не для службы или приложения (не удается открыть требуемый файл, отсутствуют данные, указан неправильный пароль и т.д.). Эти ошибки требуют вмешательства администратора или пользователя, но не приводят к фатальным сбоям.

[WARN] = 3

все, что потенциально может вызвать странности приложения, но которые программа автоматически устраняет либо может продолжать работу дальше без фатальных ошибок (например, переключение с основного на резервный сервер, повторная попытка операции, отсутствие дополнительных данных и т. д.).

[INFO] = 4

полезная информация для работы. Информация, которую полезно всегда иметь под рукой, но на которую не обращают внимания в обычных обстоятельствах. Это стандартный уровень протоколирования.

[DEBUG] = 5

расширенная диагностика (IT персонал, системные администраторы и т.д.).

[TRACE] = 6

"трассировка", для подробной глубокой отладки, логов будет очень много.

Чтобы изменить уровень протоколирования — используйте консольную команду loglevel.

Эту систему мы также начали внедрять на сервере, в будущих версиях она будет только расширяться.


3. Разные полезности


В MyChat Client для Windows сделали настройку для разрешения редактирования отправленных своих сообщений в чатах с помощью символа "*" и опцию для выхода в менеджер учётных записей после ручного выхода из программы (Alt+X).

Когда переключаемся в консоль (Ctrl+`), то программа сама меняет раскладку на английскую, чтобы было удобнее набирать команды, не вспоминая, какой язык сейчас активен.

Немного улучшили логику работы фильтра IP адресов на сервере: клиентские ошибки о блокировке IP адресов дополнены, в них добавлена информация о самом IP, который "видит" сервер со своей стороны для облегчения идентификации проблем с исправлением некорректных условий фильтров на сервере.

Если прокрутить мышкой историю сообщений в конференции или в привате вверх, а затем получить входящее сообщение — то история теперь не прокручивается автоматически вниз, как это происходит при отправке собственного сообщения. Читать текст стало удобнее.


4. Все изменения общим списком + история разработки


История разработки версии с комментариями разработчиков

MyChat Client

[+] (win32) настройка для разрешения редактирования отправленных своих сообщений в чатах с помощью символа "*";
[+] (win32) настройка для выхода в менеджер учётных записей после ручного выхода из программы (Alt+X).

[*] (win32) символы перевода строк (CR/LF) в теме конференции теперь автоматически игнорируются;
[*] переделана система протоколов для совместимости со стандартом SysLog;
[*] клиентские ошибки о блокировке IP адресов дополнены, в них добавлена информация о самом IP, который "видит" сервер со своей стороны для облегчения идентификации проблем с исправлением некорректных условий фильтров на сервере.
[*] (win32) если прокрутить мышкой историю сообщений в конференции или в привате вверх, а затем получить входящее сообщение — то история теперь не прокручивается автоматически вниз, как это происходит при отправке собственного сообщения. Читать текст стало удобнее.

[-] (win32) не работало изменение темы конференции с MyChat Client;
[-] (win32) если с помощью Integration API тему конференции сделать пустой, то MyChat Client игнорировал это до переподключения. Исправлено;
[-] (win32) если новым клиентом подключиться к старому серверу, то показывался неправильный текст сообщения об ошибке. Исправлено;
[-] (android) в Android 13 при попытке отправить файл или фото не появлялся запрос на получение разрешения. Исправлено;
[-] (win32) ошибка #0103 при обработке списков запрещённых/разрешённых плагинов, могла выдаваться, когда список запрещённых плагинов пустой. Исправлено;

MyChat Server

[+] (integration api) команда MCIAPI_CS_GetChannelUIDByName для получения UID конференции по её названию;
[+] (integration api) команда MCIAPI_CS_GetChannelInfo для получения названия и топика конференции по её UID;
[+] (integration api) команда MCIAPI_CS_SetChannelTopic для изменения темы конференции;
[+] (integration api) добавлен опциональный параметр "Context" во все команды Integration API;
[+] (integration api) в результат работы команды MCIAPI_CS_AddBBSMessage добавлено поле Expired для получения даты и времени окончания срока действия объявления;
[+] (integration api) функция MCIAPI_CS_SetUserInfoByUIN для изменения полей учётной записи пользователя по его UIN;
[+] (msl) скриптовая функция mGetUserDataAsJSON дополнена параметром BirthdayISO в формате ISO 8601;

[*] (integration api) параметр Type функции MCIAPI_CS_MediaCall переименован в CallType;
[*] (integration api) в результат работы функции MCIAPI_CS_MediaCall добавлены поля UINFrom, UINTo и CallType;
[*] (integration api) в результаты работы функции MCIAPI_CS_AddUserToCommonContacts добавлены поля GroupID и UIN;
[*] (integration api) функция MCIAPI_CS_CommonContactsRebuild удалена, кеши общего списка контактов сейчас обновляются автоматически;
[*] (integration api) значительно усилены контроли на корректность данных, чтобы максимально уменьшить вероятность "падения" сервера при случайных или намеренных отправках некорректных данных в запросах;
[*] (integration api) обновлена документация, добавлены описания около двух десятков новых ошибок;
[*] (integration api) в результаты работы команды MCIAPI_CS_GetLoginToken добавлен параметр UIN;
[*] (integration api) в команде MCIAPI_CS_GetLoginToken параметр Style заменён на AuthType;
[*] (integration api) добавлено поле ID в результаты работы функции MCIAPI_CS_GetWebSupportGroupUsersList;
[*] (integration api) добавлено поле ActualTo в результаты работы команды MCIAPI_CS_SendBroadcastMessage;
[*] (integration api) в результат работы команды MCIAPI_CS_AddBBSMessage добавлено поле Expired для получения даты и времени окончания срока действия объявления(integration api) в параметре UserFrom команды MCIAPI_CS_AddBBSMessage теперь можно указать доменного пользователя (domain\login);
[*] (integration api) параметр Expired в команде MCIAPI_CS_AddBBSMessage теперь указывается в UTC;
[*] (integration api) в команде MCIAPI_CS_RegisterNewUser убраны параметры IP, NetName и ClientType; добавлены контроли на дубликаты ников и email, обработка зарезервированных ников;
[*] (integration api) параметр "Started" в результате команды MCIAPI_CS_GetServerInfo теперь содержит дату и время в ISO-формате (yyyy-mm-dd hh:nn:ss);
[*] (integration api) переделана команда MCIAPI_CS_GetUINByEmail, убраны параметры Domain и AuthType;
[*] (integration api) переделана команда MCIAPI_CS_GetUINByNick, убраны параметры Domain и AuthType, домен при необходимости можно указать в поле Nick ("domain\login");

[-] при изменении темы конференции, если был включен фильтр нецензурных выражений, флаг проверки темы конференции обрабатывался неправильно;
[-] (integration api) в команде MCIAPI_CS_SendBroadcastMessage не возвращался результат ID;
[-] вызов функции "Разбудить пользователя" (F8 в привате) приводил к отключению приложения от сервера. Исправлено.
[-] (support) не работал чат поддержки в браузере, когда он открыт в режиме инкогнито. Исправлено;
[-] ошибка изменения настроек размера кеша встроенного WEB-сервера;
[-] ошибка изменения настроек URL-страницы встроенной рекламы, если она используется.

5. Как обновиться на последнюю версию?


И коммерческая, и бесплатная версии обновляются одинаково. Сначала обновляется сервер, затем — клиенты. В основном, в автоматическом режиме.

Инструкция по обновлению MyChat

Служба поддержки