asterisk-manager¶ ↑
Ruby Gem for connecting to an Asterisk server via the AMI (Asterisk Manager Interface) protocol.
Events¶ ↑
Create a connection and login
connection = AsteriskManager::Connection.new host: 'asterisk.example.com', port: 5038, username: 'admin', password: 'secret'
Setup an EventListener
event_listener = EventListener.new connection: connection event_listener.listen
Setup a ChannelObserver and have it subscribe to events via the EventListener
channel_observer = ChannelObserver.new channel_observer.subscribe event_listener
Setup a CallObserver and have it subscribe to events via the EventListener
call_observer = CallObserver.new call_observer.subscribe event_listener
Now make a call and take a look
channel_observer.channels.inspect { "1367101866.1995" => #<AsteriskManager::Channel @unique_id="1367101866.1995", @sip_id="SIP/501-0000078b", @state="Up", @created_at=2013-04-27 15:31:07 -0700>, "1367101866.1996" => #<AsteriskManager::Channel @unique_id="1367101866.1996", @sip_id="SIP/203-0000078c", @state="Up", @created_at=2013-04-27 15:31:07 -0700> } call_observer.calls.inspect { [ "1367101866.1995", "1367101866.1996" ] => #<AsteriskManager::Call @channel_1=#<AsteriskManager::Channel @unique_id="1367101866.1995", @sip_id="SIP/501-0000078b", @state=nil, @created_at=2013-04-27 15:31:07 -0700>, @channel_2=#<AsteriskManager::Channel @unique_id="1367101866.1996", @sip_id="SIP/203-0000078c", @state=nil, @created_at=2013-04-27 15:31:07 -0700>, @created_at=2013-04-27 15:31:07 -0700> }
Scripts¶ ↑
The curses_display
script opens a connection to an Asterisk server, sets up a ChannelObserver and a CallObserver that subscribe to events via an EventListener. The observers maintain lists of current Channels and Calls. A curses loop renders a pretty list of these Channels and Calls.
script/curses_display asterisk.example.com 5038 admin secret
----------------------------------------------Channels---------------------------------------------- Unique ID SIP ID State Age ---------------------------------------------------------------------------------------------------- 1367100883.1993 SIP/501-00000789 Up 6.372375 1367100883.1994 SIP/203-0000078a Up 6.356668 -----------------------------------------------Calls------------------------------------------------ Channel 1 Unique ID Channel 1 SIP ID Channel 2 Unique ID Channel 2 SIP ID Age ---------------------------------------------------------------------------------------------------- 1367100883.1993 SIP/501-00000789 1367100883.1994 SIP/203-0000078a 6.140765
Copyright¶ ↑
Copyright © 2013 John Wulff. See LICENSE.txt for further details.