class Signalwire::Relay::Consumer

Attributes

client[R]
project[R]
token[R]

Public Class Methods

contexts(val = nil) click to toggle source
# File lib/signalwire/relay/consumer.rb, line 9
def contexts(val = nil)
  if val.nil?
    @contexts || []
  else
    @contexts = val
  end
end
new(project: nil, token: nil, host: nil) click to toggle source

Creates a Consumer instance ready to be run

The initialization parameters can also be supplied via ENV variables (SIGNALWIRE_PROJECT_KEY, SIGNALWIRE_TOKEN and SIGNALWIRE_HOST) Passed-in values override the environment ones.

@param project [String] Your SignalWire project identifier @param token [String] Your SignalWire secret token @param SIGNALWIRE_HOST [String] Your SignalWire space URL (not needed for production usage)

# File lib/signalwire/relay/consumer.rb, line 28
def initialize(project: nil, token: nil, host: nil)
  @project = project   || ENV['SIGNALWIRE_PROJECT_KEY']
  @token =   token     || ENV['SIGNALWIRE_TOKEN']
  @url =     host  || ENV['SIGNALWIRE_HOST'] || Signalwire::Relay::DEFAULT_URL
  @client = Signalwire::Relay::Client.new(project: @project,
    token: @token, host: @url)

  @client.session.register_for_shutdown(self)
end

Public Instance Methods

on_event(event) click to toggle source
# File lib/signalwire/relay/consumer.rb, line 44
def on_event(event); end
on_incoming_call(call) click to toggle source
# File lib/signalwire/relay/consumer.rb, line 45
def on_incoming_call(call); end
on_incoming_message(message) click to toggle source
# File lib/signalwire/relay/consumer.rb, line 42
def on_incoming_message(message); end
on_message_state_change(message) click to toggle source
# File lib/signalwire/relay/consumer.rb, line 43
def on_message_state_change(message); end
on_task(task) click to toggle source
# File lib/signalwire/relay/consumer.rb, line 41
def on_task(task); end
ready() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 39
def ready; end
run() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 47
def run
  logger.info "Starting up #{self.class}"
  setup
  
  client.on :ready do
    setup_contexts
  end

  client.once :ready do
    setup_receive_listeners
    setup_all_events_listener
    setup_task_listeners
    setup_messaging_listeners
    ready
  end
  client.connect!
end
setup() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 38
def setup; end
stop() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 65
def stop
  teardown
  logger_thread = Thread.new do
    logger.info "#{self.class} Consumer shutting down."
  end
  logger_thread.join

  client.disconnect!
end
teardown() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 40
def teardown; end

Private Instance Methods

setup_all_events_listener() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 97
def setup_all_events_listener
  client.on :event do |evt|
    on_event(evt)
  end
end
setup_contexts() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 85
def setup_contexts
  self.class.contexts.each do |ctx|
    @client.setup_context(ctx)
  end
end
setup_messaging_listeners() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 103
def setup_messaging_listeners
  client.messaging.on(:message_received) { |evt|on_incoming_message(evt) }
  client.messaging.on(:message_state_change) { |evt| on_message_state_change(evt) }
end
setup_receive_listeners() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 77
def setup_receive_listeners
  self.class.contexts.each do |ctx|
    client.calling.receive context: ctx do |call|
      on_incoming_call(call)
    end
  end
end
setup_task_listeners() click to toggle source
# File lib/signalwire/relay/consumer.rb, line 91
def setup_task_listeners
  client.on :task do |task|
    on_task(task)
  end
end