On 2/12/08, Rob Hillis <[EMAIL PROTECTED]> wrote: > > 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.
By RealTimeUpdate do you mean func_realtime? It shouldn't care, as cache is not implemented in realtime level, but higher (chan_sip). Are you sure you need "sip show XXX load". If you "sip prune" peer data, it should be re-loaded on next access. What i was suggesting - to dig into chan_sip and create dialplan application SipPrune(peer) that would prune the peer directly, by using corresponding function - sip_prune_peer() in chan_sip.c - that way you will gain some extra performance, as there's no manager/cli overhead. However if you're uncomfortable with C, the app_system shouldn't cause any troubles :) Regards, Atis > > > > 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 > -- Atis Lezdins VoIP Developer, IQ Labs Inc. [EMAIL PROTECTED] Skype: atis.lezdins Cell Phone: +371 28806004 Work phone: +1 800 7502835 _______________________________________________ -- 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
