Plugin:ICQ/ru: Difference between revisions

From Miranda NG
Plugin:ICQ/ru
Jump to navigation Jump to search
(Updating to match new version of source page)
No edit summary
 
(155 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>{{PluginCard}}
<languages/>{{PluginCard}}


ICQ (WIM) protocol support for Miranda NG.
Поддержка протокола [https://icq.com ICQ-WIM] в Miranda NG.


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


* Until {{GithubIssue|2343}} is fixed, you will have to enter the SMS-code each time you connect to the network if your account does not have a permanent password.
* Жители Украины могут испытывать проблемы при подключении, поскольку некоторые адреса, принадлежащие Mail.ru, заблокированы в Украине. Используйте прокси или VPN для обхода блокировок.


* Residents of Ukraine may experience connection problems. Some IP-addresses belonging to Mail.ru are blocked in Ukraine. Use proxy or VPN.
== Различия между старым и новым протоколами ==


== Difference between old and new protocols ==
{{TNT|Important| Серверы ICQ прекратили поддержку старого протокола OSCAR. Мы написали поддержку нового протокола WIM, но некоторые возможности в нём пока отсутствуют.}}


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


{{TNT|Important| ICQ servers drop old OSCAR protocol support. We implemented support for a brand new WIM protocol, but it currently lacks some features.}}
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 ===


OSCAR is the protocol that Mail.ru got when buying ICQ. This is what has been called "ICQ" for many years. It was implemented in all alternative clients.
{| class="wikitable"
|-
! || OSCAR !! WIM
|-
|-
|Вход
|UIN+пароль
|UIN+пароль, телефон+SMS-код
|-
|Беседы
|✔
|✔
|-
|Групповые чаты
|&minus;
|лишь основные функции
|-
|Хранение списка контактов (ростера)
|на сервере или локально
|синхронизируется с сервером при каждом подключении
|-
|Аватары
|максимум 60x60 пикселей
|большие аватары
|-
|Отправка контактам, находищимся «не в сети»
|✔
|✔
|-
|«Облачная» история (подгрузка истории с сервера)
|&minus;
|✔
|-
|Передача файлов
|✔
|✔ (передача напрямую между пользователями не поддерживается сервером)
|-
|Стикеры
|&minus;
|✔ (приём их как обычных файлов)
|-
|Уведомления о наборе текста
|✔
|✔
|-
|Управление группами (удаление, создание, переименование)
|✔
|✔
|-
|Просмотр сведений о пользователе
|✔
|лишь некоторые данные, доступные в [https://icq.com/login личном кабинете]
|-
|Изменение сведений о себе
|✔
|✔
|-
|Статусы
|все статусы
|сервер поддерживает лишь статусы «В сети» и «Не в сети»
|-
|Невидимость
|✔
|✔ (выборочная невидимость только для определённых контактов не поддерживается сервером)
|-
|XСтатусы
|✔
|не поддерживаются сервером
|-
|Запросы авторизации (другие пользователи не могут добавить меня без разрешения)
|✔
|только в [https://agent.mail.ru MRA]
|-
|Пометка сообщений прочитанными
|✔
|✔
|-
|Получение информации о том, когда собеседник прочитал сообщение
|&minus;
|✔ (с плагином {{Plugin|MessageState}})
|-
|Определение клиента собеседника
|✔
|только некоторые сторонние клиенты (с помощью капсов)
|}


WIM is a protocol that Mail.ru developed to replace OSCAR. It is simpler, more reliable and supports many of the things that OSCAR cannot. At the moment it is implemented in the ICQ 10 official client, Miranda NG, [https://code.highspec.ru/Mikanoshi/RnQ R&Q], and [https://play.google.com/store/apps/details?id=com.tomclaw.mandarin Mandarin IM]. OSCAR and WIM are fundamentally different in some aspects.


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


=== What to do if you can not connect ===
=== Не удаётся подключиться к ICQ ===


If you are using a version earlier than [[Changelog/0.95.10.1|v0.95.10.1]], then upgrade to this version or newer. If you cannot connect even after the update, make [[network log]] with an unsuccessful connection attempt and post it to [https://github.com/miranda-ng/miranda-ng/issues/new/ our bugtracker].
Если вы используете более раннюю версию, чем [[История изменений/0.95.10.1|v0.95.10.1]], обновитесь до этой или более новой версии.


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


After updating to [[Changelog/0.95.5|v0.95.5]] you may not be able to log into your account. The message will be: ''Connection failed. Your ICQ number or password was rejected.''
После обновления до [[История изменений/0.95.5|версии 0.95.5]] возможны проблемы с подключением к сети. Текст ошибки: ''Неудачное подключение. Ваш номер или пароль не приняты сервером.''


Up to v0.95.4, Miranda didn't support ICQ passwords longer than 8 symbols. If you have ever entered a password longer than that, Miranda would store the whole password in a database, but send only the first 8 symbols to server. ICQ servers did not support more than 8, too. They increased the maximum password length to 16 symbols. So the change was made in Miranda to meet the standards.
До версии 0.95.4 Miranda не поддерживала пароли ICQ длиннее 8-ми символов. Если вы когда-либо ввели длинный пароль, Miranda сохранила его в базе целиком, но использовала только первые 8 символов. Серверы ICQ тоже не поддерживали длинные пароли. Теперь же максимальная длина пароля увеличена до 16 символов включительно. Соответствующие изменения внесены в плагин Миранды.


[[Changelog/0.95.5|Miranda v0.95.5]] sends the whole your "more-than-8-symbols-password" which the server justly considers incorrect and rejects it.
[[История изменений/0.95.5|Miranda 0.95.5]] отправляет ваш когда-то введённый длинный пароль целиком, и сервер справедливо считает его неправильным.


The solution is to go to {{Menu|Options|Network|<Account_name>}} and re-enter your password ('''the first 8 symbols''' of it).
Решение: откройте {{Menu|Настройки|Сеть|<Имя_учётной_записи>}} и введите в поле «Пароль» '''первые 8 символов''' вашего пароля.


To use a longer password, you need to set the new one through the [https://icq.com ICQ website].
Чтобы использовать пароль длиннее 8-ми символов, измените его на [https://icq.com/change-password/ сайте ICQ].


=== «"statusText": "Invalid Request. statusDetailCode 1015", "statusDetailCode": 1015» error in the network log ===
=== Ошибка '"statusText":"Invalid Request. statusDetailCode 1015", "statusDetailCode":1015' в сетевом логе ===


In most cases, the time is out of sync between your computer and the server. Check the accuracy of the system time. Synchronize the time in the operating system settings. Check the time zone, as well as the transition to winter time or summer time. Some users report that the problem was solved after changing the time zone to a similar one (for example, "UTC + 03 Moscow" "UTC + 03 Minsk").
В большинстве случаев виной тому рассинхронизация времени между вашим компьютером и сервером. Проверьте актуальность и точность системного времени. Синхронизируйте время в настройках операционной системы. Проверьте часовой пояс, а также опцию перехода на зимнее/летнее время. Некоторые пользователи сообщают, что проблема решилась после смены часового пояса на похожий (например, «UTC+03 Москва» «UTC+03 Минск»).


=== How to know your UIN ===
=== Как получить пароль для свежезарегистрированной учётной записи ===


* login to [https://icq.com ICQ website] with your phone number and SMS code (don't login to web-based ICQ client!)
Для новых пользователей существует только одна возможность входа в учётную запись — получить одноразовый код с помощью SMS. Воспользуйтесь кнопкой "Вход/регистрация по номеру телефона" в настройках учётной записи.
* click on your logged user's nickname and see your UIN
* logout from ICQ website


=== Some contacts in the contact list become faint when you first log in with a new protocol ===
=== При первом запуске с новым протоколом значки некоторых контактов в списке контактов стали бледными ===


These contacts were stored locally in Miranda. For some reason, you never added them to the server contact list. Miranda marks such contacts as NotOnList and puts them to the bottom of the contact list. They will be erased after the restart, which may lead to the loss of history. You must immediately add them to the permanent list (item in the contact's context menu or open the conversation window and press the green "plus" button).
Эти контакты у вас хранились локально в Миранде. По какой-то причине вы никогда не добавляли их в серверный список контактов, поэтому их там нет. Такие контакты Миранда помечает, как NotOnList, и выкидывает в самый низ списка контактов, рисуя их по-другому. При следующем запуске они будут стёрты, что может повлечь пропажу истории. Необходимо сразу же добавить их в постоянный список (пункт в контекстном меню контакта, либо открыть окно беседы и нажать зелёный "плюсик").


=== Some contacts changed their names to [deleted] ===
Почему у некоторых контактов имя изменилось на «[deleted]»?


ICQ technical support response: ''This account has been removed for prolonged non-use. It can not be restored.''
Ответ технической поддержки ICQ: ''Данный аккаунт был удален за длительное неиспользование. Восстановить его невозможно''.


=== Contacts that use an official client, constantly switching between online and offline ===
=== Контакты, использующие официальный клиент, постоянно входят в сеть и выходят из неё ===


Official ICQ 10 client goes offline after 10-15 seconds of inactivity and returns online if the user interacts with the client. For example, Telegram client behaves similarly.
Официальный клиен ICQ 10 ставит статус «Не в сети» после 10-15 секунд бездействия. Когда пользователь взаимодействует с клиентом, клиент ставит статус «В сети». Например, точно так же себя ведёт клиент Telegram.


This behavior came to the desktop from mobile devices. The fact is that when you receive certain notifications that are displayed on the lock screen or in the blind, you need to understand that they do not come directly from the service or program you are using (for example, WhatsApp or VKontakte). Receipt and display of such messages are carried out by a separate service, which receives them through the servers of the OS manufacturers (Google, Apple, and Microsoft, respectively).
Это поведение пришло на десктоп с мобильных устройств. Дело в том, что когда вы получаете те или иные уведомления, которые отображаются на экране блокировки или в шторке, то нужно понимать, что приходят они не напрямую от сервиса или программы которой вы пользуетесь (например, WhatsApp или ВКонтакте). Получение и отображение таких сообщений осуществляется отдельной службой, которая получает их с помощью серверов производителей ОС (Google, Apple и Microsoft соответственно).


Here is how it works. Imagine that you are using Android and you have decided to call your friend in WhatsApp. He selects your contact in the list, clicks the call icon and then sees the animation of the connection. At this time, his application sends a call to the WhatsApp server. Which, after processing the call, it makes a request to the Google server. In this request, if we translate it into a language understandable to us, there will be something like "display on the device with an application ID having such and such notification of an incoming call from such a contact".
Вот как это работает. Представим, что вы пользуетесь Android и вам решил позвонить ваш знакомый в WhatsApp. Он выбирает ваш контакт в списке, нажимает иконку звонка после чего видит анимацию соединения. В этом время его приложение передаёт вызов на сервер WhatsApp. Который, обработав вызов, делает запрос к серверу Google. В этом запросе, если перевести на понятный нам язык, будет что-то вроде «отобрази на устройстве с приложением имеющим ID такой-то уведомление о входящем звонке с такого-то контакта».


This is done in order to save the battery power of the mobile device. Agree that the "phone periodically connects to Google/Apple servers" scheme is much more energy-efficient than a schemе in which each messenger (and there are often several on the phone) would work continuously, maintaining a connection with its server.
Сделано это для того, чтобы экономить заряд батареи мобильного устройства. Согласитесь, что схема «телефон периодически соединяется с серверами Google/Apple» намного энергоэффективнее схемы, при которой каждый мессенджер (а их на телефоне зачастую несколько) постоянно работал бы, поддерживая соединение со своим сервером.


The desktop client simply copies the behavior of the mobile client.
Десктопный клиент же просто копирует поведение мобильного.


=== How to find out which contacts are really unavailable ===
=== Как узнать, кто из собеседников реально недоступен ===


If the contact stubbornly wishes to use the official client, you can use the {{Plugin|SeenPlugin|Last seen}} plugin. The plugin receives the last activity time from the protocol (when a contact last interacted with its official client) and displays it in the context menu of the contact.
Если собеседник упорно желает использовать официальный клиент, можно воспользоваться плагином {{Plugin|SeenPlugin|Last seen}}. Плагин получает от протокола время последней активности (когда собеседник в последний раз взаимодействовал со своим официальным клиентом) и выводит его в контекстном меню контакта.


In addition, {{Plugin|Clist_modern|Modern contact list}} can take this information from {{Plugin|SeenPlugin|Last seen}} and show it directly in the contact list. To do this, you need to turn on the {{Menu|Options|Contact list|Row items|Second line (or "Third line")|Status message}}.
Кроме того, {{Plugin|Clist_modern|Modern contact list}} может взять эту информацию у {{Plugin|SeenPlugin|Last seen}} и показать прямо в списке контактов. Для этого нужно включить настройку  {{Menu|Настройки|Список контактов|Элементы строк|Вторая строка (или «Третья строка»)|Статусное сообщение}}.


This information also can be displayed at the {{Plugin|Tipper}} prompt. In the section {{Menu|Options|Customize|Tooltips|Content|Substitutions}} you need to create the following substitutions:
Ещё эту информацию можно вывести в подсказку {{Plugin|Tipper}}. В разделе {{Menu|Настройки|Тонкая настройка|Подсказки|Содержимое|Подстановки}} необходимо создать следующие подстановки:


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: lastseen_ago
Метка: lastseen_ago
Module: SeenModule
Модуль: SeenModule
Translation: <prefix>Day|Month|Year|Hours|Minutes|Seconds to the time difference
Преобразование: <префикс>день|месяц|год|часы|мин|сек - в разницу времени
</pre>
</pre>


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: lastseen_date
Метка: lastseen_date
Module: SeenModule
Модуль: SeenModule
Translation: <prefix>Day|Month|Year to date
Преобразование: <префикс>день|месяц|год - в дату
</pre>
</pre>


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: lastseen_time
Метка: lastseen_time
Module: SeenModule
Модуль: SeenModule
Translation: <prefix>Hours|Minutes|Seconds to time
Преобразование: <префикс>часы|минуты|секунды - во время
</pre>
</pre>


On the same tab, create the following "Element":
На той же вкладке создать следующий «Элемент»:


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: Last seen:
Метка: Last seen:
Value: %lastseen_date% @ %lastseen_time% (%lastseen_ago% ago)
Значение: %lastseen_date% @ %lastseen_time% (%lastseen_ago% назад)
Show only for contacts
Показывать только для контактов
</pre>
</pre>


Finally, in the ICQ protocol settings, you can find two useful options that do not allow contacts to go Offline immediately.
Кроме того, в настройках протокола ICQ вы можете указать таймауты, в течение которых Миранда будет показывать контакт как находящийся в сети.


=== Client detection is not work at all or client displayed incorrectly ===
=== Как импортировать историю из QIP ===


Under the new protocol, the server does not receive explicit information about which program is used on another side. Identification of clients is only possible indirectly, using caps, this is implemented only for third-party clients who work under the new protocol.
Воспользоваться плагином {{Plugin|Import}}.


=== How to import ICQ history from QIP ===
=== При каждом подключении к сети от контакта приходят старые ключи {{Plugin|SecureIM}} ===


Use {{Plugin|Import}} plugin.
Отправьте контакту, от которого приходят такие ключи, любое сообщение.
 
=== You get old {{Plugin|SecureIM}} keys from contact every time you connect to network  ===
Send any message to the contact, from which you get these keys.




{{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

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