mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-28 18:10:38 +00:00
654 lines
26 KiB
Text
654 lines
26 KiB
Text
/////
|
|
vim:set ts=4 sw=4 tw=82 noet:
|
|
/////
|
|
|
|
:quotes.~:
|
|
|
|
= signal-cli-dbus (5)
|
|
:doctype: manpage
|
|
|
|
== Name
|
|
|
|
signal-cli-dbus - A commandline and dbus interface for the Signal messenger
|
|
|
|
== Synopsis
|
|
|
|
*signal-cli* [--verbose] [--config CONFIG] [-a ACCOUNT] [-o {plain-text,json}] daemon [--dbus] [--dbus-system]
|
|
|
|
*dbus-send* [--system | --session] [--print-reply] --type=method_call --dest="org.asamk.Signal" /org/asamk/Signal[/_<phonenumber>] org.asamk.Signal.<method> [string:<string argument>] [array:<type>:<array argument>]
|
|
|
|
Note: when daemon was started without explicit `-a ACCOUNT`, the `dbus-send` command requires adding the phone number in `/org/asamk/Signal/_<phonenumber>`.
|
|
|
|
== Description
|
|
|
|
See signal-cli (1) for details on the application.
|
|
|
|
This documentation handles the supported methods when running signal-cli as a DBus daemon.
|
|
|
|
The method are described as follows:
|
|
|
|
method(arg1<type>, arg2<type>, ...) -> return<type>
|
|
|
|
Where <type> is according to DBus specification:
|
|
|
|
* <a> : Array of ... (comma-separated list) (array:)
|
|
* (...) : Struct (cannot be sent via `dbus-send`)
|
|
* <b> : Boolean (false|true) (boolean:)
|
|
* <i> : Signed 32-bit (int) integer (int32:)
|
|
* <o> : DBusPath object (objpath:)
|
|
* <s> : String (string:)
|
|
* <x> : Signed 64-bit (long) integer (int64:)
|
|
* <y> : Unsigned 8-bit (byte) integer (byte:)
|
|
* <> : no return value
|
|
|
|
The final parenthetical value (such as "boolean:") is the type indicator used by `dbus-send`.
|
|
|
|
Exceptions are the names of the Java Exceptions returned in the body field.
|
|
They typically contain an additional message with details.
|
|
All Exceptions begin with "org.asamk.Signal.Error." which is omitted here for better readability.
|
|
|
|
Phone numbers always have the format +<countrycode><regional number>
|
|
|
|
== Methods
|
|
|
|
=== SignalControl interface
|
|
|
|
These methods are available if the daemon is started in multi-account mode (without an explicit `-a ACCOUNT`).
|
|
The exported `/org/asamk/Signal` object provides a SignalControl interface, with methods to manage accounts.
|
|
Individual accounts are exported as separate objects and provide a Signal interface, that's described below.
|
|
e.g. `/org/asamk/Signal/\_441234567890` where the + dialing code is replaced by an underscore (_).
|
|
|
|
link() -> deviceLinkUri<s>::
|
|
link(newDeviceName<s>) -> deviceLinkUri<s>::
|
|
* newDeviceName : Name to give new device (defaults to "cli" if no name is given)
|
|
* deviceLinkUri : URI of newly linked device
|
|
|
|
Returns a URI of the form "sgnl://linkdevice?uuid=...".
|
|
This can be piped to a QR encoder to create a display that can be captured by a Signal smartphone client.
|
|
|
|
For example:
|
|
|
|
[source,bash]
|
|
----
|
|
dbus-send --session --dest=org.asamk.Signal --type=method_call --print-reply /org/asamk/Signal org.asamk.Signal.link string:"My secondary client" | tr '\n' '\0' | sed 's/.*string //g' | sed 's/\"//g' | qrencode -s10 -tANSI256
|
|
----
|
|
|
|
listAccounts() -> accountList<as>::
|
|
* accountList : Array of all attached accounts in DBus object path form
|
|
|
|
Exceptions: None
|
|
|
|
register(number<s>, voiceVerification<b>) -> <>::
|
|
* number : Phone number
|
|
* voiceVerification : true = use voice verification; false = use SMS verification
|
|
|
|
Exceptions: Failure, InvalidNumber, RequiresCaptcha
|
|
|
|
registerWithCaptcha(number<s>, voiceVerification<b>, captcha<s>) -> <>::
|
|
* number : Phone number
|
|
* voiceVerification : true = use voice verification; false = use SMS verification
|
|
* captcha : Captcha string
|
|
|
|
Exceptions: Failure, InvalidNumber, RequiresCaptcha
|
|
|
|
verify(number<s>, verificationCode<s>) -> <>::
|
|
* number : Phone number
|
|
* verificationCode : Code received from Signal after successful registration request
|
|
|
|
Command fails if PIN was set after previous registration; use verifyWithPin instead.
|
|
|
|
Exceptions: Failure, InvalidNumber
|
|
|
|
verifyWithPin(number<s>, verificationCode<s>, pin<s>) -> <>::
|
|
* number : Phone number
|
|
* verificationCode : Code received from Signal after successful registration request
|
|
* pin : PIN you set with setPin command after verifying previous registration
|
|
|
|
Exceptions: Failure, InvalidNumber
|
|
|
|
version() -> version<s>::
|
|
* version : Version string of signal-cli
|
|
|
|
Exceptions: None
|
|
|
|
=== Signal interface
|
|
|
|
The following methods listen to the account's object path, which is constructed as follows:
|
|
|
|
- for single-account mode: "/org/asamk/Signal/"
|
|
- for multi-account mode: "/org/asamk/Signal/" + DBusNumber
|
|
* DBusNumber: account's phone number, with underscore (_) replacing plus (+)
|
|
|
|
getContactName(number<s>) -> name<s>::
|
|
* number : Phone number
|
|
* name : Contact's name in local storage (from the primary device for a linked account, or the one set with setContactName); if not set, contact's profile name is used
|
|
|
|
Exceptions: None
|
|
|
|
getContactNumber(name<s>) -> numbers<as>::
|
|
* numbers : Array of phone number
|
|
* name : Contact or profile name ("firstname lastname")
|
|
|
|
Searches contacts and known profiles for a given name and returns the list of all known numbers.
|
|
May result in e.g. two entries if a contact and profile name is set.
|
|
|
|
Exceptions: None
|
|
|
|
getSelfNumber() -> number<s>::
|
|
* number : Your phone number
|
|
|
|
Exceptions: None
|
|
|
|
isContactBlocked(number<s>) -> blocked<b>::
|
|
* number : Phone number
|
|
* blocked : true=blocked, false=not blocked
|
|
|
|
For unknown numbers false is returned but no exception is raised.
|
|
|
|
Exceptions: InvalidPhoneNumber
|
|
|
|
isRegistered() -> result<b>::
|
|
isRegistered(number<s>) -> result<b>::
|
|
isRegistered(numbers<as>) -> results<ab>::
|
|
* number : Phone number
|
|
* numbers : String array of phone numbers
|
|
* result : true=number is registered, false=number is not registered
|
|
* results : Boolean array of results
|
|
|
|
For unknown numbers, false is returned, but no exception is raised.
|
|
If no number is given, returns true (indicating that you are registered).
|
|
|
|
Exceptions: InvalidNumber
|
|
|
|
listNumbers() -> numbers<as>::
|
|
* numbers : String array of all known numbers
|
|
|
|
This is a concatenated list of all defined contacts as well of profiles known (e.g. peer group members or sender of received messages)
|
|
|
|
Exceptions: None
|
|
|
|
removePin() -> <>::
|
|
|
|
Removes registration PIN protection.
|
|
|
|
Exceptions: Failure
|
|
|
|
sendEndSessionMessage(recipients<as>) -> <>::
|
|
* recipients : Array of phone numbers
|
|
|
|
Exceptions: Failure, InvalidNumber, UntrustedIdentity
|
|
|
|
sendMessage(message<s>, attachments<as>, recipient<s>) -> timestamp<x>::
|
|
sendMessage(message<s>, attachments<as>, recipients<as>) -> timestamp<x>::
|
|
* message : Text to send (can be UTF8)
|
|
* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
|
|
* recipient : Phone number of a single recipient
|
|
* recipients : String array of phone numbers
|
|
* timestamp : Long, can be used to identify the corresponding Signal reply
|
|
|
|
Depending on the type of the recipient field this sends a message to one or multiple recipients.
|
|
|
|
Exceptions: AttachmentInvalid, Failure, InvalidNumber, UntrustedIdentity
|
|
|
|
sendMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
|
|
sendMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
|
|
* emoji : Unicode grapheme cluster of the emoji
|
|
* remove : Boolean, whether a previously sent reaction (emoji) should be removed
|
|
* targetAuthor : String with the phone number of the author of the message to which to react
|
|
* targetSentTimestamp : Long representing timestamp of the message to which to react
|
|
* recipient : String with the phone number of a single recipient
|
|
* recipients : Array of strings with phone numbers, should there be more recipients
|
|
* timestamp : Long, can be used to identify the corresponding Signal reply
|
|
|
|
Depending on the type of the recipient(s) field this sends a reaction to one or multiple recipients.
|
|
|
|
Exceptions: Failure, InvalidNumber
|
|
|
|
sendPaymentNotification(receipt<ay>, note<s>, recipient<s>) -> timestamp<x>::
|
|
* receipt : Byte array with the payment receipt blob
|
|
* note : String with a note for the payment
|
|
* recipient : String with the phone number of a single recipient
|
|
|
|
* timestamp : Long, can be used to identify the corresponding Signal reply
|
|
|
|
Exceptions: Failure
|
|
|
|
sendNoteToSelfMessage(message<s>, attachments<as>) -> timestamp<x>::
|
|
* message : Text to send (can be UTF8)
|
|
* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
|
|
* timestamp : Long, can be used to identify the corresponding Signal reply
|
|
|
|
Exceptions: Failure, AttachmentInvalid
|
|
|
|
sendReadReceipt(recipient<s>, targetSentTimestamps<ax>) -> <>::
|
|
* recipient : Phone number of a single recipient
|
|
* targetSentTimestamps : Array of Longs to identify the corresponding Signal messages
|
|
|
|
Exceptions: Failure, UntrustedIdentity
|
|
|
|
sendViewedReceipt(recipient<s>, targetSentTimestamp<ax>) -> <>::
|
|
* recipient : Phone number of a single recipient
|
|
* targetSentTimestamp : Array of Longs to identify the corresponding signal messages
|
|
|
|
Exceptions: Failure, UntrustedIdentity
|
|
|
|
sendRemoteDeleteMessage(targetSentTimestamp<x>, recipient<s>) -> timestamp<x>::
|
|
sendRemoteDeleteMessage(targetSentTimestamp<x>, recipients<as>) -> timestamp<x>::
|
|
* targetSentTimestamp : Long representing timestamp of the message to delete
|
|
* recipient : String with the phone number of a single recipient
|
|
* recipients : Array of strings with phone numbers, should there be more recipients
|
|
* timestamp : Long, can be used to identify the corresponding signal reply
|
|
|
|
Depending on the type of the recipient(s) field this deletes a message with one or multiple recipients.
|
|
|
|
Exceptions: Failure, InvalidNumber
|
|
|
|
sendTyping(recipient<s>, stop<b>) -> <>::
|
|
* recipient : Phone number of a single recipient
|
|
* stop : True, if typing state should be stopped
|
|
|
|
Exceptions: Failure, UntrustedIdentity
|
|
|
|
setContactBlocked(number<s>, block<b>) -> <>::
|
|
* number : Phone number affected by method
|
|
* block : false=remove block, true=blocked
|
|
|
|
Messages from blocked numbers will no longer be forwarded via DBus.
|
|
|
|
Exceptions: InvalidNumber
|
|
|
|
setContactName(number<s>,name<>) -> <>::
|
|
* number : Phone number
|
|
* name : Name to be set in contacts (in local storage with signal-cli)
|
|
|
|
Exceptions: InvalidNumber, Failure
|
|
|
|
deleteContact(number<s>) -> <>::
|
|
* number : Phone number
|
|
|
|
Exceptions: Failure
|
|
|
|
deleteRecipient(number<s>) -> <>::
|
|
* number : Phone number
|
|
|
|
Exceptions: Failure
|
|
|
|
setExpirationTimer(number<s>, expiration<i>) -> <>::
|
|
* number : Phone number of recipient
|
|
* expiration : int32 for the number of seconds before messages to this recipient disappear.
|
|
Set to 0 to disable expiration.
|
|
|
|
Exceptions: Failure, InvalidNumber
|
|
|
|
setPin(pin<s>) -> <>::
|
|
* pin : PIN you set after registration (resets after 7 days of inactivity)
|
|
|
|
Sets a registration lock PIN, to prevent others from registering your number.
|
|
|
|
Exceptions: Failure
|
|
|
|
submitRateLimitChallenge(challenge<s>, captcha<s>) -> <>::
|
|
* challenge : The challenge token taken from the proof required error.
|
|
* captcha : The captcha token from the solved captcha on the Signal website.
|
|
Can be used to lift some rate-limits by solving a captcha.
|
|
|
|
Exception: IOErrorException
|
|
|
|
updateProfile(name<s>, about<s>, aboutEmoji <s>, avatar<s>, remove<b>) -> <>::
|
|
updateProfile(givenName<s>, familyName<s>, about<s>, aboutEmoji <s>, avatar<s>, remove<b>) -> <>::
|
|
* name : Name for your own profile (empty if unchanged)
|
|
* givenName : Given name for your own profile (empty if unchanged)
|
|
* familyName : Family name for your own profile (empty if unchanged)
|
|
* about : About message for profile (empty if unchanged)
|
|
* aboutEmoji : Emoji for profile (empty if unchanged)
|
|
* avatar : Filename of avatar picture for profile (empty if unchanged)
|
|
* remove : Set to true if the existing avatar picture should be removed
|
|
|
|
Exceptions: Failure
|
|
|
|
uploadStickerPack(stickerPackPath<s>) -> url<s>::
|
|
* stickerPackPath : Path to the manifest.json file or a zip file in the same directory
|
|
* url : URL of sticker pack after successful upload
|
|
|
|
Exceptions: Failure
|
|
|
|
version() -> version<s>::
|
|
* version : Version string of signal-cli
|
|
|
|
Exceptions: None
|
|
|
|
==== Group related methods
|
|
|
|
createGroup(groupName<s>, members<as>, avatar<s>) -> groupId<ay>::
|
|
* groupName : String representing the display name of the group
|
|
* members : String array of new members to be invited to group
|
|
* avatar : Filename of avatar picture to be set for group (empty if none)
|
|
* groupId : Byte array representing the internal group identifier
|
|
|
|
Exceptions: AttachmentInvalid, Failure, InvalidNumber;
|
|
|
|
getGroup(groupId<ay>) -> objectPath<o>::
|
|
* groupId : Byte array representing the internal group identifier
|
|
* objectPath : DBusPath for the group
|
|
|
|
getGroupMembers(groupId<ay>) -> members<as>::
|
|
* groupId : Byte array representing the internal group identifier
|
|
* members : String array with the phone numbers of all active members of a group
|
|
|
|
Exceptions: None, if the group name is not found an empty array is returned
|
|
|
|
joinGroup(inviteURI<s>) -> <>::
|
|
* inviteURI : String starting with https://signal.group/#
|
|
|
|
Behavior of this method depends on the `requirePermission` parameter of the `enableLink` method.
|
|
If permission is required, `joinGroup` adds you to the requesting members list.
|
|
Permission may be granted based on the group's `PermissionAddMember` property (`ONLY_ADMINS` or `EVERY_MEMBER`).
|
|
If permission is not required, `joinGroup` admits you immediately to the group.
|
|
|
|
Exceptions: Failure
|
|
|
|
listGroups() -> groups<a(oays)>::
|
|
* groups : Array of Structs(objectPath, groupId, groupName)
|
|
** objectPath : DBusPath
|
|
** groupId : Byte array representing the internal group identifier
|
|
** groupName : String representing the display name of the group
|
|
|
|
sendGroupMessage(message<s>, attachments<as>, groupId<ay>) -> timestamp<x>::
|
|
* message : Text to send (can be UTF8)
|
|
* attachments : String array of filenames to send as attachments (passed as filename, so need to be readable by the user signal-cli is running under)
|
|
* groupId : Byte array representing the internal group identifier
|
|
* timestamp : Long, can be used to identify the corresponding Signal reply
|
|
|
|
Exceptions: GroupNotFound, Failure, AttachmentInvalid, InvalidGroupId
|
|
|
|
sendGroupTyping(groupId<ay>, stop<b>) -> <>::
|
|
* groupId : Byte array representing the internal group identifier
|
|
* stop : True, if typing state should be stopped
|
|
|
|
Exceptions: Failure, GroupNotFound, UntrustedIdentity
|
|
|
|
sendGroupMessageReaction(emoji<s>, remove<b>, targetAuthor<s>, targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
|
|
* emoji : Unicode grapheme cluster of the emoji
|
|
* remove : Boolean, whether a previously sent reaction (emoji) should be removed
|
|
* targetAuthor : String with the phone number of the author of the message to which to react
|
|
* targetSentTimestamp : Long representing timestamp of the message to which to react
|
|
* groupId : Byte array representing the internal group identifier
|
|
* timestamp : Long, can be used to identify the corresponding signal reply
|
|
|
|
Exceptions: Failure, InvalidNumber, GroupNotFound, InvalidGroupId
|
|
|
|
sendGroupRemoteDeleteMessage(targetSentTimestamp<x>, groupId<ay>) -> timestamp<x>::
|
|
* targetSentTimestamp : Long representing timestamp of the message to delete
|
|
* groupId : Byte array with base64 encoded group identifier
|
|
* timestamp : Long, can be used to identify the corresponding signal reply
|
|
|
|
Exceptions: Failure, GroupNotFound, InvalidGroupId
|
|
|
|
==== Device related methods
|
|
|
|
addDevice(deviceUri<s>) -> <>::
|
|
* deviceUri : URI in the form of "sgnl://linkdevice?uuid=..." (formerly "tsdevice:/?uuid=...") Normally displayed by a Signal desktop app, smartphone app, or another signal-cli instance using the `link` control method.
|
|
|
|
getDevice(deviceId<x>) -> devicePath<o>::
|
|
* deviceId : Long representing a deviceId
|
|
* devicePath : DBusPath object for the device
|
|
|
|
Exceptions: DeviceNotFound
|
|
|
|
listDevices() -> devices<a(oxs)>::
|
|
* devices : Array of structs (objectPath, id, name)
|
|
** objectPath : DBusPath representing the device's object path
|
|
** id : Long representing the deviceId
|
|
** name : String representing the device's name
|
|
|
|
Exceptions: InvalidUri
|
|
|
|
sendContacts() -> <>::
|
|
|
|
Sends a synchronization message with the local contacts list to all linked devices.
|
|
This command should only be used if this is the primary device.
|
|
|
|
Exceptions: Failure
|
|
|
|
sendSyncRequest() -> <>::
|
|
|
|
Sends a synchronization request to the primary device (for group, contacts, ...).
|
|
Only works if sent from a secondary device.
|
|
|
|
Exceptions: Failure
|
|
|
|
==== Identity related methods
|
|
|
|
listIdentities() -> identities<a(oss)>::
|
|
* identities : Array of structs (objectPath, id, name)
|
|
** objectPath : DBusPath representing the identity object path
|
|
** uuid : Internal uuid of the identity
|
|
** number : Phone number of the identity
|
|
|
|
Lists all know identities
|
|
|
|
getIdentity(Number<s>) -> identityPath<o>::
|
|
* Number : Phone number
|
|
* identityPath : DBusPath object for the identity
|
|
|
|
Gets the identity Dbus path for a given phone number
|
|
|
|
Exceptions: Failure
|
|
|
|
=== Signal.Group interface
|
|
|
|
The following methods listen to the group's object path, which can be obtained from the listGroups() method and is constructed as follows:
|
|
|
|
<ACCOUNT_PATH> + "/Groups/" + DBusGroupId
|
|
|
|
DBusGroupId : groupId in base64 format, with underscore (_) replacing plus (+), equals (=), or slash (/)
|
|
|
|
Groups have the following (case-sensitive) properties:
|
|
|
|
* Id<ay> (read-only) : Byte array representing the internal group identifier
|
|
* Name<s> : Display name of the group
|
|
* Description<s> : Description of the group
|
|
* Avatar<s> (write-only) : Filename of the avatar
|
|
* IsBlocked<b> : true=member will not receive group messages; false=not blocked
|
|
* IsMember<b> (read-only) : always true (object path exists only for group members)
|
|
* IsAdmin<b> (read-only) : true=member has admin privileges; false=not admin
|
|
* MessageExpirationTimer<i> : int32 representing message expiration time for group
|
|
* Members<as> (read-only) : String array of group members' phone numbers
|
|
* PendingMembers<as> (read-only) : String array of pending members' phone numbers
|
|
* RequestingMembers<as> (read-only) : String array of requesting members' phone numbers
|
|
* Admins<as> (read-only) : String array of admins' phone numbers
|
|
* PermissionAddMember<s> : String representing who has permission to add members *ONLY_ADMINS, EVERY_MEMBER*
|
|
* PermissionEditDetails<s> : String representing who may edit group details *ONLY_ADMINS, EVERY_MEMBER*
|
|
* PermissionSendMessage<s> : String representing who post messages to group *ONLY_ADMINS, EVERY_MEMBER* (note that ONLY_ADMINS is equivalent to IsAnnouncementGroup)
|
|
* GroupInviteLink<s> (read-only) : String of the invitation link (starts with https://signal.group/#)
|
|
|
|
To get a property, use (replacing `--session` with `--system` if needed):
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Group string:$PROPERTY_NAME`
|
|
|
|
To set a property, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Set string:org.asamk.Signal.Group string:$PROPERTY_NAME variant:$PROPERTY_TYPE:$PROPERTY_VALUE`
|
|
|
|
To get all properties, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Group`
|
|
|
|
addAdmins(recipients<as>) -> <>::
|
|
* recipients : String array of phone numbers
|
|
|
|
Grant admin privileges to recipients.
|
|
|
|
Exceptions: Failure
|
|
|
|
addMembers(recipients<as>) -> <>::
|
|
* recipients : String array of phone numbers
|
|
|
|
Add recipients to group if they are pending members; otherwise add recipients to list of requesting members.
|
|
This command is also used to accept group invitations by adding yourself to a group.
|
|
|
|
Exceptions: Failure
|
|
|
|
disableLink() -> <>::
|
|
|
|
Disables the group's invitation link.
|
|
|
|
Exceptions: Failure
|
|
|
|
enableLink(requiresApproval<b>) -> <>::
|
|
* requiresApproval : true=add numbers using the link to the requesting members list
|
|
|
|
Enables the group's invitation link.
|
|
|
|
Exceptions: Failure
|
|
|
|
quitGroup() -> <>::
|
|
Exceptions: Failure, LastGroupAdmin
|
|
|
|
removeAdmins(recipients<as>) -> <>::
|
|
* recipients : String array of phone numbers
|
|
|
|
Remove admin privileges from recipients.
|
|
|
|
Exceptions: Failure
|
|
|
|
removeMembers(recipients<as>) -> <>::
|
|
* recipients : String array of phone numbers
|
|
|
|
Remove recipients from group.
|
|
|
|
Exceptions: Failure
|
|
|
|
resetLink() -> <>::
|
|
|
|
Resets the group's invitation link to a new random URL starting with https://signal.group/#
|
|
|
|
Exceptions: Failure
|
|
|
|
=== Signal.Device interface
|
|
|
|
The following methods listen to the device's object path, which is constructed as follows:
|
|
|
|
<ACCOUNT_PATH> + "/Devices/" + deviceId
|
|
|
|
deviceId : Number representing the device identifier (obtained from listDevices() method)
|
|
|
|
Devices have the following (case-sensitive) properties:
|
|
|
|
* Id<x> (read-only) : Long representing the device identifier
|
|
* Created<x> (read-only) : Long representing the number of milliseconds since the Unix epoch
|
|
* LastSeen<x> (read-only) : Long representing the number of milliseconds since the Unix epoch
|
|
* Name<s> : String representing the display name of the device
|
|
|
|
To get a property, use (replacing `--session` with `--system` if needed):
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Device string:$PROPERTY_NAME`
|
|
|
|
To set a property, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Set string:org.asamk.Signal.Device string:$PROPERTY_NAME variant:$PROPERTY_TYPE:$PROPERTY_VALUE`
|
|
|
|
To get all properties, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Device`
|
|
|
|
removeDevice() -> <>::
|
|
|
|
Exceptions: Failure
|
|
|
|
=== Signal.Identity interface
|
|
|
|
The following methods listen to the Identities object path, which is constructed as follows:
|
|
|
|
<ACCOUNT_PATH> + "/Identities/" + identity
|
|
|
|
identity : Either the phone number of a contact with underscore (_) replacing plus (+) , or if not known its uuid
|
|
|
|
Identities have the following (case-sensitive) properties:
|
|
|
|
* Number<s> (read-only) : Phone number of the contact
|
|
* Uuid<x> (read-only) : Internal uuid representing the contact
|
|
* Fingerprint<x> (read-only) : Byte array representing the fingerprint
|
|
* SafetyNumber<s> (read-only) : String representation of the safety number used to verify trust
|
|
* TrustLevel<s> (read-only) : Current trust level (UNSTRUSTED, TRUSTED_UNVERIFIED, TRUSTED_VERIFIED)
|
|
* AddedDate<x> (read-only) : Long representing the number of milliseconds since the Unix epoch
|
|
* ScannableSafetyNumber<x> (read-only) : Byte array representation of the safety number
|
|
|
|
To get a property, use (replacing `--session` with `--system` if needed):
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Identity string:$PROPERTY_NAME`
|
|
|
|
To get all properties, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Identity`
|
|
|
|
trust() -> <>::
|
|
|
|
Establish trust with the given identity.
|
|
TrustLevel will become TRUSTED_UNVERFIED
|
|
|
|
Exceptions: Failure
|
|
|
|
trustVerified(SafetyNumber<s>) -> <>::
|
|
|
|
Establish trust with the given identity using their safety number.
|
|
TrustLevel will become TRUSTED_VERIFIED
|
|
|
|
Exceptions: Failure
|
|
|
|
=== Signal.Configuration interface
|
|
|
|
The configuration's object path, which exists only for primary devices, is constructed as follows:
|
|
<ACCOUNT_PATH> + "/Configuration"
|
|
|
|
Configurations have the following (case-sensitive) properties:
|
|
|
|
* ReadReceipts<b> : should send read receipts (true/false)
|
|
* UnidentifiedDeliveryIndicators<b> : should show unidentified delivery indicators (true/false)
|
|
* TypingIndicators<b> : should send/show typing indicators (true/false)
|
|
* LinkPreviews<b> : should generate link previews (true/false)
|
|
|
|
To get a property, use (replacing `--session` with `--system` if needed):
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Get string:org.asamk.Signal.Configuration string:$PROPERTY_NAME`
|
|
|
|
To set a property, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.Set string:org.asamk.Signal.Configuration string:$PROPERTY_NAME variant:$PROPERTY_TYPE:$PROPERTY_VALUE`
|
|
|
|
To get all properties, use:
|
|
`dbus-send --session --dest=org.asamk.Signal --print-reply $OBJECT_PATH org.freedesktop.DBus.Properties.GetAll string:org.asamk.Signal.Configuration`
|
|
|
|
== Signals
|
|
|
|
SyncMessageReceived (timestamp<x>, sender<s>, destination<s>, groupId<ay>, message<s>, attachments<as>)::
|
|
* timestamp : Integer value that can be used to associate this e.g. with a sendMessage()
|
|
* sender : Phone number of the sender
|
|
* destination : DBus code for destination
|
|
* groupId : Byte array representing the internal group identifier (empty when private message)
|
|
* message : Message text
|
|
* attachments : String array of filenames in the signal-cli storage (~/.local/share/signal-cli/attachments/)
|
|
|
|
The sync message is received when the user sends a message from a linked device.
|
|
|
|
ReceiptReceived (timestamp<x>, sender<s>)::
|
|
* timestamp : Integer value that can be used to associate this e.g. with a sendMessage()
|
|
* sender : Phone number of the sender
|
|
|
|
This signal is sent by each recipient (e.g. each group member) after the message was successfully delivered to the device
|
|
|
|
MessageReceived(timestamp<x>, sender<s>, groupId<ay>, message<s>, attachments<as>)::
|
|
* timestamp : Integer value that is used by the system to send a ReceiptReceived reply
|
|
* sender : Phone number of the sender
|
|
* groupId : Byte array representing the internal group identifier (empty when private message)
|
|
* message : Message text
|
|
* attachments : String array of filenames in the signal-cli storage (~/.local/share/signal-cli/attachments/)
|
|
|
|
This signal is received whenever we get a private message or a message is posted in a group we are an active member
|
|
|
|
== Examples
|
|
|
|
Send a text message (without attachment) to a contact::
|
|
dbus-send --print-reply --type=method_call --dest="org.asamk.Signal" /org/asamk/Signal org.asamk.Signal.sendMessage string:"Message text goes here" array:string: string:+123456789
|
|
|
|
Send a group message::
|
|
dbus-send --session --print-reply --type=method_call --dest=org.asamk.Signal /org/asamk/Signal org.asamk.Signal.sendGroupMessage string:'The message goes here' array:string:'/path/to/attachment1','/path/to/attachment2' array:byte:139,22,72,247,116,32,170,104,205,164,207,21,248,77,185
|
|
|
|
Print the group name corresponding to a groupId; the daemon runs on system bus, and was started without an explicit `-a ACCOUNT`::
|
|
dbus-send --system --print-reply --type=method_call --dest='org.asamk.Signal' /org/asamk/Signal/_1234567890 org.asamk.Signal.getGroupName array:byte:139,22,72,247,116,32,170,104,205,164,207,21,248,77,185
|
|
|
|
== Authors
|
|
|
|
Maintained by AsamK <asamk@gmx.de>, who is assisted by other open source contributors.
|
|
For more information about signal-cli development, see
|
|
<https://github.com/AsamK/signal-cli>.
|