Module: SignalWire::Relay

Defined in:
lib/signalwire/relay/call.rb,
lib/signalwire/relay/action.rb,
lib/signalwire/relay/client.rb,
lib/signalwire/relay/message.rb,
lib/signalwire/relay/constants.rb,
lib/signalwire/relay/relay_event.rb

Defined Under Namespace

Classes: AIAction, Action, ActionTimeoutError, Call, CallReceiveEvent, CallStateEvent, CallingErrorEvent, Client, CollectAction, CollectEvent, ConferenceEvent, ConnectEvent, DenoiseEvent, DetectAction, DetectEvent, DialEvent, EchoEvent, FaxAction, FaxEvent, HoldEvent, Message, MessageReceiveEvent, MessageStateEvent, PayAction, PayEvent, PlayAction, PlayEvent, QueueEvent, RecordAction, RecordEvent, ReferEvent, RelayError, RelayEvent, SendDigitsEvent, StandaloneCollectAction, StreamAction, StreamEvent, TapAction, TapEvent, TranscribeAction, TranscribeEvent

Constant Summary collapse

PROTOCOL_VERSION =

Protocol version sent during signalwire.connect

{ 'major' => 2, 'minor' => 0, 'revision' => 0 }.freeze
AGENT_STRING =
'signalwire-agents-ruby/1.0'
METHOD_SIGNALWIRE_CONNECT =

JSON-RPC methods

'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'
EVENT_AUTHORIZATION_STATE =

Authorization state event

'signalwire.authorization.state'
CALL_STATE_CREATED =

Call states

'created'
CALL_STATE_RINGING =
'ringing'
CALL_STATE_ANSWERED =
'answered'
CALL_STATE_ENDING =
'ending'
CALL_STATE_ENDED =
'ended'
CALL_STATES =
[
  CALL_STATE_CREATED,
  CALL_STATE_RINGING,
  CALL_STATE_ANSWERED,
  CALL_STATE_ENDING,
  CALL_STATE_ENDED
].freeze
END_REASON_HANGUP =

End reasons

'hangup'
END_REASON_CANCEL =
'cancel'
END_REASON_BUSY =
'busy'
END_REASON_NO_ANSWER =
'noAnswer'
END_REASON_DECLINE =
'decline'
END_REASON_ERROR =
'error'
END_REASON_ABANDONED =
'abandoned'
END_REASON_MAX_DURATION =
'max_duration'
END_REASON_NOT_FOUND =
'not_found'
CONNECT_STATE_CONNECTING =

Connect states

'connecting'
CONNECT_STATE_CONNECTED =
'connected'
CONNECT_STATE_DISCONNECTED =
'disconnected'
CONNECT_STATE_FAILED =
'failed'
EVENT_CALL_STATE =

Event types — calling

'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'
EVENT_MESSAGING_RECEIVE =

Messaging event types

'messaging.receive'
EVENT_MESSAGING_STATE =
'messaging.state'
MESSAGE_STATE_QUEUED =

Message states

'queued'
MESSAGE_STATE_INITIATED =
'initiated'
MESSAGE_STATE_SENT =
'sent'
MESSAGE_STATE_DELIVERED =
'delivered'
MESSAGE_STATE_UNDELIVERED =
'undelivered'
MESSAGE_STATE_FAILED =
'failed'
MESSAGE_STATE_RECEIVED =
'received'
MESSAGE_TERMINAL_STATES =
[
  MESSAGE_STATE_DELIVERED,
  MESSAGE_STATE_UNDELIVERED,
  MESSAGE_STATE_FAILED
].freeze
PLAY_STATE_PLAYING =

Play states

'playing'
PLAY_STATE_PAUSED =
'paused'
PLAY_STATE_FINISHED =
'finished'
PLAY_STATE_ERROR =
'error'
RECORD_STATE_RECORDING =

Record states

'recording'
RECORD_STATE_PAUSED =
'paused'
RECORD_STATE_FINISHED =
'finished'
RECORD_STATE_NO_INPUT =
'no_input'
DETECT_TYPE_MACHINE =

Detect types

'machine'
DETECT_TYPE_FAX =
'fax'
DETECT_TYPE_DIGIT =
'digit'
ROOM_STATE_JOINING =

Join room states

'joining'
ROOM_STATE_JOIN =
'join'
ROOM_STATE_LEAVING =
'leaving'
ROOM_STATE_LEAVE =
'leave'
RECONNECT_MIN_DELAY =

Reconnect settings

1.0
RECONNECT_MAX_DELAY =
30.0
RECONNECT_BACKOFF_FACTOR =
2.0
DEFAULT_RELAY_HOST =

Default host

'relay.signalwire.com'
EVENT_CLASS_MAP =

Map event_type string to typed event class

{
  'calling.call.state'       => CallStateEvent,
  'calling.call.receive'     => CallReceiveEvent,
  'calling.call.play'        => PlayEvent,
  'calling.call.record'      => RecordEvent,
  'calling.call.collect'     => CollectEvent,
  'calling.call.connect'     => ConnectEvent,
  'calling.call.detect'      => DetectEvent,
  'calling.call.fax'         => FaxEvent,
  'calling.call.tap'         => TapEvent,
  'calling.call.stream'      => StreamEvent,
  'calling.call.send_digits' => SendDigitsEvent,
  'calling.call.dial'        => DialEvent,
  'calling.call.refer'       => ReferEvent,
  'calling.call.denoise'     => DenoiseEvent,
  'calling.call.pay'         => PayEvent,
  'calling.call.queue'       => QueueEvent,
  'calling.call.echo'        => EchoEvent,
  'calling.call.transcribe'  => TranscribeEvent,
  'calling.call.hold'        => HoldEvent,
  'calling.conference'       => ConferenceEvent,
  'calling.error'            => CallingErrorEvent,
  'messaging.receive'        => MessageReceiveEvent,
  'messaging.state'          => MessageStateEvent
}.freeze

Class Method Summary collapse

Class Method Details

.parse_event(payload) ⇒ Object

Parse a raw signalwire.event params hash into a typed event object.



664
665
666
667
668
# File 'lib/signalwire/relay/relay_event.rb', line 664

def self.parse_event(payload)
  event_type = payload['event_type'] || ''
  klass = EVENT_CLASS_MAP[event_type] || RelayEvent
  klass.from_payload(payload)
end