Skip to content

Commit 7b9c5a3

Browse files
author
Bernhard B
authored
Merge pull request #179 from akloeckner/fix/HA-doc
Improve HOMEASSISTANT.md
2 parents f8f601a + e3bd6e1 commit 7b9c5a3

File tree

1 file changed

+110
-33
lines changed

1 file changed

+110
-33
lines changed

doc/HOMEASSISTANT.md

Lines changed: 110 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,33 @@
22

33
This document describes how to use the Signal Messenger REST API together with Home Assistant.
44

5-
prerequisites:
5+
This document covers the following topics:
6+
* [Installation](#installation)
7+
* [Set up a phone number](#set-up-a-phone-number)
8+
* [Sending messages to Signal Messenger groups](#sending-messages-to-signal-messenger-groups)
69

7-
* docker + docker-compose
10+
See also the [documentation of the Home Assistant integration](https://www.home-assistant.io/integrations/signal_messenger/).
811

9-
-or-
12+
## Installation
1013

11-
* ability to install Home Assistant add-ons
14+
### Prerequisites:
1215

13-
* a phone number to send signal notifications
16+
* infrastructure to run this container on:
17+
* alternative 1: Docker (+ Docker Compose for ease of configuration)
18+
* alternative 2: ability to install Home Assistant add-ons
19+
* a phone number to send signal notifications from
1420

15-
## Set up the docker container
21+
### Alternative 1: Set up the Docker container
1622

1723
* Create a `docker-compose.yml` file with the following contents:
1824

19-
```sh
25+
```yaml
2026
version: "3"
2127
services:
2228
signal-cli-rest-api:
2329
image: bbernhard/signal-cli-rest-api:latest
30+
environment:
31+
- MODE=json-rpc #supported modes: json-rpc, native, normal. json-prc is recommended for speed
2432
ports:
2533
- "8080:8080" # map docker port 8080 to host port 8080.
2634
volumes:
@@ -29,74 +37,143 @@ services:
2937
3038
* start the docker container with `docker-compose up`
3139

32-
## Or Install Home Assistant Add-on
40+
### Alternative 2: Install Home Assistant Add-on
3341

34-
Add this repository to your Home Assistant Add-on Store reposity list:
42+
Add this repository to your Home Assistant Add-on Store repository list:
3543

3644
[https://github.com/haberda/hassio_addons](https://github.com/haberda/hassio_addons)
3745

3846
Then install and start the add-on.
3947

40-
## Register phone number
48+
## Set up a phone number
49+
You will need to set up the phone number(s) to send notifications from using `REST` request. (You can set up multiple numbers.) In order to do so, make sure, you have `curl` installed on your system. You can then issue the commands shown below from the command line. We use the example server `127.0.0.1` on port `8080`. If you have set up a different server, you will have to change this in the commands.
50+
51+
For trouble shooting of common problems during setup, see below.
52+
53+
### Alternatives
54+
55+
* You can use a new phone number. This is recommended, as it enables full feature support. Land-line numbers are supported.
56+
* You can link `signal-cli-rest-api` as a secondary device to an existing account on your mobile phone.
57+
58+
### Alternative 1: Register a new phone number
59+
1. In order to send signal messages to other users, you first need to register your phone number. This can be done via REST requests with:
60+
61+
**Note**: If you want to register a land-line number, set the `use_voice` parameter to `true`. Signal will then call you on your number and speak the token to you instead of sending an SMS.
62+
63+
```sh
64+
curl -X POST -H "Content-Type: application/json" --data '{"use_voice": false}' 'http://<ip>:<port>/v1/register/<number>'
65+
```
66+
67+
**Example**: The following command registers the number `+431212131491291` to the Signal network.
68+
69+
```sh
70+
curl -X POST -H "Content-Type: application/json" --data '{"use_voice": false}' 'http://127.0.0.1:8080/v1/register/+431212131491291'
71+
```
72+
73+
2. After you've sent the registration request, you will receive a token via SMS (or it will be spoken to you) for verfication.
74+
75+
3. In order to complete the registration process, you need to send the verification token back via the following REST request:
4176

42-
In order to send signal messages to other users, you first need to register your phone number. This can be done via REST requests with:
77+
```sh
78+
curl -X POST -H "Content-Type: application/json" 'http://<ip>:<port>/v1/register/<number>/verify/<verification code>'
79+
```
4380

44-
`curl -X POST -H "Content-Type: application/json" 'http://<ip>:<port>/v1/register/<number>'`
81+
**Example**: The following will send a verification code for the previous example number.
4582

46-
e.g:
83+
```sh
84+
curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'
85+
```
4786

48-
This registers the number `+431212131491291` to the Signal network.
87+
### Alternative 2: Use your existing mobile phone number
88+
It is recommended to use a fresh number. Some things might not work as expected, if you only link the REST API to an existing number. For example, if you send a notification to a group including yourself, you will not be notified. This is, because the notification is sent by yourself. Therefore, consider registering your land-line number for connecting your home to Signal.
4989

50-
`curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291'`
90+
1. To link the REST API as a new device to an existing account on your mobile phone, send the following command:
5191

52-
After you've sent the registration request, you will receive a token via SMS for verfication. In order to complete the registration process you need to send the verification token back via the following REST request:
92+
```sh
93+
curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/qrcodelink?device_name=<device name>'
94+
```
5395

54-
`curl -X POST -H "Content-Type: application/json" 'http://<ip>:<port>/v1/register/<number>/verify/<verification code>'`
96+
**Example**:
5597

56-
e.g:
98+
```sh
99+
curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/qrcodelink?device_name=HomeAssistant'
100+
```
57101

58-
`curl -X POST -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'`
102+
2. This provides a QR-Code image. In case of an error a JSON object will be returned.
59103

60-
If you are trying to verify a number that has PIN assigned to it you will get an error message saying: "Verification failed! This number is locked with a pin". You can provide the PIN using "--data '{"pin": "your registration lock pin"}'" to the curl verification call:
104+
Due to security reason of Signal, the provided QR-Code will change with each request.
105+
106+
3. Scan the QR-Code with your main Signal app.
61107

62-
`curl -X POST -H "Content-Type: application/json" --data '{"pin": "your registration lock pin"}' 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'`
108+
4. The REST API will be linked to your main account. You can use it then to send message on your own personal behalf.
63109

110+
### Trouble shooting: Number is locked with a PIN
111+
If you are trying to verify a number that has a PIN assigned to it, you will get an error message saying: "Verification failed! This number is locked with a pin". You can provide the PIN using "--data '{"pin": "your registration lock pin"}'" to the `curl` verification call:
64112

65-
When you try to register a number, if you receive a response like `{"error":"Captcha required for verification (null)\n"}` then Signal is requiring a captcha. To register the number you must do the following (in Mozilla Firefox):
113+
```sh
114+
curl -X POST -H "Content-Type: application/json" --data '{"pin": "your registration lock pin"}' 'http://127.0.0.1:8080/v1/register/+431212131491291/verify/123-456'
115+
```
116+
117+
### Trouble shooting: A captcha is required
118+
If, in step 1 above, you receive a response like `{"error":"Captcha required for verification (null)\n"}` then Signal is requiring a captcha. To register the number you must do the following (in Mozilla Firefox):
66119
1. Go to [https://signalcaptchas.org/registration/generate.html](https://signalcaptchas.org/registration/generate.html)
67120
2. Open the developer console
68121
3. Answer the captcha
69122
3. On the developer console, find the line that looks like this: `Prevented navigation to “signalcaptcha://{captcha value}” due to an unknown protocol.` Copy the captcha value
70123
4. Use it to make the registration call like this:
71124

72-
`curl -X POST -H "Content-Type: application/json" -d '{"captcha":"captcha value"}' 'http://127.0.0.1:8080/v1/register/<number>`
125+
```sh
126+
curl -X POST -H "Content-Type: application/json" -d '{"captcha":"captcha value", "use_voice": false}' 'http://127.0.0.1:8080/v1/register/<number>'
127+
```
73128

74129
## Sending messages to Signal Messenger groups
75130

76131
The `signal-cli-rest-api` docker container is also capable of sending messages to a Signal Messenger group.
77132

78-
Requirements:
133+
For trouble shooting of common problems during setup, see below.
134+
135+
### Requirements
79136

80137
* Home Assistant Version >= 0.110
81-
* signal-cli-rest-api build-nr >= 2
138+
* `signal-cli-rest-api` build-nr >= 2
82139
The build number can be checked with: `curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/about'`
83140
* your phone number needs to be properly registered (see the "Register phone number" section above on how to do that)
84141

85-
A new Signal Messenger group can be created with the following REST API request:
142+
### Create a new group
143+
144+
1. A new Signal Messenger group can be created with the following REST API request:
145+
146+
```sh
147+
curl -X POST -H "Content-Type: application/json" -d '{"name": "<name of the group>", "members": ["<member1>", "<member2>"]}' 'http://127.0.0.1:8080/v1/groups/<number>'
148+
```
149+
150+
**Example**: The following creates a new Signal Messenger group called `my group` with the members `+4354546464654` and `+4912812812121`.
151+
152+
```sh
153+
curl -X POST -H "Content-Type: application/json" -d '{"name": "my group", "members": ["+4354546464654", "+4912812812121"]}' 'http://127.0.0.1:8080/v1/groups/+431212131491291'
154+
```
155+
156+
2. Next, use the following endpoint to obtain the `group_id`:
86157

87-
```curl -X POST -H "Content-Type: application/json" -d '{"name": "<name of the group>", "members": ["<member1>", "<member2>"]}' 'http://127.0.0.1:8080/v1/groups/<number>'```
158+
```sh
159+
curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/<number>'
160+
```
88161

89-
e.g:
162+
3. The `group_id` then needs to be added to the Signal Messenger's `recipients` list in the `configuration.yaml`. (see [here](https://www.home-assistant.io/integrations/signal_messenger/) for details)
90163

91-
This creates a new Signal Messenger group called `my group` with the members `+4354546464654` and `+4912812812121`.
164+
### Trouble shooting: If you receive an empty group list
92165

93-
```curl -X POST -H "Content-Type: application/json" -d '{"name": "my group", "members": ["+4354546464654", "+4912812812121"]}' 'http://127.0.0.1:8080/v1/groups/+431212131491291'```
166+
In order for groups to show up in the `groups` list, try the following steps:
94167

95-
Next, use the following endpoint to obtain the group id:
168+
* Use the JSON-RPC mode. This might already solve your issue.
169+
* You might need to first `receive` data from the Signal servers. (See https://github.com/AsamK/signal-cli/issues/82.)
96170

97-
```curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/<number>'```
171+
To do so, use the following REST request:
172+
173+
```sh
174+
curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/receive/<number>'
175+
```
98176

99-
The group id then needs to be added to the Signal Messenger's `recipients` list in the `configuration.yaml`. (see [here](https://www.home-assistant.io/integrations/signal_messenger/) for details)
100177

101178
## API details
102179

0 commit comments

Comments
 (0)