[asterisk-users] Parsing IAXPeers from Asterisk Manager (PHP API)
Jared Smith
jsmith at digium.com
Thu Jul 19 09:49:03 CDT 2007
On Thu, 2007-07-19 at 09:16 -0400, Chris Earle wrote:
> Trying to do what should be a basic info retrieval from my asterisk
> network -- get the list of IAXPeers and break down by IP, name, and Status
> etc.
Unfortunately, this is one of those cases where the AMI output is the
same as the CLI output, which makes it difficult to parse. (Regular
expressions can help, but you obviously have an aversion to them, so
we'll use another method.) As long as your IAX peer names are shorter
than 16 characters, you can use a trick I've used for a while... first
get the list of iax2 peer names:
Action: IAXPeers
ActionID: 987325918659161
ActionID: 987325918659161
Name/Username Host Mask Port
Status
flibbertygibbit (Unspecified) (D) 255.255.255.255 0
Unmonitored
demo/asterisk 216.207.245.47 (S) 255.255.255.255 4569
Unmonitored
2 iax2 peers [0 online, 0 offline, 2 unmonitored]
and break on the first space or forward slash. Once I have an array of
IAX peer names, I use the Command action to run "iax2 show peer
<peername>" on each of the IAX peers, like this:
Action: Command
Command: iax2 show peer flibbertygibbit
ActionID: 762315185916555
Response: Follows
Privilege: Command
ActionID: 762315185916555
* Name : flibbertygibbit
Secret : <Not set>
Context : blah
Mailbox :
Dynamic : Yes
Callerid : "" <>
Expire : -1
ACL : No
Addr->IP : (Unspecified) Port 0
Defaddr->IP : 0.0.0.0 Port 4569
Username : hullabaloo
Codecs : 0xe703 (g723|gsm|g729|speex|ilbc)
Codec Order : (none)
Status : Unmonitored
Qualify : every 60000ms when OK, every 10000ms when UNREACHABLE
(sample smoothing Off)
--END COMMAND--
That output is obviously somewhat easier to parse, although it's not
perfect either. Hopefully the Asterisk development community will
eventually get around to rewriting much of the AMI actions to make their
output easier for programs to parse.
--
Jared Smith
Community Relations Manager
Digium, Inc.
More information about the asterisk-users
mailing list