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