RELAY

Constants

View as MarkdownOpen in Claude

The signalwire.relay.constants module defines string and numeric constants used throughout the RELAY namespace for call states, end reasons, connect states, event types, message states, media operation states, and protocol settings.

1from signalwire.relay.constants import (
2 CALL_STATE_ANSWERED,
3 CALL_STATE_ENDED,
4 END_REASON_HANGUP,
5 EVENT_CALL_STATE,
6 MESSAGE_STATE_DELIVERED,
7)

Protocol

PROTOCOL_VERSION
dict

RELAY protocol version. Value: {"major": 2, "minor": 0, "revision": 0}.

AGENT_STRING
str

User agent string sent during connection. Value: "signalwire-agents-python/1.0".

DEFAULT_RELAY_HOST
str

Default WebSocket host for RELAY connections. Value: "relay.signalwire.com".

JSON-RPC Methods

Internal method identifiers used by the RELAY WebSocket protocol.

ConstantValue
METHOD_SIGNALWIRE_CONNECT"signalwire.connect"
METHOD_SIGNALWIRE_EVENT"signalwire.event"
METHOD_SIGNALWIRE_PING"signalwire.ping"
METHOD_SIGNALWIRE_DISCONNECT"signalwire.disconnect"
METHOD_SIGNALWIRE_RECEIVE"signalwire.receive"
METHOD_SIGNALWIRE_UNRECEIVE"signalwire.unreceive"

Call States

Constants representing the lifecycle states of a RELAY call. A call progresses through these states in order: created -> ringing -> answered -> ending -> ended.

ConstantValueDescription
CALL_STATE_CREATED"created"Call object has been created
CALL_STATE_RINGING"ringing"Call is ringing at the destination
CALL_STATE_ANSWERED"answered"Call has been answered
CALL_STATE_ENDING"ending"Call is in the process of ending
CALL_STATE_ENDED"ended"Call has ended
CALL_STATES
tuple[str, ...]

Tuple of all call states in lifecycle order: ("created", "ringing", "answered", "ending", "ended").

End Reasons

Constants for the reason a call ended. Available in CallStateEvent.end_reason when the call reaches the ended state.

ConstantValueDescription
END_REASON_HANGUP"hangup"Normal hangup by either party
END_REASON_CANCEL"cancel"Call was cancelled before answer
END_REASON_BUSY"busy"Destination returned busy
END_REASON_NO_ANSWER"noAnswer"No answer within timeout
END_REASON_DECLINE"decline"Call was declined
END_REASON_ERROR"error"An error occurred
END_REASON_ABANDONED"abandoned"Call was abandoned (e.g., caller hung up in queue)
END_REASON_MAX_DURATION"max_duration"Call exceeded maximum allowed duration
END_REASON_NOT_FOUND"not_found"Destination not found

Connect States

Constants representing the state of a call bridge (connect) operation. Used in ConnectEvent.connect_state.

ConstantValueDescription
CONNECT_STATE_CONNECTING"connecting"Bridge is being established
CONNECT_STATE_CONNECTED"connected"Bridge is active
CONNECT_STATE_DISCONNECTED"disconnected"Bridge has been disconnected
CONNECT_STATE_FAILED"failed"Bridge attempt failed

Event Types

String constants for all RELAY event types. Use these when registering event handlers with Call.on() or when matching against RelayEvent.event_type.

Calling Events

ConstantValue
EVENT_CALL_STATE"calling.call.state"
EVENT_CALL_RECEIVE"calling.call.receive"
EVENT_CALL_CONNECT"calling.call.connect"
EVENT_CALL_PLAY"calling.call.play"
EVENT_CALL_COLLECT"calling.call.collect"
EVENT_CALL_RECORD"calling.call.record"
EVENT_CALL_DETECT"calling.call.detect"
EVENT_CALL_FAX"calling.call.fax"
EVENT_CALL_TAP"calling.call.tap"
EVENT_CALL_SEND_DIGITS"calling.call.send_digits"
EVENT_CALL_DIAL"calling.call.dial"
EVENT_CALL_REFER"calling.call.refer"
EVENT_CALL_DENOISE"calling.call.denoise"
EVENT_CALL_PAY"calling.call.pay"
EVENT_CALL_QUEUE"calling.call.queue"
EVENT_CALL_STREAM"calling.call.stream"
EVENT_CALL_ECHO"calling.call.echo"
EVENT_CALL_TRANSCRIBE"calling.call.transcribe"
EVENT_CONFERENCE"calling.conference"
EVENT_CALLING_ERROR"calling.error"

Messaging Events

ConstantValue
EVENT_MESSAGING_RECEIVE"messaging.receive"
EVENT_MESSAGING_STATE"messaging.state"

Authorization Event

ConstantValue
EVENT_AUTHORIZATION_STATE"signalwire.authorization.state"

Message States

Constants representing the lifecycle states of an SMS/MMS message. Outbound messages progress through: queued -> initiated -> sent -> delivered (or undelivered / failed). Inbound messages arrive with state received.

ConstantValueDescription
MESSAGE_STATE_QUEUED"queued"Message has been queued for sending
MESSAGE_STATE_INITIATED"initiated"Send process has started
MESSAGE_STATE_SENT"sent"Message has been sent to the carrier
MESSAGE_STATE_DELIVERED"delivered"Message was delivered to the recipient
MESSAGE_STATE_UNDELIVERED"undelivered"Message could not be delivered
MESSAGE_STATE_FAILED"failed"Message send failed
MESSAGE_STATE_RECEIVED"received"Inbound message received
MESSAGE_TERMINAL_STATES
tuple[str, ...]

Tuple of terminal states that resolve a Message.wait() call: ("delivered", "undelivered", "failed").

Play States

Constants for audio playback operation states. Used in PlayEvent.state.

ConstantValueDescription
PLAY_STATE_PLAYING"playing"Audio is playing
PLAY_STATE_PAUSED"paused"Playback is paused
PLAY_STATE_FINISHED"finished"Playback completed
PLAY_STATE_ERROR"error"Playback error occurred

Record States

Constants for recording operation states. Used in RecordEvent.state.

ConstantValueDescription
RECORD_STATE_RECORDING"recording"Recording is active
RECORD_STATE_PAUSED"paused"Recording is paused
RECORD_STATE_FINISHED"finished"Recording completed
RECORD_STATE_NO_INPUT"no_input"No audio input detected

Detect Types

Constants for detection operation types. Used in the type field of the detect parameter passed to call.detect().

ConstantValueDescription
DETECT_TYPE_MACHINE"machine"Answering machine detection
DETECT_TYPE_FAX"fax"Fax tone detection
DETECT_TYPE_DIGIT"digit"DTMF digit detection

Room States

Constants for audio/video room join/leave states.

ConstantValueDescription
ROOM_STATE_JOINING"joining"Joining the room
ROOM_STATE_JOIN"join"Successfully joined
ROOM_STATE_LEAVING"leaving"Leaving the room
ROOM_STATE_LEAVE"leave"Successfully left

Reconnect Settings

Configuration constants for the WebSocket reconnection strategy.

ConstantValueDescription
RECONNECT_MIN_DELAY1.0Minimum delay between reconnect attempts (seconds)
RECONNECT_MAX_DELAY30.0Maximum delay between reconnect attempts (seconds)
RECONNECT_BACKOFF_FACTOR2.0Exponential backoff multiplier

Example

1from signalwire.relay.constants import (
2 CALL_STATE_ANSWERED,
3 CALL_STATE_ENDED,
4 END_REASON_HANGUP,
5 EVENT_CALL_STATE,
6 MESSAGE_STATE_DELIVERED,
7 MESSAGE_TERMINAL_STATES,
8)
9
10# Use in event handlers
11def handle_call_state(event):
12 if event.call_state == CALL_STATE_ANSWERED:
13 print("Call answered!")
14 elif event.call_state == CALL_STATE_ENDED:
15 print(f"Call ended: {event.end_reason}")
16
17# Check terminal message states
18def handle_message_state(message):
19 if message.state in MESSAGE_TERMINAL_STATES:
20 print("Message delivery complete")