class Punchblock::Translator::Asterisk::AGICommand
Constants
- ARG_QUOTER
Attributes
id[R]
Public Class Methods
new(id, channel, command, *params)
click to toggle source
# File lib/punchblock/translator/asterisk/agi_command.rb, line 14 def initialize(id, channel, command, *params) @id, @channel, @command, @params = id, channel, command, params end
Public Instance Methods
execute(ami_client)
click to toggle source
@raises RubyAMI::Error, ChannelGoneError
# File lib/punchblock/translator/asterisk/agi_command.rb, line 19 def execute(ami_client) AMIErrorConverter.convert { ami_client.send_action 'AGI', 'Channel' => @channel, 'Command' => agi_command, 'CommandID' => id } end
parse_result(event)
click to toggle source
# File lib/punchblock/translator/asterisk/agi_command.rb, line 23 def parse_result(event) parser = RubyAMI::AGIResultParser.new event['Result'] {code: parser.code, result: parser.result, data: parser.data} rescue ArgumentError => e pb_logger.warn "Illegal message received from Asterisk: #{e.message}" {code: -1, result: nil, data: nil} end
Private Instance Methods
agi_command()
click to toggle source
# File lib/punchblock/translator/asterisk/agi_command.rb, line 33 def agi_command "#{@command} #{@params.map { |arg| quote_arg(arg) }.join(' ')}".squish end
quote_arg(arg)
click to toggle source
Arguments surrounded by quotes; quotes backslash-escaped. See parse_args in asterisk/res/res_agi.c (Asterisk
1.4.21.1)
# File lib/punchblock/translator/asterisk/agi_command.rb, line 39 def quote_arg(arg) '"' + arg.to_s.gsub(ARG_QUOTER) { |m| "\\#{m}" } + '"' end