[asterisk-users] followme app

John A. Sullivan III jsullivan at opensourcedevel.com
Tue Aug 25 11:24:35 CDT 2009


On Tue, 2009-08-25 at 12:21 -0400, John A. Sullivan III wrote:
> On Tue, 2009-08-25 at 16:28 +0200, harry R wrote:
> > Hi 
> > 
> > Someone may give me an example of followme() application using in a
> > dialplan (including what to configure in followme.conf) ?
> > I use asterisk 1.6.1 so if your example can match to that release it's
> > will be wonderfull.
> <snip>
> We are using followme on 1.6.1 with the slight complication that we are
> a multi-tenant environment.  Since we have clients with the same
> extension numbers living in different contexts, we cannot directly map
> extensions to followme definitions.  Here's how we handled it.
> 
> In followme.conf (actually in included files - one per client), we have
> definitions using a globally unique identifier per user, e.g.,
> 
> [1234561] ; John Sullivan
> context=zx400
> number=>12345678901,30
> number=>12345678902,36
> 
> The call to followme is initiated as part of our basic call handling
> macro:
> 
> [macro-common]
> ; ARG1 = extension to dial
> ; ARG2 = extension for voice mail
> ; ARG3 = context for voice mail
> ; ARG4 = extension for followme (optional)
> ; ARG5 = Timeout is seconds until voice mail / followme (optional - defaults to 24)
> exten => s,1,Set(TM=${IF(${ISNULL(${ARG5})}?24:${ARG5})})
> exten => s,n,Dial(${ARG1},${TM})
> exten => s,n,Wait(0.5)
> exten => s,n,Goto(s-${DIALSTATUS},1)
> 
> exten => s-NOANSWER,1,GotoIf($[${ISNULL(${ARG4})}]?vm)
> exten => s-NOANSWER,n,background(custom/ImSorry)
> exten => s-NOANSWER,n,background(custom/Silence-0.25)
> exten => s-NOANSWER,n,background(custom/No1AtXten)
> exten => s-NOANSWER,n,background(custom/Silence-0.5)
> exten => s-NOANSWER,n,background(custom/Press${ARG2})
> ;exten => s-NOANSWER,n,background(custom/Silence-0.25)
> exten => s-NOANSWER,n,background(custom/4VoiceMail)
> exten => s-NOANSWER,n,background(custom/Silence-0.5)
> exten => s-NOANSWER,n,background(custom/Press${ARG4})
> exten => s-NOANSWER,n,background(custom/Silence-0.25)
> exten => s-NOANSWER,n,background(custom/TryToFindPerson)
> exten => s-NOANSWER,n,WaitExten(5)
> exten => s-NOANSWER,n(vm),Voicemail(${MACRO_EXTEN}@${ARG3},u)
> 
> exten => s-BUSY,1,Voicemail(${MACRO_EXTEN}@${ARG3},b)
> 
> exten => _s-.,1,Goto(s-NOANSWER,1)
> 
> where they press some key for voice mail and another key to have the
> system "try to find" the person, i.e., followme.  This key choice is
> then handled in the originating context:
> 
> exten => 2,1,GotoIf(${ISNULL(${FM})}?i,1)
> exten => 2,n,FollowMe(${FM},san)
> exten => 2,n,Goto(1,1)
> 
> where we first check to make sure it was a hand-off from the macro and
> not a misdialed, invalid extension.
> 
> FM is a variable set to track the globally unique followme identifier.
> Here is a sample user's extension definition showing how we set the
> identifier:
> 
> ; John Sullivan
> exten => xxx,1,Set(__VM=312) ; VoiceMail ID
> exten => xxx,n,Set(__FM=100001) ; Followme ID
> exten => xxx,n,Macro(common,SIP/jasiii,1,zx400,2)
> exten => 8xxx,1,VoiceMail(xxx at zx400)
> exten => 7xxx,1,VoiceMailMain(xxx at zx400)
> exten => 7xxx,n,Hangup()
> 
> I realize that's a somewhat complicated example and, as we are very new
> to asterisk, any critiques and improvements are welcome.  In summary:
> 
>      1. We defined a followme for a user with a unique ID - in many
>         cases this can be the extension
>      2. Our busy / not-available routine offers an option for followme,
>         traps this number as an extension just like an automated
>         attendant
>      3. Checks to make sure that extension was not an accident, e.g., if
>         the number pressed for followme is "2", we don't want people
>         landing in followme because they dialed 2 from the main
>         auto-attendant if they happen to be in the same context
>      4. Call followme by passing it the unique ID and any options
> 
> Hope this helps. Again, bear in mind that we are new to this so if
> someone suggests a better way, they are probably right :-) - John
<snip>
Oops! I didn't consistently expunge all the internal data.  The __FM=
should be 1234561 and the __VM= should be xxx.  That will make the above
example internally consistent.  Sorry - John
-- 
John A. Sullivan III
Open Source Development Corporation
+1 207-985-7880
jsullivan at opensourcedevel.com

http://www.spiritualoutreach.com
Making Christianity intelligible to secular society




More information about the asterisk-users mailing list