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

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