This /is/ implemented in the Asterisk Dialplan.

What we're doing is to write a custom "roaming extension" application that (among other things) alters the mailbox that the device looks at to set the MWI indicator to that of the "roaming" extension. All the systems we sell have SIP peers stored in a realtime MySQL database.

For example, roaming extension 109 logs on to the device on extension 900. (our client requires the device to always maintain it's own extension number) As part of the login process, RealTimeUpdate is called to update the mailbox watched by the device from 900 to 109. While the update goes through fine, Asterisk itself has already cached the mailbox number as a result of having rtcachefriends set to "yes" in sip.conf. Of course, this is required for the MWI indicator to work properly in the first place.

The point that I'm using the system calls is to flush the cached device details and reload them from MySQL. I can't see any way of doing this through RealTimeUpdate or via any other application, so I'm left with the manager commands to flush the entry, followed by a "sip show XXX load" to re-cache the details. Works nicely, but it seems a bit ugly to me.

Frankly, I'm surprised that RealTimeUpdate doesn't contain an option to flush and reload details, which would negate the need to employ other "hacks" to achieve this.


Atis Lezdins wrote:
On 2/12/08, Rob Hillis <[EMAIL PROTECTED]> wrote:
 If this is the only real alternative, then in this instance I'll stick with
using the System command.  Writing an AGI to execute two manager commands in
this case is even greater overkill than using the System command.

 I understand that normally anything that calls multiple manager commands
would usually be something complex enough to justify an AGI.  The exception
seems to be when you're dealing with cached realtime data. (is it just me,
or does that sound like a rather odd oxymoron?)


 ast guy wrote:
 > why don't you write an AGI which talks to asterisk manager API 5038 port
and executes the asterisk commands. You execute asterisk command via agi not
using system command
 >
 > -ag
 >
 > On Feb 11, 2008 11:24 AM, Rob Hillis <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>> wrote:
 >

Hi guys,

 I've been working on a little dialplan fragment for roaming extensions,
 however the customer wants us to set the MWI indicator for the roaming
 extension that has just logged in.  We're using MySQL realtime, so I've
 figured out that RealTimeUpdate will happily update the realtime
 database with the correct mailbox.  My problem comes when I need to tell
 Asterisk to flush the realtime data for that extension and reload it so
 that the cached data is correct.  Running the commands "sip prune
 realtime peer XXX" followed by "sip show peer XXX load" work fine from
 the Asterisk manager interface and correctly update the cached data so
 the MWI indicator works fine.

 What I want to know is if there is any better method of running manager
 API commands from within the dialplan than the horribly ugly
 System(asterisk -rx "sip prune realtime peer XXX")  It works, but from
 my point of view, it's a somewhat nasty hack.

 Anyone have any suggestions?

You could write dialplan application to do the same in chan_sip. Code
should be very simple, just the processing of one argument and reusing
existing functions. If you'll argument good enough why you need it, i
think it could be included in asterisk.

Regards,
Atis


_______________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to