I need to setup a simple IVR system for a friend's company that will let the caller navigate through the menu by pressing phone keys. Its kind of like a bus schedule.
for today's schedule press '1', for tomorrow's schedule press '2' and so on.
It is solely an information system, i.e. no navigation route will end up with a real person but only audio messages will be played.
Now, I've never setup anything like this before and did a little digging on Google. Seems like I will be able to achieve this using Asterisk.
It's perfectly possible.
What you need to know:
Asterisk has some problems with H323
. If your provider supplies SIP
, ask them for SIP
instead.
You may build a whole IVR
on dial plans in your extensions.conf
, but for complex tasks it's better to use AGI
. These are Perl
or Python
or whatever language scripts that implement your IVR
logic. Each AGI
session spans a child process, use FastAGI
and a network daemon if you expect frequent connections.
Multiple concurrent calls are not a problem, my installation of Asterisk on a simple PC handles hundreds sumultaneous calls.
The only things that may really affect performance are sound conversion and tone detection.
To improve performance, you should:
Stick to one codec (µLaw
is that I use), force all SIP
connections to use that codec, and preconvert all your sound files to it using sox -t ul
. As soon as you've done it, all Asterisk operation amounts to reading the file bytes from disk and sending them over network with just basic wrapping. There are no math, nothing except simple read-wrap-send operations.
Ask your provider to detect tones on his side and send them to you out of band, using RFC 2833
. Tone detection is quite a CPU consuming operation, let them do it theirselves.
I personally run Asterisk on a 2,66 MHz Celeron IV
with 2048 MB RAM
, under Fedora 10 X86_64
. 150 connections at once work OK, there are no delays.
Overall traffic amounts to about 9.6 KByte/sec
per connection. For a modern VPS there should be no problem at all.
Asterisk rocks. For a few lines a simple P3 or better will do. Don't virtualise the PBX; Asterisk relies on pretty accurate timing.
FreePBX makes it really easy to set up an IVR - got a decent web-based front end and supports some cool Asterisk tools out of the box.
EDIT: FreePBX isn't Asterisk - it is a pretty interface that generates the configs for you. Trixbox includes it by default if you want a simple point and shoot solution.
If your VoIP account supports multiple incoming lines then Asterisk will use them just fine. You also need sufficient Internet bandwidth and decent QoS. For more than one line on a business system I would insist on a dedicated connection so you don't experience dropouts when users are accessing the net.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With