Class: AsteriskManager::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/asterisk_manager/client.rb

Overview

Usage:

AsteriskManager::Client.start(‘host’, ‘user’, ‘secret’) do |asterisk|

asterisk.originate('SIP/123testphone', '7275551212')

end

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host, port = 5038) ⇒ Client

host

Asterisk host/IP.

port

Defaults to 5038



18
19
20
21
22
# File 'lib/asterisk_manager/client.rb', line 18

def initialize(host, port=5038)
  @host   = host
  @port   = port
  @socket = TCPSocket.new(@host, @port)
end

Class Method Details

.start(host, username, secret, port = 5038, &block) ⇒ Object

Convience method for new().start()

host

Asterisk host/IP.

username

Asterisk username.

secret

Asterisk secret.

port

Defaults to 5038



33
34
35
# File 'lib/asterisk_manager/client.rb', line 33

def start(host, username, secret, port=5038, &block)
  new(host, port).start(username, secret, &block)
end

Instance Method Details

#originate(channel, extension, options = {}) ⇒ Object

Dials the extension from the channel. Required fields are:

channel

Your Asterisk device.

extension

The number to dial.

Options

context

Context

priority

Priority

caller_id

Caller ID



70
71
72
73
74
75
76
77
78
79
# File 'lib/asterisk_manager/client.rb', line 70

def originate(channel, extension, options={})
  options = {:context => "phones", :priority => 1, :callerid => "Asterisk Automatic Wardial"}.merge(options)
  send_action "Originate", {
    :channel  => channel,
    :context  => options[:context],
    :exten    => extension,
    :priority => options[:priority],
    :callerid => options[:callerid],
  }
end

#pingObject

Sends the ping command



57
58
59
# File 'lib/asterisk_manager/client.rb', line 57

def ping
  send_action "Ping"
end

#start(username, secret, &block) ⇒ Object

TODO: Check authentication response, flag logged in or raise error



44
45
46
47
48
49
50
51
52
53
# File 'lib/asterisk_manager/client.rb', line 44

def start(username, secret, &block)
  return unless block_given?
  begin
    (username, secret)
    return yield(self)
  ensure
    logout
    @socket.close
  end
end