Developing an operator console without AMI

I have been experimenting with AMI for almost 10 working days, it is useful but still lacks important features. For example no event when some call is Hold/Unhold, also no AMI command to put a call on Hold and Unhold.
Then I found this article on code project, about developing a IAX2 soft phone using IAXClient library. … x2878108xx

But going this way, I will be receiving events for only a registered extension and will be performing call control on only that line.

I need events for all the peers whether they are SIP/ZAP/IAX2, and call control (Originate/Answer/Hang-up/Hold/Unhold/Park/Unpark/Transfer) for all of them as well.
Anybody any idea?
Regards, Naeem.

I think the only missing events are the Hold\Unhold. AMI is really the best way for outside apps like an operator console to interact with Asterisk. There are several operator panels out there (and many more custom ones including one we hve here), and I dont think any of them show hold status (or at least they didnt last time I looked. Calls on hold still show the extension in-use which in reality it still is.

If you really want these events (and\or Actions) there are two ways to get this, first is to offer a bounty (or sponser development directly with Digium) to have the events added. Or you could create a patch yourself and submit it to be included in the open source.

I agree with swaterhouse. No need to re-invent the wheel here. You can get a bit creative while still remaining inside the current framework for the application.

I had a similar problem as you did where I needed to put calls on/off hold from a remote process.

I decided the best way to achieve this was to connect my channels through a MeetMe conference instead of native bridging. That way, if I need to put one channel ‘on-hold’, i simply kick them out of the MeetMe conference (with an AMI command) and redirect them to an AGI script which plays the on-hold music. When I want to take them off hold I redirect them from the AGI back into the appropriate MeetMe conference.

It certainly adds some complexity, but my app was already very complex, so this wasn’t very difficult to add.

Not saying this is the best way for you… just saying you have options.