[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