RelayClient
RelayClient manages a persistent WebSocket connection to SignalWire’s RELAY
service. It handles authentication, automatic reconnection with exponential
backoff, inbound event dispatch, outbound dialing, and SMS/MMS messaging.
Use it when you need imperative, event-driven control over calls rather than
the declarative AI agent approach.
The client supports two authentication modes: project ID + API token, or JWT token. Credentials can be passed directly or read from environment variables.
Properties
project
SignalWire project ID. Set via constructor or SIGNALWIRE_PROJECT_ID environment variable.
token
API token for authentication. Set via constructor or SIGNALWIRE_TOKEN environment variable.
jwtToken
JWT token for alternative authentication. Read from the SIGNALWIRE_JWT_TOKEN environment variable.
When provided, project and token are not required.
host
SignalWire space hostname (e.g., your-space.signalwire.com). Set via constructor or SIGNALWIRE_SPACE
environment variable. Defaults to relay.signalwire.com.
contexts
List of contexts to subscribe to for inbound call and message events.
relayProtocol
Server-assigned protocol string from the connect response. Read-only. Used internally for session resumption on reconnect.
Methods
Register an inbound call handler.
Register an inbound message handler.
Establish the WebSocket connection and authenticate.
Close the WebSocket connection cleanly.
Start the client with automatic reconnection.
Initiate an outbound call.
Send an outbound SMS or MMS message.
Subscribe to additional contexts for inbound events.
Unsubscribe from inbound event contexts.
Send a raw JSON-RPC request to RELAY.