VOZ logo

Nueva versión del AsteriskManagerInterface (AMI)

monitosAsterisk cuenta con una herramienta muy potente que permite monitorizar y realizar acciones en un nivel más bajo de lo habitual: el AMI.

Olle Johannson acaba de hacer público mediante Sineapps, una nueva versión de este interfaz mucho más robusto y fácil de manejar por un cliente. (Recordad que el AMI se diseñó para ser utilizado por aplicaciones y no a mano)

Se han añadido nuevos comandos y eventos que podreis ver en la ampliación de este artículo y que serán añadidas a la versión Trunk del SVN de Asterisk por lo que las versiones 1.2 y 1.4 actuales no serán modificadas.

————————————————————————————————————————-

* SYNTAX CLEANUPS
—————–

– Response: headers are now either
«Success» – Action OK, this message contains response
«Error» – Action failed, reason in Message: header
«Follows» – Action OK, response follows in following Events.

– Manager version changed to 1.1

– Trying to use a «Channel» and «Uniqueid» header pair for each event that refers to the current channel. These replace various synonyms like «OrigChannel, Channel1, SrcChannel» etc etc

* CHANGED EVENTS AND ACTIONS
—————————-
– The Ping Action
– Now use Response: success
– New header «Ping: pong» 🙂

– The Events action
– Now use Response: Success
– The new status is reported as «Events: On» or «Events: Off»

– The JabberSend action
– The Response: header is now the first header in the response
– now sends «Response: Error» instead of «Failure»

– Newstate and Newchannel events
– these have changed headers
«State» -> ChannelStateDesc Text based channel state
-> ChannelState Numeric channel state
– The events does not send «» for unknown caller IDs just an empty field

– Newchannel event
– Now includes «AccountCode»

– Newstate event
– Now has «CalleridNum» for numeric caller id, like Newchannel
– The event does not send «» for unknown caller IDs just an empty field

– Dial event
– Event Dial has new headers, to comply with other events
– Source -> Channel Channel name (caller)
– SrcUniqueID -> UniqueID Uniqueid
(new) -> Dialstring Dialstring in app data

– Link and Unlink events
– The «Link» and «Unlink» bridge events in channel.c are now renamed to «Bridge»
– The link state is in the bridgestate: header as «Link» or «Unlink»
– For channel.c bridges, «Bridgetype: core» is added. This opens up for bridge events in rtp.c
– The RTP channel also reports Bridge: events with bridgetypes
– rtp-native RTP native bridge
– rtp-direct RTP peer-2-peer bridge (NAT support only)
– rtp-remote Remote (re-invite) bridge. (Not reported yet)

– The «Rename» manager event has a renamed header, to use the same
terminology for the current channel as other events
– Oldname -> Channel

– The «NewCallerID» manager event has a renamed header
– CallerID -> CallerIDnum
– The event does not send «» for unknown caller IDs just an empty field

– Reload event
– The «Reload» event sent at manager reload now has a new header and is now implemented in more modules than manager to alert a reload. For channels, there’s a CHANNELRELOAD event to use.
(new) -> Module: manager | CDR | DNSmgr | RTP | ENUM
(new) -> Status: enabled | disabled
– To support reload events from other modules too
– cdr module added

– Status action replies (Event: Status)
Header changes
– link -> BridgedChannel
– Account -> AccountCode
– (new) -> BridgedUniqueid

– StatusComplete Event
New header
– (new) -> Items Number of channels reported

– The ExtensionStatus manager command now has a «StatusDesc» field with text description of the state

– The Registry and Peerstatus events in chan_sip and chan_iax now use «ChannelType» instead of «ChannelDriver»

– The Response to Action: IAXpeers now have a Response: Success header

– The MeetmeJoin now has caller ID name and Caller ID number fields (like MeetMeLeave)

– Action ZapShowChannels
Header changes
– Channel: -> ZapChannel
For active channels, the Channel: and Uniqueid: headers are added You can now add a «ZapChannel: » argument to zapshowchannels actions to only get information about one channel.

– Event ZapShowChannelsComplete
New header
– (new) -> Items: Reports number of channels reported

* NEW EVENTS
————

– Event: Transfer
Modules: res_features, chan_sip
Purpose:
Inform about call transfer, linking transferer with transfer target You should be able to trace the call flow with this missing piece of information. If it works out well, the «Transfer» event should be followed by a «Bridge» event The transfermethod: header informs if this is a pbx core transfer or something done on channel driver level. For SIP, check the example:
Example:

Event: Transfer
Privilege: call,all
TransferMethod: SIP
TransferType: Blind
Channel: SIP/device1-01849800
SIP-Callid: 091386f505842c87016c4d93195ec67d@127.0.0.1
TargetChannel: SIP/device2-01841200
TransferExten: 100
TransferContext: default

– Event: ChannelUpdate
Modules: chan_sip.c, chan_iax2.c
Purpose:
Updates channel information with ID of PVT in channel driver, to be able to link events on channel driver level.
* Integrated in SVN trunk as of May 4th, 2007

Example:

Event: ChannelUpdate
Privilege: system,all
Uniqueid: 1177271625.27
Channel: SIP/olle-01843c00
Channeltype: SIP
SIPcallid: NTQzYWFiOWM4NmE0MWRkZjExMzU2YzQ3OWQwNzg3ZmI.
SIPfullcontact: sip:olle@127.0.0.1:49054

– Action: CoreSettings
Modules: manager.c
Purpose: To report core settings, like AMI and Asterisk version, maxcalls and maxload settings.
* Integrated in SVN trunk as of May 4th, 2007
Example:
Response: Success
ActionID: 1681692777
AMIversion: 1.1
AsteriskVersion: SVN-oej-moremanager-r61756M
SystemName: EDVINA-node-a
CoreMaxCalls: 120
CoreMaxLoadAvg: 0.000000
CoreRunUser: edvina
CoreRunGroup: edvina

– Action: CoreStatus
Modules: manager.c
Purpose: To report current PBX core status flags, like number of concurrent calls, startup and reload time.
* Integrated in SVN trunk as of May 4th, 2007
Example:
Response: Success
ActionID: 1649760492
CoreStartupTime: 22:35:17
CoreReloadTime: 22:35:17
CoreCurrentCalls: 20

– Event: NewAccountCode
Modules: cdr.c
Purpose: To report a change in account code for a live channel
Example:
Event: NewAccountCode
Privilege: call,all
Channel: SIP/olle-01844600
Uniqueid: 1177530895.2
AccountCode: Stinas account 1234848484
OldAccountCode: OllesAccount 12345

* TODO
——
– Someone needs to fix «iaxpeers»

Anterior artículoMás sobre patentes en la VoIP
Siguiente artículo 660-658Programación de AGI: Ahora tambien en Haskell