Sophon Docs
Channels

Signal

Connect Sophon to Signal via the signal-cli REST bridge.

Sophon connects to Signal through signal-cli-rest-api, a REST wrapper around the signal-cli command-line tool. You'll run signal-cli-rest-api as a Docker container, register a phone number, and point Sophon at the REST endpoint.

Prerequisites

  • Docker installed on the host machine
  • A phone number that can receive SMS or voice calls (for Signal registration)
  • The phone number must not be actively used with the Signal mobile app (Signal only allows one device per number, unless using linked devices)

Step-by-Step Setup

1. Run signal-cli-rest-api

docker run -d --name signal-cli-rest-api \
  -p 8081:8080 \
  -v signal-cli-data:/home/.local/share/signal-cli \
  bbernhard/signal-cli-rest-api

This starts the REST API on port 8081.

2. Register Your Phone Number

Register via the REST API:

# Request a verification code via SMS
curl -X POST "http://localhost:8081/v1/register/+1234567890"

# Or via voice call
curl -X POST "http://localhost:8081/v1/register/+1234567890?voice=true"

Enter the verification code:

curl -X POST "http://localhost:8081/v1/register/+1234567890/verify/123456"

3. Verify Registration

curl "http://localhost:8081/v1/about"

This should return information about the registered number.

4. Configure in Sophon Dashboard

  1. Go to Channels and click Add Channel
  2. Select Signal
  3. Enter the signal-cli REST API Endpoint (e.g., http://localhost:8081)
  4. Enter the Registered Phone Number in international format (e.g., +1234567890)
  5. Click Test Connection
  6. Click Activate

5. Test It

Send a Signal message to the registered phone number. Sophon should respond.

Configuration Reference

FieldTypeRequiredDescription
signalCliEndpointurlYesURL of the signal-cli-rest-api instance
phoneNumbertextYesRegistered phone number in international format (e.g., +1234567890)

channels.json Example

{
  "id": "signal-bot",
  "type": "signal",
  "name": "Sophon Signal",
  "enabled": true,
  "config": {
    "signalCliEndpoint": "http://localhost:8081",
    "phoneNumber": "+1234567890"
  },
  "routing": {
    "agentId": "default",
    "dmBehavior": "main-session"
  },
  "status": "connected"
}

Troubleshooting

  • Registration fails — The phone number may already be registered with Signal on another device. Unregister from the Signal mobile app first, or use a dedicated number.
  • "Connection refused" — Verify signal-cli-rest-api is running and accessible at the configured endpoint. Check with curl http://localhost:8081/v1/about.
  • Messages not received — signal-cli-rest-api polls for messages. Ensure the container is running and the phone number is correctly registered. Check container logs with docker logs signal-cli-rest-api.
  • Rate limiting from Signal — Signal rate-limits message sending. If Sophon sends too many messages in a short period, some may be delayed or blocked.