From: Gregg L. <gr...@li...> - 2006-07-09 03:24:19
|
Quoting Jim Duda (7/8/06 9:33 PM): > I would like to detect when one of my asterisk phones goes off-hook. > Reason being, I want to put certain MH proxy units into off-line mode > such that MH is silent while a phone is off-hook in a room. > > I can handle the MH side. Does anyone know how I would do this in > asterisk? I would like the asterisk AGI to send a command to MH, but I > cannot figure out how to do it. Hi Jim, I continue to have mixed notions about whether an asterisk manager approach vice agi provides "better" interfacing for HA functions. In this particular case, it is my opinion that agi doesn't scale/address the problem (appropriately) that you mention above and that an asterisk manager interface is the only available option. FWIW: the technique below (actually, it's not below--its axc) works so well that when I check voicemail w/ my phone, off-hook state is detected. IMO, if there's an AGI solution, it would be convoluted at best. I recently added an extensions block to the xAP CTI2 schema message that axc transmits. CTI2 is a schema that I defined to extend CTI due to a lack (IMO) of appropriate VoIP handling. Next, I added support to axc (http://limings.net/xap/axc) to support the extended schema. Lastly, I added the code below to auto-mute my xPL-enabled mp3 appliance anytime I accept or place a call (which is an on-hook--off-hook--on-hook sequence). (Woo-hoo--xAP/xPL can co-mingle!) I guess it should be obvious, but I was a bit lazy w/ the xAP subaddressing below and am allowing calls to any extensions (not just my desk phone) to trigger the the tied event. FWIW: I'm beginning to look at implementing a similarly CTI-compliant SIP proxy in the not-to-distant future. hth Gregg ------------ user code below ---------------- $extensions_item = new xAP_Item('CTI2.*','>:extensions.*'); $extensions_item->tie_event('onoff_hook($extensions_item)'); #noloop sub onoff_hook { my ($extensions_item) = @_; if (defined($extensions_item)) { if ($$extensions_item{extension}{state} =~ /^onhook/i) { # if on-hook, then set mute to off &xAP::send('xPL','xplmedia-client.basementdesk', 'media.basic' => { command => 'mute', state => 'OFF' }); } elsif ($$extensions_item{extension}{state} # if off-hook, then set mute to on =~ /^offhook/i) { &xAP::send('xPL','xplmedia-client.basementdesk', 'media.basic' => { command => 'mute', state => 'ON' }); } else { print "axc is speaking in-tongues again"; } } else { print "Warning - no tel_item passed to onoff_hook hook"; } } |