Class: Punchblock::Translator::Freeswitch::Component::Record

Inherits:
Component show all
Defined in:
lib/punchblock/translator/freeswitch/component/record.rb

Constant Summary collapse

RECORDING_BASE_PATH =
'/var/punchblock/record'

Instance Attribute Summary

Attributes inherited from Component

#call, #call_id, #id

Instance Method Summary collapse

Methods inherited from Component

#application, #call_ended, #handle_es_event, #initialize, #logger_id, #send_event

Methods included from DeadActorSafety

#safe_from_dead_actors

Constructor Details

This class inherits a constructor from Punchblock::Translator::Freeswitch::Component::Component

Instance Method Details

#executeObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/punchblock/translator/freeswitch/component/record.rb', line 14

def execute
  max_duration = @component_node.max_duration || -1

  raise OptionError, 'A start-beep value of true is unsupported.' if @component_node.start_beep
  raise OptionError, 'A start-paused value of true is unsupported.' if @component_node.start_paused
  raise OptionError, 'An initial-timeout value is unsupported.' if @component_node.initial_timeout && @component_node.initial_timeout != -1
  raise OptionError, 'A final-timeout value is unsupported.' if @component_node.final_timeout && @component_node.final_timeout != -1
  raise OptionError, 'A max-duration value that is negative (and not -1) is invalid.' unless max_duration >= -1

  @format = @component_node.format || 'wav'

  component = current_actor
  call.register_handler :es, :event_name => 'RECORD_STOP', [:[], :record_file_path] => filename do |event|
    component.finished
  end

  record_args = ['start', filename]
  record_args << max_duration/1000 unless max_duration == -1
  call.uuid_foo :record, record_args.join(' ')

  send_ref
rescue OptionError => e
  with_error 'option error', e.message
end

#execute_command(command) ⇒ Object



39
40
41
42
43
44
45
46
47
48
# File 'lib/punchblock/translator/freeswitch/component/record.rb', line 39

def execute_command(command)
  case command
  when Punchblock::Component::Stop
    call.uuid_foo :record, "stop #{filename}"
    @complete_reason = stop_reason
    command.response = true
  else
    super
  end
end

#finishedObject



50
51
52
# File 'lib/punchblock/translator/freeswitch/component/record.rb', line 50

def finished
  send_complete_event(@complete_reason || success_reason)
end

#setupObject



10
11
12
# File 'lib/punchblock/translator/freeswitch/component/record.rb', line 10

def setup
  @complete_reason = nil
end