signal-cli was primarily developed to be used on servers to notify admins of important events.
For this use-case, it has a dbus and a JSON-RPC interface, that can be used to send messages from other programs.
+Originally the Signal protocol only allowed sending messages to other phone numbers.
+Now with the introduction of phone number privacy, the phone number of a recipient is not always known.
+Only the recipient's ServiceId, ACI/PNI (a special UUID) is known.
+This special identifier can be used instead of the phone number in signal-cli's interface.
+
For some functionality the Signal protocol requires that all messages have been received from the server.
The `receive` command should be regularly executed.
In daemon mode messages are by default continuously received.
The verification should be done over voice, not SMS.
Voice verification only works if an SMS verification has been attempted before.
-*--captcha*::
+*--captcha* CAPTCHA::
The captcha token, required if registration failed with a captcha required error.
To get the token, go to https://signalcaptchas.org/registration/generate.html
For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html
After solving the captcha, right-click on the "Open Signal" link and copy the link.
+*--reregister*::
+Register even if account is already registered.
+
=== verify
Verify the number using the code received via SMS or voice.
*-n* NAME, *--device-name* NAME::
Set a new device name for the primary or linked device
-*--username* NAME::
+*-u* NAME *--username* NAME::
Specify a username that can then be used to contact this account.
+This can either be just the nickname (e.g. test) or the complete username with discriminator (e.g. test.000).
Returns the new username with discriminator and the username link.
*--delete-username*::
*--uri* URI::
Specify the uri contained in the QR code shown by the new device.
-You will need the full URI such as "sgnl://linkdevice?uuid=..." (formerly "tsdevice:/?uuid=...") Make sure to enclose it in quotation marks for shells.
+You will need the full URI such as "sgnl://linkdevice?uuid=...&pub_key=..." (formerly "tsdevice:/?uuid=...") Make sure to enclose it in quotation marks for shells.
=== listDevices
=== getUserStatus
-Uses a list of phone numbers to determine the statuses of those users.
+Uses a list of phone numbers or usernames to determine the statuses of those users.
Shows if they are registered on the Signal Servers or not.
In json mode this is outputted as a list of objects.
-[NUMBER [NUMBER ...]]::
+[RECIPIENT [RECIPIENT ...]]::
One or more numbers to check.
+[--username [USERNAME ...]]::
+One or more usernames to check.
+
=== send
Send a message to another user or group.
*--mention*::
Mention another group member (syntax: start:length:recipientNumber) In the apps the mention replaces part of the message text, which is specified by the start and length values.
+The units of start and length should be UTF-16 code units, NOT Unicode code points.
+For more information, see https://github.com/AsamK/signal-cli/wiki/FAQ#string-indexing-units
e.g.: `-m "Hi X!" --mention "3:1:+123456789"`
*--text-style*::
Style parts of the message text (syntax: start:length:STYLE).
+Like `--mention`, the units are UTF-16 code units.
Where STYLE is one of: BOLD, ITALIC, SPOILER, STRIKETHROUGH, MONOSPACE
e.g.: `-m "Something BIG!" --text-style "10:3:BOLD"` or for a mixed text style `-m "Something BIG!" --text-style "0:9:ITALIC" "10:3:BOLD"`
*--name*::
Find contacts with the given contact or profile name.
+*--detailed*::
+List the contacts with more details.
+If output=json, then this is always set
+
+*--internal*::
+Include internal information that's normally not user visible
+
=== listIdentities
List all known identity keys and their trust status, fingerprint and safety number.