[asterisk-dev] Methodologies for validating dialplan
Steve Edwards
asterisk.org at sedwards.com
Tue Jan 4 17:24:03 CST 2022
On Tue, 4 Jan 2022, Nikša Baldun wrote:
> I apologize for not commenting on the actual issue. However, after
> having the experience of writing a complex dialplan, I feel strongly
> compelled to say that it shouldn't be done at all. Any non-trivial call
> flow should be written in Fast AGI. I can't see any upside of using
> extensions.conf or AEL. Using a real programming language is
> considerably easier, faster and more powerful, all the necessary tools
> already exist and most importantly, execution is significantly faster.
> In my case, after rewriting my dialplan in Python, call preparation time
> fell from 2.5 seconds to a mere 50 milliseconds.
+1
Although, if you write your AGIs in a compiled language, a mix of dialplan
and AGI is performant. One of my dialplans invokes a half dozen AGIs
before the first prompt and nobody has ever complained about a delay.
An Asterisk lint / validator would be a good 'pre-flight' check before
pushing out to production.
My first thought was that it should be an external tool, but a couple of
my recent dialplans have been in AEL so maybe an internal tool does make
sense.
Unfortunately, I do [ab]use channel variables extensively. Some of my
dialplans create thousands of channel variables per call. Almost every
sound file reference has at least 1 channel variable. Some variable
references have nested variable names like:
set(PER-MINUTE=${PRODUCT-${EXTEN}-PER-MINUTE})
and
goto(${PRODUCT-${EXTEN}-APPLICATION},s,1)
--
Thanks in advance,
-------------------------------------------------------------------------
Steve Edwards sedwards at sedwards.com Voice: +1-760-468-3867 PST
https://www.linkedin.com/in/steve-edwards-4244281
More information about the asterisk-dev
mailing list