[asterisk-users] Speed Dial Application in *

Gordon Henderson gordon+asterisk at drogon.net
Sun Apr 1 12:08:34 MST 2007


On Sun, 1 Apr 2007, Dovid B wrote:

> You can try putting out a bounty to make a new app in asterisk or set a
> variable in the asterisk db.

Why a new app? That way you get "forced" into doing it the app way, (like 
FollowMe in 1.4 which, if I understand the wiki page on it, doesn't do 
anything remotely like what I want out of a FollowMe, which I've written 
for my own system entirly in dialplan) or write your own - and if you're 
writing your own anyway then ...

And as there appears to be sounds-files in the sound add-ons package for 
speed-dialling, I'm guessing that more than one person has done this in 
the past ...

So here's a quick & dirty personal (per extension) speed-dial system, 
independant of what phone you are using (which I'm not claiming any 
originality for as I got the idea from somewhere else, just altered it for 
my own system) It's trivial to alter for a company-wide system too - (I 
use *1x and *2x to implement 20 system-wide speed-dials) slightly harder 
to put a web front-end on it (but not impossible as I'm in the process of 
testing that for me), and with that, then you can use incoming caller-id 
to associate a name to a number, if they are in the speed-dial list (just 
like most phones do with their own personal phone-book)

;======================================================================
; Personal speed-dial:
;	Let the extension user assign a personal speed dial code
;	From *00 through *09
;======================================================================

;    Setup: *0 then a single digit 0-9 then the phone number to store at that location

exten => _*0X.,1,Answer()
exten => _*0X.,n,Set(me=${CALLERID(num)})
exten => _*0X.,n,Set(pos=${EXTEN:2:1})
exten => _*0X.,n,Set(num=${EXTEN:3})
exten => _*0X.,n,Set(DB(${me}/sd${pos})=${num})
exten => _*0X.,n,SayDigits(${num})
exten => _*0X.,n,Playback(at)
exten => _*0X.,n,Playback(position)
exten => _*0X.,n,SendText(*0${pos}=${num})
exten => _*0X.,n,SayDigits(${pos})
exten => _*0X.,n,Macro(starAck)

;    List:		*0X*

exten => _*0X*,1,Answer()
exten => _*0X*,n,Set(me=${CALLERID(num)})
exten => _*0X*,n,Set(pos=${EXTEN:2:1})
exten => _*0X*,n,Set(num=${DB(${me}/sd${pos})})
exten => _*0X*,n,GotoIf(${num}?:noNum)
exten => _*0X*,n,SendText(*0${pos}=${num})
exten => _*0X*,n,SayDigits(${num})
exten => _*0X*,n,Playback(at)
exten => _*0X*,n,Playback(position)
exten => _*0X*,n,SayDigits(0${pos})
exten => _*0X*,n,Hangup()
exten => _*0X*,n(noNum),Playback(that-number)
exten => _*0X*,n,Playback(is-not-in-the)
exten => _*0X*,n,Playback(speed-dial)
exten => _*0X*,n,Playback(system)
exten => _*0X*,n,Hangup()

;    Recall and dial:	*0X

exten => _*0X,1,Answer()
exten => _*0X,n,Set(me=${CALLERID(num)})
exten => _*0X,n,Set(pos=${EXTEN:2:1})
exten => _*0X,n,Set(num=${DB(${me}/sd${pos})})
exten => _*0X,n,GotoIf(${num}?:noNum)
exten => _*0X,n,SendText(Calling: ${num})
exten => _*0X,n,Goto(${num},1)
exten => _*0X,n(noNum),Playback(that-number)
exten => _*0X,n,Playback(is-not-in-the)
exten => _*0X,n,Playback(speed-dial)
exten => _*0X,n,Playback(system)
exten => _*0X,n,Hangup()


> And in Dial Plan
> exten => _77.,1,Dial(SIP/${DB(speeddial/${EXTEN:2})}@sip_provider) ; Dials the speed dial

If you just "Goto" the speed-dial, then, assuming you have dial-out in the 
same context it will dial then number for you - which would be an internal 
extension, or be dialled out by whatever out-dialling rules you have - eg. 
least cost routing, etc.

However with the Goto system, it's possible to really screw up your system 
with a cleverly dialled speed-dial, but I'll leave that as an excercise to 
the reader ;-)

Enjoy!
Gordon


More information about the asterisk-users mailing list