Plugin:ICQ: Difference between revisions

From Miranda NG
Plugin:ICQ
Jump to navigation Jump to search
No edit summary
No edit summary
(93 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>{{PluginCard}}
<languages/>{{PluginCard}}
<translate>
<translate>
<!--T:1-->
ICQ (WIM) protocol support for Miranda NG.


== Known problems == <!--T:2-->
<!--T:35-->
<tvar|icq>[https://icq.com ICQ-WIM]</> protocol support for Miranda NG.


<!--T:3-->
== Known problems == <!--T:36-->
* ICQ servers drop old OSCAR protocol support. We implemented support for a brand new WIM protocol, but it currently lacks some features.


<!--T:34-->
<!--T:38-->
* 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.
* 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 == <!--T:39-->
</translate>
 
{{TNT|Important| <translate><!--T:40--> ICQ servers drop old OSCAR protocol support. We implemented support for a brand new WIM protocol, but it currently lacks some features.</translate>}}
 
<translate>
<!--T:41-->
[[wikipedia:en:OSCAR_protocol|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.
 
<!--T:42-->
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, [<tvar|r&q_website>https://code.highspec.ru/Mikanoshi/RnQ</> R&Q], and [<tvar|mandarin_website>https://play.google.com/store/apps/details?id=com.tomclaw.mandarin</> Mandarin IM]. OSCAR and WIM are fundamentally different in some aspects.
 
=== Comparison of the capabilities of the old and the new protocol in Miranda NG === <!--T:83-->
</translate>
 
{| class="wikitable"
|-
! || OSCAR !! WIM
|-
|-
|<translate><!--T:88--> Login</translate>
|<translate><!--T:89--> UIN+password</translate>
|<translate><!--T:90--> UIN+password, phone+SMS-code, e-mail+password</translate>
|-
|<translate><!--T:84--> Single messaging</translate>
|✔
|✔
|-
|<translate><!--T:85--> Group chats</translate>
|&minus;
|<translate><!--T:86--> only the basic functions</translate>
|-
|<translate><!--T:91--> Contacts (roster) storage</translate>
|<translate><!--T:92--> server-side or locally</translate>
|<translate><!--T:93--> sync with server at every login</translate>
|-
|<translate><!--T:94--> Avatars</translate>
|<translate><!--T:95--> 60x60 pixels</translate>
|<translate><!--T:96--> big avatars</translate>
|-
|<translate><!--T:97--> Send to offline</translate>
|✔
|✔
|-
|<translate><!--T:108--> "Cloud" history (history loading from server)</translate>
|&minus;
|✔
|-
|<translate><!--T:112--> File transfers</translate>
|✔
|✔ <translate><!--T:113--> (peer-to-peer filetransfers are not supported by server)</translate>
|-
|<translate><!--T:118--> Stickers</translate>
|&minus;
|✔ <translate><!--T:119--> (receive as usual files)</translate>
|-
|<translate><!--T:87--> Typing notifications</translate>
|✔
|✔
|-
|<translate><!--T:111--> Groups management (delete, create, rename)</translate>
|✔
|✔
|-
|<translate><!--T:99--> User details</translate>
|✔
|<translate><!--T:100--> only some fields available in [<tvar|icq_login>https://icq.com/login</> account settings]</translate>
|-
|<translate><!--T:101--> Changing own details</translate>
|✔
|<translate><!--T:102--> only in account settings</translate>
|-
|<translate><!--T:103--> Statuses</translate>
|<translate><!--T:104--> all statuses</translate>
|<translate><!--T:105--> only "Online" and "Offline" are supported by server</translate>
|-
|<translate><!--T:120--> Invisibility</translate>
|✔
|<translate><!--T:121--> combined with ignore</translate>
|-
|<translate><!--T:106--> XStatuses</translate>
|✔
|<translate><!--T:107--> not supported by server</translate>
|-
|<translate><!--T:109--> Auth requests (other peoples can not add you without permission)</translate>
|✔
|<translate><!--T:110--> [<tvar|mra_website>https://agent.mail.ru</> MRA] only</translate>
|-
|<translate><!--T:98--> Mark messages as read</translate>
|✔
|✔
|-
|<translate><!--T:114--> Getting information about when the contact read the message</translate>
|&minus;
|✔ <translate><!--T:115--> (with {{Plugin|MessageState}} plugin)</translate>
|-
|<translate><!--T:116--> Client detection</translate>
|✔
|<translate><!--T:117--> only some third-party clients (using caps)</translate>
|}


<!--T:29-->
<translate>
* Residents of Ukraine may experience connection problems. Some IP-addresses belonging to Mail.ru are blocked in Ukraine. Use proxy or VPN.


== Troubleshooting == <!--T:4-->
== Troubleshooting == <!--T:43-->


=== What to do if you can not connect ===
=== You can not connect to ICQ === <!--T:44-->


If you are using a version earlier than '''0.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].
<!--T:45-->
If you are using a version earlier than [[Changelog/0.95.10.1|v0.95.10.1]], then upgrade to this version or newer.


=== Rejected password === <!--T:5-->
=== Rejected password === <!--T:46-->


<!--T:6-->
<!--T:47-->
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.''
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.''


<!--T:7-->
<!--T:48-->
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.
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.


<!--T:8-->
<!--T:49-->
[[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.
[[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.


<!--T:9-->
<!--T:50-->
The solution is to go to {{Menu|Options|Network|<Account_name>}} and re-enter your password ('''the first 8 symbols''' of it).
The solution is to go to {{Menu|Options|Network|<Account_name>}} and re-enter your password ('''the first 8 symbols''' of it).


<!--T:10-->
<!--T:51-->
To use a longer password, you need to set the new one through the [<tvar|icq_website>https://icq.com</> ICQ website].
To use a longer password, you need to set the new one through the [<tvar|icq_password_change>https://icq.com/change-password/</> ICQ website].
 
<!--T:11-->
Keep in mind that some programs (QIP 2005, Jasmine IM for Android) have not been updated for a long time and do not support long passwords. If you need such programs, it is necessary to limit the password to 8 characters.


=== «"statusText": "Invalid Request. statusDetailCode 1015", "statusDetailCode": 1015» error in the network log ===
=== '"statusText": "Invalid Request. statusDetailCode 1015", "statusDetailCode": 1015' error in the network log === <!--T:52-->


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".
<!--T:53-->
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").


=== How to know your UIN === <!--T:18-->
=== How to get a password for freshly registered account === <!--T:133-->


<!--T:21-->
<!--T:134-->
* login to [<tvar|icq_website>https://icq.com</> ICQ website] with your phone number and SMS code (don't login to web-based ICQ client!)
For new users, there is only one way to enter into account — getting SMS with a one-time code. Use the "Sign in/sign up using phone" button in account settings.
* 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 ===
=== Some contacts in the contact list become faint when you first log in with a new protocol === <!--T:56-->


<!--T:57-->
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).
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).


=== Some contacts changed their names to [deleted] ===
=== Some contacts changed their names to "[deleted]" === <!--T:58-->


<!--T:59-->
ICQ technical support response: ''This account has been removed for prolonged non-use. It can not be restored.''
ICQ technical support response: ''This account has been removed for prolonged non-use. It can not be restored.''


=== Contacts that use an official client, constantly switching between online and offline === <!--T:26-->
=== Contacts that use an official client, constantly switching between online and offline === <!--T:60-->


<!--T:27-->
<!--T:61-->
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.
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.


<!--T:62-->
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).
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).


<!--T:63-->
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".
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".


<!--T:64-->
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.
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.


<!--T:65-->
The desktop client simply copies the behavior of the mobile client.
The desktop client simply copies the behavior of the mobile client.


=== How to find out which contacts are really unavailable ===
=== How to find out which contacts are really unavailable === <!--T:66-->


<!--T:67-->
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.
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.


<!--T:68-->
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}}.
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}}.


Finally, this information can be displayed at the {{Plugin|Tipper}} prompt. In the section {{Menu|Options|Customize|Tooltips|Content|Substitutions}} you need to create the following substitutions:
<!--T:69-->
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:
</translate>


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: lastseen_ago
<translate><!--T:122-->
Module: SeenModule
Label</translate>: lastseen_ago
Translation: <prefix>Day|Month|Year|Hours|Minutes|Seconds to the time difference
<translate><!--T:123--> Module</translate>: SeenModule
<translate><!--T:124-->
Translation: <prefix>Day|Month|Year|Hours|Minutes|Seconds to time difference</translate>
</pre>
</pre>


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: lastseen_date
<translate><!--T:125-->
Module: SeenModule
Label</translate>: lastseen_date
Translation: <prefix>Day|Month|Year to date
<translate><!--T:126--> Module</translate>: SeenModule
<translate><!--T:127-->
Translation: <prefix>Day|Month|Year to date</translate>
</pre>
</pre>


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: lastseen_time
<translate><!--T:128-->
Module: SeenModule
Label</translate>: lastseen_time
Translation: <prefix>Hours|Minutes|Seconds to time
<translate><!--T:129--> Module</translate>: SeenModule
<translate><!--T:130-->
Translation: <prefix>Hours|Minutes|Seconds to time</translate>
</pre>
</pre>


<translate>
<!--T:73-->
On the same tab, create the following "Element":
On the same tab, create the following "Element":
</translate>


<pre style="overflow:auto;">
<pre style="overflow:auto;">
Label: Last seen:
<translate><!--T:131-->
Label</translate>: Last seen:
<translate><!--T:132-->
Value: %lastseen_date% @ %lastseen_time% (%lastseen_ago% ago)
Value: %lastseen_date% @ %lastseen_time% (%lastseen_ago% ago)
Show only for contacts
Show only for contacts</translate>
</pre>
</pre>


In addition, in the ICQ protocol settings, you can find two useful options that do not allow contacts to go Offline immediately.
<translate>
<!--T:75-->
Finally, in the ICQ protocol settings, you can find two useful options that do not allow contacts to go Offline immediately.


=== New contacts no longer asking for authorization before write to you ===
=== How to import ICQ history from QIP === <!--T:78-->


The new WIM protocol does not provide authorization in principle. The user can freely write to another user, as in all modern instant messengers. The addressee, in turn, is free to add him to the contact list, delete, or block.
<!--T:79-->
Use {{Plugin|Import}} plugin.


=== Contacts' clients detection is not work at all or incorrectly displayed ===
=== You get old {{Plugin|SecureIM}} keys from contact every time you connect to network  === <!--T:81-->
 
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.
 
=== How to import ICQ history from QIP ===
 
Use {{Plugin|Import}} plugin.


=== You get old {{Plugin|SecureIM}} keys from contact every time you connect to network  ===
<!--T:82-->
Send any message to the contact, from which you get these keys.
Send any message to the contact, from which you get these keys.



Revision as of 15:41, 12 June 2021

ICQ protocol
ICQ protocol
Filename ICQ.dll
Authors George Hazan
Download links
Stable version: 32-bit, 64-bit
Development version: 32-bit, 64-bit

ICQ-WIM protocol support for Miranda NG.

Known problems

  • 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

Important
ICQ servers drop old OSCAR protocol support. We implemented support for a brand new WIM protocol, but it currently lacks some features.

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.

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, R&Q, and Mandarin IM. OSCAR and WIM are fundamentally different in some aspects.

Comparison of the capabilities of the old and the new protocol in Miranda NG

OSCAR WIM
Login UIN+password UIN+password, phone+SMS-code, e-mail+password
Single messaging
Group chats only the basic functions
Contacts (roster) storage server-side or locally sync with server at every login
Avatars 60x60 pixels big avatars
Send to offline
"Cloud" history (history loading from server)
File transfers ✔ (peer-to-peer filetransfers are not supported by server)
Stickers ✔ (receive as usual files)
Typing notifications
Groups management (delete, create, rename)
User details only some fields available in account settings
Changing own details only in account settings
Statuses all statuses only "Online" and "Offline" are supported by server
Invisibility combined with ignore
XStatuses not supported by server
Auth requests (other peoples can not add you without permission) MRA only
Mark messages as read
Getting information about when the contact read the message ✔ (with MessageState plugin)
Client detection only some third-party clients (using caps)


Troubleshooting

You can not connect to ICQ

If you are using a version earlier than v0.95.10.1, then upgrade to this version or newer.

Rejected password

After updating to 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.

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.

Miranda v0.95.5 sends the whole your "more-than-8-symbols-password" which the server justly considers incorrect and rejects it.

The solution is to go to Options → Network → <Account_name> and re-enter your password (the first 8 symbols of it).

To use a longer password, you need to set the new one through the ICQ website.

'"statusText": "Invalid Request. statusDetailCode 1015", "statusDetailCode": 1015' error in the network log

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").

How to get a password for freshly registered account

For new users, there is only one way to enter into account — getting SMS with a one-time code. Use the "Sign in/sign up using phone" button in account settings.

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).

Some contacts changed their names to "[deleted]"

ICQ technical support response: This account has been removed for prolonged non-use. It can not be restored.

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.

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).

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".

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.

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

In addition, Modern contact list can take this information from Last seen and show it directly in the contact list. To do this, you need to turn on the Options → Contact list → Row items → Second line (or "Third line") → Status message.

This information also can be displayed at the Tipper prompt. In the section Options → Customize → Tooltips → Content → Substitutions you need to create the following substitutions:

Label: lastseen_ago
Module: SeenModule
Translation: <prefix>Day|Month|Year|Hours|Minutes|Seconds to time difference
Label: lastseen_date
Module: SeenModule
Translation: <prefix>Day|Month|Year to date
Label: lastseen_time
Module: SeenModule
Translation: <prefix>Hours|Minutes|Seconds to time

On the same tab, create the following "Element":

Label: Last seen:
Value: %lastseen_date% @ %lastseen_time% (%lastseen_ago% ago)
Show only for contacts

Finally, in the ICQ protocol settings, you can find two useful options that do not allow contacts to go Offline immediately.

How to import ICQ history from QIP

Use Import plugin.

You get old SecureIM keys from contact every time you connect to network

Send any message to the contact, from which you get these keys.