Newbie - Am I on the right track?

Sorry to bombard with so many questions. I hope my post isn’t too rambling - I got a pointless tech support call this morning, at about 3:30, for questions that are plainly answered on our website, and have been investigating how to build something to get people to read before calling since. (Or at least to get make sure I get paid when they do call.)

I’m considering using * for replacing our current phone system.

What we have today is a 2-line analog (provided by the cable company) setup with a digital answering machine that hands out a 3rd phone number for 24x7 support. The 3rd phone currently forwards incoming calls to the cell phone of the technician that is unlucky enough to be “on call.”

What I’d like to move to is something a bit more like this:

Customer calls in and is presented with friendly greeting and instructions that email is the best medium for support. If customer calls during business hours, a single keypress or perhaps no intervention on the customer’s part at all bypasses the system into our existing analog phone system, putting the person on hold if the phones are in use.

If customer calls after hours and demonstrates a need for a human, e.g., by entering a credit card number which we charge through our online credit card processor, the call is patched through to the cell phone of the person who is on call.

I would prefer not to purchase new handsets or do any major re-wiring, and cannot depend on workstations to have enough bandwidth to use a soft-phone; Hence the requirement that the keypress simply falls back to our existing system.

It looks like what I want to do is build a dedicated linux PC (3GHz P4x64, 2GB RAM, prolly Fedora 5) with something like a VoiceTronix OpenSwitch 6 configured with 4 FXO and 2 FXS ports. * would provide the menu, patch incoming calls from 2 of our FXO into an open FXS port, and in the case of the after-hours support, process credit cards and patch the call into an outbound call to a cell phone on the 3rd FXO port.

There are a few questions:

  1. Is this a reasonable path, or am I completely barking up the wrong tree?

  2. Can I download a web page or launch an external process in the context of a phone call, using data from said phone call? I.e., can I have the user type in some information and then relay that information to an external process via a command line? I’m thinking about credit card numbers into a wget call to charge a customer for billable technical support.

  3. Does FXO means “normal analog phone line from the phone company or similar”?

  4. Does FXS mean “internal phone line hooked up to 1 or more phone jacks”

Thanks in advance!

BTW, if there are digium or other alternate boards available for handling the POTS connectivity, please don’t hesitate to let me know which may be appropriate. I’d like to purchase from a fellow Huntsville company if the product line and prices make sense.

Welcome! It sounds like Asterisk can do what you need…

First, the hardware. Unless this box is going to be also doing something else, you don’t need anywhere near that much CPU power for a few lines. My BUSINESS asterisk box is a P2-300 with I think 128mb RAM and it routinely handles 7-8 concurrant calls with NO strain. The most it has ever had to deal with was 12 channels in a conference room and it did that without problem. You will need this high pwoer box you configured if you will be running 100+ channels and encoding G.729 (a very high compression codec that takes much CPU) on all of them at once. For a simple thing like you have- you probably don’t need to spend more than $500 on the box.

As for channel cards, it sounds like you only need a few channels. The ones recommended for Asterisk applications are the Digium TDMxx series or Sangoma A200 ‘remora’ series. Both are good cards. Both are modular, you add the ports you need as you need them. You can buy them at and they are not particularly expensive.

As for your IVR (menu), that is very simple- use GotoIfTime to route based on what time it is.
For the credit card thing, Asterisk can interface directly with MySQL database, or you can use AGI (Asterisk Gateway Interface) to use an external program written in almost any language. AGI lets the application and * pass events to each other, which lets you extend *'s capabilities to do just about anything.
If you want to just run a system command on it, Asterisk can do that too. IMHO, the best way to do it would be to first get the digits, then run a very quick perl/php script which takes the digits, checks if they are good or not, then returns the result to *, which will route the call accordingly.

FXO connects to a phone LINE
FXS connects to a PHONE, and provides dialtone and ring voltage.
I remember by thinking of S = SERVES the phone.
So short version, you are correct.

Asterisk will also work (very well) with IP phones. These are phones that have an Ethernet jack where the phone plug would be, and communicate using the SIP protocol. A handful are available, check out AASTRA and SNOM brands. See the voipsupply link above. These give you useful buttons like hold/xfer/etc.

You may also find useful the book Asterisk: The Future of Telephony. It will turn you into an * expert :smile:. It’s avaialble from O’Rilley or you can download it for free (creative commons license) from

Good luck!