Class: Signalwire::Relay::Consumer

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/signalwire/relay/consumer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logger

#level=, #logger, logger

Constructor Details

#initialize(project: nil, token: nil, host: nil) ⇒ Consumer

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.

Parameters:

  • project (String) (defaults to: nil)

    Your SignalWire project identifier

  • token (String) (defaults to: nil)

    Your SignalWire secret token

  • SIGNALWIRE_HOST (String)

    Your SignalWire space URL (not needed for production usage)



28
29
30
31
32
33
34
35
36
# 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

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



6
7
8
# File 'lib/signalwire/relay/consumer.rb', line 6

def client
  @client
end

#projectObject (readonly)

Returns the value of attribute project.



6
7
8
# File 'lib/signalwire/relay/consumer.rb', line 6

def project
  @project
end

#tokenObject (readonly)

Returns the value of attribute token.



6
7
8
# File 'lib/signalwire/relay/consumer.rb', line 6

def token
  @token
end

Class Method Details

.contexts(val = nil) ⇒ Object



9
10
11
12
13
14
15
# File 'lib/signalwire/relay/consumer.rb', line 9

def contexts(val = nil)
  if val.nil?
    @contexts || []
  else
    @contexts = val
  end
end

Instance Method Details

#on_event(event) ⇒ Object



44
# File 'lib/signalwire/relay/consumer.rb', line 44

def on_event(event); end

#on_incoming_call(call) ⇒ Object



45
# File 'lib/signalwire/relay/consumer.rb', line 45

def on_incoming_call(call); end

#on_incoming_message(message) ⇒ Object



42
# File 'lib/signalwire/relay/consumer.rb', line 42

def on_incoming_message(message); end

#on_message_state_change(message) ⇒ Object



43
# File 'lib/signalwire/relay/consumer.rb', line 43

def on_message_state_change(message); end

#on_task(task) ⇒ Object



41
# File 'lib/signalwire/relay/consumer.rb', line 41

def on_task(task); end

#readyObject



39
# File 'lib/signalwire/relay/consumer.rb', line 39

def ready; end

#runObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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

#setupObject



38
# File 'lib/signalwire/relay/consumer.rb', line 38

def setup; end

#stopObject



65
66
67
68
69
70
71
72
73
# 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

#teardownObject



40
# File 'lib/signalwire/relay/consumer.rb', line 40

def teardown; end