[asterisk-users] IVR: Dealing with database and returned variables

Steve Edwards asterisk.org at sedwards.com
Thu Mar 8 10:25:06 CST 2012

On Wed, 7 Mar 2012, bilal ghayyad wrote:

> If I need to build IVR using Asterisk (so I will read and write to 
> database), until now from my reading, I can understand that the best way 
> is to use AGI to call external script like php which will manipulate 
> every thing, correct?

I have a strong aversion to cobbling up database access in dialplan. It's 
just ugly. An AGI is so much cleaner and flexible.

My personal preference is C, but that's my sharpest tool and being a 
compiled language is faster than scripting languages like PHP.

If PHP is your 'sharpest tool,' go with it. Unless you're cranking through 
a boat load of calls or working within tight hardware constraints you 
should be fine.

> Well, the returned values from this script that I can use it to route 
> the call to the proper queue or Phone, how I can handle these returned 
> values? Do I have to store it in the database? Well, how I will read it 
> from database and use it in the extensions.conf?

You can set channel variables within your AGI. I wrote a 'third party 
verification' system a couple of years ago. One of the AGIs 
('lookup-dnis') looks up the dialed number (DNIS) in the database and sets 
a couple hundred channel variables in the blink of an eye. The channel 
variables then control the flow of the script - what kind of questions are 
asked and what to do with the responses.

Thanks in advance,
Steve Edwards       sedwards at sedwards.com      Voice: +1-760-468-3867 PST
Newline                                              Fax: +1-760-731-3000

More information about the asterisk-users mailing list