









|
[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
[NMLUG] Fun with Asterisk
Hi everyone,
I've been playing w/ Asterisk lately and I thought I'd post my experiences
for those of you who haven't worked with it, and to see if any of you have
had any experiences with it you would like to share.
The whole thing started when a vendor wanted to sell us VoIP services.
For our ~110 phones, they want to charge around $70K for
hardware/software/phones. Our current provider charges around $20K a year
for leasing equipment/phones, so the $70K for purchase wasn't too
rediculous. In preparation for their presentation I figured I'd bone up on
my VoIP and install a test Asterisk server.
For those of you who are not familiar w/ Asterisk, it is an open source
PBX. PBX stands for Private Branch eXchange. It's basically the hardware
or software that routes calls in an office. It's a smaller version of the
system the phone company uses to route calls.
Ok, so I started w/ my favorite distro, Gentoo, and emerged Asterisk.
While it was compiling I looked for a decent softphone (software phone) for
Linux and Windows. I decided to use a SIP (Session Initiation Protocol)
phone instead of one that supports IAX (Inter Asterisk eXchange) because
most IP hardphones you can buy use SIP, so I wanted to make sure that
portion worked well. I finally ended up w/ Twinkle for Linux and either
SJPhone or XLite for Windows. I may end up writing a custom softphone if we
put the system into production.
Ok, so Asterisk finishes installing, and I have Twinkle installed on my
laptop and SJPhone installed on my assistant's WinXP machine. One thing
that should be noted is that running a SIP softphone on the same machine as
Asterisk doesn't work (at least out of the box). So I add two entries to
/etc/asterisk/sip.conf, assigning usernames/passwords. Then I add assign
extenstions (123 and 125) to /etc/asterisk/extensions.conf. Ok, time for a
test. Log on to softphone on my laptop (123) and dial 125. WinXP machine
starts ringing. Assistant picks it up, and just like that we're talking.
Ok, basic phone to phone works. Now for fun stuff.
I add voice mail accounts for each extensions. Then I install Festival
(text to speech engine) and create another extenstion, that when called just
has festival read out some random text. Festival doesn't sound great, but
it's understandable, and since it's not recorded, we can use it for dynamic
stuff. I test out call parking. Everything seems to work ok.
Ok, the really cool thing about Asterisk is the ability to interface with
it from other programs. To have Asterisk make calls and connect to
extension, you can simply move a .call file into it's spool directory. This
means any cron job, bash script, or program in any language can initiate
calls. There's also the Manager system which will allow to connect and
control asterisk via TCP. It can make calls, transfer calls, keep your
program notified of activity, etc. Asterisk can also call programs (which
communicate w/ Asterisk using stdin and stdout).
So what's all this good for? Ok, let's look at outgoing calls. If
students haven't made payment arrangements by a certain date, they are
disenrolled from classes. Every semester there is usually over a hundred
students on the purge list. Two days before purge, we could run a script
that would query the database, find everyone who is going to be purged, get
their phone number, connect to their phone and when answered play a
recording letting them know they will be disenrolled unless they make
arrangements. If it's busy, they'll be moved to a busy list so it can try
again later.
How bout incomming calls? If a student wants to know what their balance
is, they can call in, choose "Balance" from the menu, enter their student
id, and have the Asterisk server query the database for their balance and
read it back to them.
We also have satelite campuses in Springer and Santa Rosa. We can use the
same system for them, with additional benifits. When someone at our main
campus wants to call a student in Santa Rosa, the call can be routed over
the network to our Santa Rosa campus and out their line. So it's a free,
local call. We end up getting free calls to anywhere we have network
connectivity and a phone line. The same works in reverse. Students in
Santa Rosa could dial a local, Santa Rosa number, and be connected to our
main campus over our network. The call is free for the student, and because
they don't have to use our 1-800 number, it's free for us as well.
A few minutes ago I set up a tunnel between my laptop and work (needed
because SIP doesn't transverse NAT). Phone quality seems just fine. So I
can be sitting at the bar w/ my laptop, connected to their wireless, and
someone at work can dial my extension. They will be connected transparently
to my laptop.
Ok, this is all very nice in a small test enviornment, but how well will
it scale? I don't know yet. Total cost to replace our leased equipment
will be about $13K (less than a single year of leasing our existing system).
This includes buying phones, hardware, interface cards, etc. So it makes
sense financially, it gives us additional abilities that we don't have yet.
I'm requesting $500 for some phones and FXO/FXS boxes (to convert between
analog data and IP packets) to see how well it works together and give us a
change to test out some different brands/models of phones to test for
potential problems. Whether or not we actually move to this system remains
to be seen (getting any changes through takes an act of god), but it should
be fun trying it out.
If any of you are currently using an Asterisk system, I'd love to hear
about your experiences with it. And if anyone is interested in setting up
their own system and has questions, feel free to contact me.
Matthew
|
|