Plugin:ICQ/ru: Difference between revisions

From Miranda NG
Plugin:ICQ/ru
Jump to navigation Jump to search
(Created page with "Новый протокол WIM позволяет отправлять эти статусы, но сервер не присылает их Миранде от других...")
No edit summary
 
(160 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>{{PluginCard}}
<languages/>{{PluginCard}}
Поддержка протокола ICQ в Miranda NG.
 
Поддержка протокола [https://icq.com ICQ-WIM] в Miranda NG.


== Известные проблемы ==
== Известные проблемы ==


Серверы ICQ прекратили поддержку старого протокола. Мы реализовали поддержку нового протокола, но пока он лишён многих функций.
* Жители Украины могут испытывать проблемы при подключении, поскольку некоторые адреса, принадлежащие Mail.ru, заблокированы в Украине. Используйте прокси или VPN для обхода блокировок.
 
== Различия между старым и новым протоколами ==
 
{{TNT|Important| Серверы ICQ прекратили поддержку старого протокола OSCAR. Мы написали поддержку нового протокола WIM, но некоторые возможности в нём пока отсутствуют.}}
 
[[wikipedia:ru:OSCAR|OSCAR]] — протокол, доставшийся Mail.ru при покупке ICQ. Это то, что многие годы называли «ICQ». Он был реализован во всех альтернативных клиентах.
 
WIM — протокол, который в Mail.ru разработали на смену OSCAR. Он проще, надёжнее и поддерживает многое из того, что OSCAR в принципе не умеет. На данный момент он реализован в официальном клиенте ICQ 10, Miranda NG, [https://code.highspec.ru/Mikanoshi/RnQ R&Q] и [https://play.google.com/store/apps/details?id=com.tomclaw.mandarin Mandarin IM]. В некоторых аспектах протоколы полностью отличаются друг от друга.
 
=== Сравнение возможностей старого и нового протоколов в Miranda NG ===
 
{| class="wikitable"
|-
! || OSCAR !! WIM
|-
|-
|Вход
|UIN+пароль
|UIN+пароль, телефон+SMS-код
|-
|Беседы
|✔
|✔
|-
|Групповые чаты
|&minus;
|лишь основные функции
|-
|Хранение списка контактов (ростера)
|на сервере или локально
|синхронизируется с сервером при каждом подключении
|-
|Аватары
|максимум 60x60 пикселей
|большие аватары
|-
|Отправка контактам, находищимся «не в сети»
|✔
|✔
|-
|«Облачная» история (подгрузка истории с сервера)
|&minus;
|✔
|-
|Передача файлов
|✔
|✔ (передача напрямую между пользователями не поддерживается сервером)
|-
|Стикеры
|&minus;
|✔ (приём их как обычных файлов)
|-
|Уведомления о наборе текста
|✔
|✔
|-
|Управление группами (удаление, создание, переименование)
|✔
|✔
|-
|Просмотр сведений о пользователе
|✔
|лишь некоторые данные, доступные в [https://icq.com/login личном кабинете]
|-
|Изменение сведений о себе
|✔
|✔
|-
|Статусы
|все статусы
|сервер поддерживает лишь статусы «В сети» и «Не в сети»
|-
|Невидимость
|✔
|✔ (выборочная невидимость только для определённых контактов не поддерживается сервером)
|-
|XСтатусы
|✔
|не поддерживаются сервером
|-
|Запросы авторизации (другие пользователи не могут добавить меня без разрешения)
|✔
|только в [https://agent.mail.ru MRA]
|-
|Пометка сообщений прочитанными
|✔
|✔
|-
|Получение информации о том, когда собеседник прочитал сообщение
|&minus;
|✔ (с плагином {{Plugin|MessageState}})
|-
|Определение клиента собеседника
|✔
|только некоторые сторонние клиенты (с помощью капсов)
|}


Жители Украины могут испытывать проблемы при подключении, поскольку некоторые адреса, принадлежащие Mail.ru, заблокированы в Украине. Используйте прокси и VPN для обхода блокировок.


== Решение проблем ==
== Решение проблем ==
=== Не удаётся подключиться к ICQ ===
Если вы используете более раннюю версию, чем [[История изменений/0.95.10.1|v0.95.10.1]], обновитесь до этой или более новой версии.


=== Неправильный пароль ===
=== Неправильный пароль ===
Line 16: Line 116:
До версии 0.95.4 Miranda не поддерживала пароли ICQ длиннее 8-ми символов. Если вы когда-либо ввели длинный пароль, Miranda сохранила его в базе целиком, но использовала только первые 8 символов. Серверы ICQ тоже не поддерживали длинные пароли. Теперь же максимальная длина пароля увеличена до 16 символов включительно. Соответствующие изменения внесены в плагин Миранды.
До версии 0.95.4 Miranda не поддерживала пароли ICQ длиннее 8-ми символов. Если вы когда-либо ввели длинный пароль, Miranda сохранила его в базе целиком, но использовала только первые 8 символов. Серверы ICQ тоже не поддерживали длинные пароли. Теперь же максимальная длина пароля увеличена до 16 символов включительно. Соответствующие изменения внесены в плагин Миранды.


[[История изменений/0.95.5|Miranda v0.95.5]] отправляет ваш когда-то введённый длинный пароль целиком, и сервер справедливо считает его неправильным.
[[История изменений/0.95.5|Miranda 0.95.5]] отправляет ваш когда-то введённый длинный пароль целиком, и сервер справедливо считает его неправильным.


Решение: откройте {{Menu|Настройки|Сеть|<Имя_учётной_записи>}} и введите в поле «Пароль» '''первые 8 символов''' вашего пароля.
Решение: откройте {{Menu|Настройки|Сеть|<Имя_учётной_записи>}} и введите в поле «Пароль» '''первые 8 символов''' вашего пароля.


Чтобы использовать пароль длиннее 8-ми символов, измените его на [https://icq.com сайте ICQ].
Чтобы использовать пароль длиннее 8-ми символов, измените его на [https://icq.com/change-password/ сайте ICQ].


Развитие некоторых программ (QIP 2005, Jasmine IM для Android) давно прекращено, поэтому такие программы не поддерживают длинные пароли. Если вам необходимо их использовать, ограничьте длину пароля 8 символами.
=== Ошибка '"statusText":"Invalid Request. statusDetailCode 1015", "statusDetailCode":1015' в сетевом логе ===


=== Контакт всегда «В сети с ICQ Mobile», но, на самом деле, он не в сети и не доходят оффлайн-сообщения ===
В большинстве случаев виной тому рассинхронизация времени между вашим компьютером и сервером. Проверьте актуальность и точность системного времени. Синхронизируйте время в настройках операционной системы. Проверьте часовой пояс, а также опцию перехода на зимнее/летнее время. Некоторые пользователи сообщают, что проблема решилась после смены часового пояса на похожий (например, «UTC+03 Москва» → «UTC+03 Минск»).
<noinclude>{{Todo|Describe the problem / workaround better here.}}</noinclude>
* [https://forum.miranda-ng.org/index.php?topic=4719.msg19508#msg19508 Подробное объяснение]{{RefLang|cs}}
* [https://forum.miranda-ng.org/index.php?topic=4718.msg19509#msg19509 Тема на форуме]{{RefLang|en}}


Как исправить:
=== Как получить пароль для свежезарегистрированной учётной записи ===
* войти на [https://icq.com сайт ICQ] (именно на сайт, а не в веб-клиент!)
* нажать на своё имя, выбрать пункт меню «Мой профиль», а затем перейти по ссылке «Список сессий»
* нажать «Закрыть все сессии»
* выйти с сайта.


=== Как узнать свой UIN ===
Для новых пользователей существует только одна возможность входа в учётную запись — получить одноразовый код с помощью SMS. Воспользуйтесь кнопкой "Вход/регистрация по номеру телефона" в настройках учётной записи.


* войти на [https://icq.com сайт ICQ] (именно на сайт, а не в веб-клиент!)
=== При первом запуске с новым протоколом значки некоторых контактов в списке контактов стали бледными ===
* нажать на своё имя и посмотреть свой UIN
* выйти с сайта.


=== Некоторые клиенты (Pidgin, QIP 2012) показывают, что Miranda находится в сети, даже если Miranda не запущена ===
Эти контакты у вас хранились локально в Миранде. По какой-то причине вы никогда не добавляли их в серверный список контактов, поэтому их там нет. Такие контакты Миранда помечает, как NotOnList, и выкидывает в самый низ списка контактов, рисуя их по-другому. При следующем запуске они будут стёрты, что может повлечь пропажу истории. Необходимо сразу же добавить их в постоянный список (пункт в контекстном меню контакта, либо открыть окно беседы и нажать зелёный "плюсик").


(либо показывают, что Miranda в сети, если в Miranda установлен статус «Отошёл»)
Почему у некоторых контактов имя изменилось на «[deleted]»?


Такие клиенты работают по старому протоколу OSCAR, который неверно показывает статус клиентов, использующих новый протокол WIM.
Ответ технической поддержки ICQ: ''Данный аккаунт был удален за длительное неиспользование. Восстановить его невозможно''.


=== Миранда не получает статусы «Отсутствую», «Недоступен», «Занят», «Не беспокоить» от других альтернативных клиентов (например, от Pidgin или QIP 2012) ===
=== Контакты, использующие официальный клиент, постоянно входят в сеть и выходят из неё ===


Новый протокол WIM позволяет отправлять эти статусы, но сервер не присылает их Миранде от других клиентов. Указанные альтернативные клиенты используют старый протокол OSCAR, поэтому могут принимать такие статусы.
Официальный клиен ICQ 10 ставит статус «Не в сети» после 10-15 секунд бездействия. Когда пользователь взаимодействует с клиентом, клиент ставит статус «В сети». Например, точно так же себя ведёт клиент Telegram.


=== Контакты, использующие официальный клиент, постоянно входят в сеть и выходят из неё ===
Это поведение пришло на десктоп с мобильных устройств. Дело в том, что когда вы получаете те или иные уведомления, которые отображаются на экране блокировки или в шторке, то нужно понимать, что приходят они не напрямую от сервиса или программы которой вы пользуетесь (например, WhatsApp или ВКонтакте). Получение и отображение таких сообщений осуществляется отдельной службой, которая получает их с помощью серверов производителей ОС (Google, Apple и Microsoft соответственно).
 
Вот как это работает. Представим, что вы пользуетесь Android и вам решил позвонить ваш знакомый в WhatsApp. Он выбирает ваш контакт в списке, нажимает иконку звонка после чего видит анимацию соединения. В этом время его приложение передаёт вызов на сервер WhatsApp. Который, обработав вызов, делает запрос к серверу Google. В этом запросе, если перевести на понятный нам язык, будет что-то вроде «отобрази на устройстве с приложением имеющим ID такой-то уведомление о входящем звонке с такого-то контакта».
 
Сделано это для того, чтобы экономить заряд батареи мобильного устройства. Согласитесь, что схема «телефон периодически соединяется с серверами Google/Apple» намного энергоэффективнее схемы, при которой каждый мессенджер (а их на телефоне зачастую несколько) постоянно работал бы, поддерживая соединение со своим сервером.
 
Десктопный клиент же просто копирует поведение мобильного.
 
=== Как узнать, кто из собеседников реально недоступен ===
 
Если собеседник упорно желает использовать официальный клиент, можно воспользоваться плагином {{Plugin|SeenPlugin|Last seen}}. Плагин получает от протокола время последней активности (когда собеседник в последний раз взаимодействовал со своим официальным клиентом) и выводит его в контекстном меню контакта.
 
Кроме того, {{Plugin|Clist_modern|Modern contact list}} может взять эту информацию у {{Plugin|SeenPlugin|Last seen}} и показать прямо в списке контактов. Для этого нужно включить настройку  {{Menu|Настройки|Список контактов|Элементы строк|Вторая строка (или «Третья строка»)|Статусное сообщение}}.
 
Ещё эту информацию можно вывести в подсказку {{Plugin|Tipper}}. В разделе {{Menu|Настройки|Тонкая настройка|Подсказки|Содержимое|Подстановки}} необходимо создать следующие подстановки:
 
<pre style="overflow:auto;">
Метка: lastseen_ago
Модуль: SeenModule
Преобразование: <префикс>день|месяц|год|часы|мин|сек - в разницу времени
</pre>
 
<pre style="overflow:auto;">
Метка: lastseen_date
Модуль: SeenModule
Преобразование: <префикс>день|месяц|год - в дату
</pre>
 
<pre style="overflow:auto;">
Метка: lastseen_time
Модуль: SeenModule
Преобразование: <префикс>часы|минуты|секунды - во время
</pre>
 
На той же вкладке создать следующий «Элемент»:
 
<pre style="overflow:auto;">
Метка: Last seen:
Значение:  %lastseen_date% @ %lastseen_time% (%lastseen_ago% назад)
Показывать только для контактов
</pre>
 
Кроме того, в настройках протокола ICQ вы можете указать таймауты, в течение которых Миранда будет показывать контакт как находящийся в сети.
 
=== Как импортировать историю из QIP ===


Официальный клиен ICQ 10 ставит статус «Не в сети» после 10-15 секунд бездействия. Когда пользователь взаимодействует с клиентом, клиент ставит статус «В сети». Например, точно так же себя ведёт клиент Telegram.
Воспользоваться плагином {{Plugin|Import}}.


=== При каждом подключении к сети от контакта приходят старые ключи {{Plugin|SecureIM}} ===
=== При каждом подключении к сети от контакта приходят старые ключи {{Plugin|SecureIM}} ===
Line 59: Line 194:
Отправьте контакту, от которого приходят такие ключи, любое сообщение.
Отправьте контакту, от которого приходят такие ключи, любое сообщение.


<!--
Another way:
* add contact with ID ''aolsystemmsg''
* send him 1 = Sign out of your ICQ sessions connected from all other locations
* send him 2 = Tell you how many locations you currently signed-in from.
-->


{{PluginGroups}}
{{PluginGroups}}

Latest revision as of 21:19, 29 March 2024

Other languages:
ICQ protocol
ICQ protocol
Имя файла ICQ.dll
Авторы George Hazan
Скачать
Стабильная версия: 32-bit, 64-bit
Версия в разработке: 32-bit, 64-bit

Поддержка протокола ICQ-WIM в Miranda NG.

Известные проблемы

  • Жители Украины могут испытывать проблемы при подключении, поскольку некоторые адреса, принадлежащие Mail.ru, заблокированы в Украине. Используйте прокси или VPN для обхода блокировок.

Различия между старым и новым протоколами

Важно
Серверы ICQ прекратили поддержку старого протокола OSCAR. Мы написали поддержку нового протокола WIM, но некоторые возможности в нём пока отсутствуют.

OSCAR — протокол, доставшийся Mail.ru при покупке ICQ. Это то, что многие годы называли «ICQ». Он был реализован во всех альтернативных клиентах.

WIM — протокол, который в Mail.ru разработали на смену OSCAR. Он проще, надёжнее и поддерживает многое из того, что OSCAR в принципе не умеет. На данный момент он реализован в официальном клиенте ICQ 10, Miranda NG, R&Q и Mandarin IM. В некоторых аспектах протоколы полностью отличаются друг от друга.

Сравнение возможностей старого и нового протоколов в Miranda NG

OSCAR WIM
Вход UIN+пароль UIN+пароль, телефон+SMS-код
Беседы
Групповые чаты лишь основные функции
Хранение списка контактов (ростера) на сервере или локально синхронизируется с сервером при каждом подключении
Аватары максимум 60x60 пикселей большие аватары
Отправка контактам, находищимся «не в сети»
«Облачная» история (подгрузка истории с сервера)
Передача файлов ✔ (передача напрямую между пользователями не поддерживается сервером)
Стикеры ✔ (приём их как обычных файлов)
Уведомления о наборе текста
Управление группами (удаление, создание, переименование)
Просмотр сведений о пользователе лишь некоторые данные, доступные в личном кабинете
Изменение сведений о себе
Статусы все статусы сервер поддерживает лишь статусы «В сети» и «Не в сети»
Невидимость ✔ (выборочная невидимость только для определённых контактов не поддерживается сервером)
XСтатусы не поддерживаются сервером
Запросы авторизации (другие пользователи не могут добавить меня без разрешения) только в MRA
Пометка сообщений прочитанными
Получение информации о том, когда собеседник прочитал сообщение ✔ (с плагином MessageState)
Определение клиента собеседника только некоторые сторонние клиенты (с помощью капсов)


Решение проблем

Не удаётся подключиться к ICQ

Если вы используете более раннюю версию, чем v0.95.10.1, обновитесь до этой или более новой версии.

Неправильный пароль

После обновления до версии 0.95.5 возможны проблемы с подключением к сети. Текст ошибки: Неудачное подключение. Ваш номер или пароль не приняты сервером.

До версии 0.95.4 Miranda не поддерживала пароли ICQ длиннее 8-ми символов. Если вы когда-либо ввели длинный пароль, Miranda сохранила его в базе целиком, но использовала только первые 8 символов. Серверы ICQ тоже не поддерживали длинные пароли. Теперь же максимальная длина пароля увеличена до 16 символов включительно. Соответствующие изменения внесены в плагин Миранды.

Miranda 0.95.5 отправляет ваш когда-то введённый длинный пароль целиком, и сервер справедливо считает его неправильным.

Решение: откройте Настройки → Сеть → <Имя_учётной_записи> и введите в поле «Пароль» первые 8 символов вашего пароля.

Чтобы использовать пароль длиннее 8-ми символов, измените его на сайте ICQ.

Ошибка '"statusText":"Invalid Request. statusDetailCode 1015", "statusDetailCode":1015' в сетевом логе

В большинстве случаев виной тому рассинхронизация времени между вашим компьютером и сервером. Проверьте актуальность и точность системного времени. Синхронизируйте время в настройках операционной системы. Проверьте часовой пояс, а также опцию перехода на зимнее/летнее время. Некоторые пользователи сообщают, что проблема решилась после смены часового пояса на похожий (например, «UTC+03 Москва» → «UTC+03 Минск»).

Как получить пароль для свежезарегистрированной учётной записи

Для новых пользователей существует только одна возможность входа в учётную запись — получить одноразовый код с помощью SMS. Воспользуйтесь кнопкой "Вход/регистрация по номеру телефона" в настройках учётной записи.

При первом запуске с новым протоколом значки некоторых контактов в списке контактов стали бледными

Эти контакты у вас хранились локально в Миранде. По какой-то причине вы никогда не добавляли их в серверный список контактов, поэтому их там нет. Такие контакты Миранда помечает, как NotOnList, и выкидывает в самый низ списка контактов, рисуя их по-другому. При следующем запуске они будут стёрты, что может повлечь пропажу истории. Необходимо сразу же добавить их в постоянный список (пункт в контекстном меню контакта, либо открыть окно беседы и нажать зелёный "плюсик").

Почему у некоторых контактов имя изменилось на «[deleted]»?

Ответ технической поддержки ICQ: Данный аккаунт был удален за длительное неиспользование. Восстановить его невозможно.

Контакты, использующие официальный клиент, постоянно входят в сеть и выходят из неё

Официальный клиен ICQ 10 ставит статус «Не в сети» после 10-15 секунд бездействия. Когда пользователь взаимодействует с клиентом, клиент ставит статус «В сети». Например, точно так же себя ведёт клиент Telegram.

Это поведение пришло на десктоп с мобильных устройств. Дело в том, что когда вы получаете те или иные уведомления, которые отображаются на экране блокировки или в шторке, то нужно понимать, что приходят они не напрямую от сервиса или программы которой вы пользуетесь (например, WhatsApp или ВКонтакте). Получение и отображение таких сообщений осуществляется отдельной службой, которая получает их с помощью серверов производителей ОС (Google, Apple и Microsoft соответственно).

Вот как это работает. Представим, что вы пользуетесь Android и вам решил позвонить ваш знакомый в WhatsApp. Он выбирает ваш контакт в списке, нажимает иконку звонка после чего видит анимацию соединения. В этом время его приложение передаёт вызов на сервер WhatsApp. Который, обработав вызов, делает запрос к серверу Google. В этом запросе, если перевести на понятный нам язык, будет что-то вроде «отобрази на устройстве с приложением имеющим ID такой-то уведомление о входящем звонке с такого-то контакта».

Сделано это для того, чтобы экономить заряд батареи мобильного устройства. Согласитесь, что схема «телефон периодически соединяется с серверами Google/Apple» намного энергоэффективнее схемы, при которой каждый мессенджер (а их на телефоне зачастую несколько) постоянно работал бы, поддерживая соединение со своим сервером.

Десктопный клиент же просто копирует поведение мобильного.

Как узнать, кто из собеседников реально недоступен

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

Кроме того, Modern contact list может взять эту информацию у Last seen и показать прямо в списке контактов. Для этого нужно включить настройку Настройки → Список контактов → Элементы строк → Вторая строка (или «Третья строка») → Статусное сообщение.

Ещё эту информацию можно вывести в подсказку Tipper. В разделе Настройки → Тонкая настройка → Подсказки → Содержимое → Подстановки необходимо создать следующие подстановки:

Метка: lastseen_ago
Модуль: SeenModule
Преобразование: <префикс>день|месяц|год|часы|мин|сек - в разницу времени
Метка: lastseen_date
Модуль: SeenModule
Преобразование: <префикс>день|месяц|год - в дату
Метка: lastseen_time
Модуль: SeenModule
Преобразование: <префикс>часы|минуты|секунды - во время

На той же вкладке создать следующий «Элемент»:

Метка: Last seen:
Значение:  %lastseen_date% @ %lastseen_time% (%lastseen_ago% назад)
Показывать только для контактов

Кроме того, в настройках протокола ICQ вы можете указать таймауты, в течение которых Миранда будет показывать контакт как находящийся в сети.

Как импортировать историю из QIP

Воспользоваться плагином Import.

При каждом подключении к сети от контакта приходят старые ключи SecureIM

Отправьте контакту, от которого приходят такие ключи, любое сообщение.