[asterisk-users] More efficient dial plan for a list of selective inbound numbers
Leif Madsen
leif.madsen at asteriskdocs.org
Thu Apr 22 21:40:26 CDT 2010
bruce bruce wrote:
> I have a list of CLIDs prefixes that I want to use in a context.
>
> Basically, I want to do this but the list of prefix numbers is much
> longer. List of prefixes (556,557,557,989.....)
>
> [custom-inbound]
> exten => _556,1,answer
> exten => _556,n,playback(beep)
>
> exten => _557,1,answer
> exten => _557,n,playback(beep)
>
> exten => _558,1,answer
> exten => _558,n,playback(beep)
>
> exten => _989,1,answer
> exten => _989,n,playback(beep)
>
> If there are like 100s of different prefixes, this list gets really big.
> Not desired. How can I have a more efficient dialplan?
You could use a pattern match and then do a lookup in the database to see if the
prefix exists:
[custom-inbound]
exten => _XXX,1,Verbose(2,Lookup prefix ${EXTEN})
exten => _XXX,n,Set(PREFIX=${EXTEN})
exten => _XXX,n,Set(PREFIX_EXISTS=${ODBC_GET_PREFIX(${PREFIX})})
exten => _XXX,n,GotoIf($["${PREFIX_EXISTS}" = "1"]?prefixAllowed,1:prefixDisallowed)
exten => prefixAllowed,1,Verbose(2,Prefix ${PREFIX} Allowed)
exten => prefixAllowed,n,Playback(beep)
exten => prefixDisallowed,1,Verbose(2,Prefix ${PREFIX} Disallowed)
exten => prefixDisallowed,n,Congestion()
func_odbc.conf
[GET_PREFIX]
dsn=<something setup in res_odbc.conf)
readsql=SELECT 1 FROM prefix_table WHERE prefix = '${ARG1}'
Or something like that (untested).
Leif.
More information about the asterisk-users
mailing list