VoIPowering Your Office with Asterisk: SOHO VoIP, Part 2

In this installment, we complete configuration of the phone interface card, register users and phones, and set up incoming calls.

By Carla Schroder | Posted Jul 24, 2006
Print ArticleEmail Article
  • Share on Facebook
  • Share on Twitter
  • Share on LinkedIn

Last week we learned how to connect an Asterisk server to legacy phones and phone service. Today we're going to set up a connection to the outside world and set up internal extensions, so we can actually place and receive calls through Asterisk.

Starting the TDM04B at boot
We need to finish configuring the TDM04B. Last week we left off with manually loading the drivers for the TDM04B, just to make sure they would. If there are errors in /etc/zaptel.conf the drivers won't load. Getting the drivers to load at boot is easy. Go to your Zaptel source tree (see VoIPowering Your Office With Asterisk: Moving to the Grownup Version) and install the startup files:

# cd /usr/src/zaptel-1.2.6
# make config
This takes care of everything. When you reboot the TDM04B will be loaded automatically. In fact it does too much. See for yourself with the lsmod command:
# lsmod
Module                  Size  Used by
ztdummy                 3924  0
wcusb                  20000  0
wctdm                  34880  0
wcfxo                  13088  0
wcte11xp               27936  0
wct1xxp                19488  0
wct4xxp                65600  0
tor2                   91936  0
zaptel                206852  12 
ztdummy,wcusb,wctdm,wcfxo,wcte11xp,wct1xxp,wct4xxp,tor2
crc_ccitt               2113  1 zaptel
wcusb, wcte11xp, wct1xxp, wct4xxp, and tor2 are all unnecessary. (See the README in your Zaptel source directory to learn what all of these are.) Edit /etc/default/zaptel on Debian systems to comment out the unneeded drivers; on Fedora, /etc/sysconfig/zaptel.

Configuring the server
OK, then, enough faffing around with the TDM04B. Time to set up Asterisk to answer and route incoming calls.

The next file to edit is /etc/asterisk/zapata.conf. Start over with an empty file:

# mv zapata.conf zapata.conf.old
# nano zapata.conf
Then enter these lines in it:
[channels]
context=pstn-test
signalling=fxs_ks
language=en
usecallerid=yes
echocancel=yes
transfer=yes
immediate=no
group=1
channel => 1
channel => 2
channel => 3
channel => 4
If you're trying to make sense of this FXS/FXO stuff, you're noticing that the TDM04B has four FXO modules, but the configurations specify FXS signaling. Think of it this way: It accepts and translates FXO signaling on incoming calls, but has to transmit FXS signaling, because that's what the telco expects.

Then create the pstn-test context in /etc/asterisk/extensions.conf. Add this to the sample file:

[pstn-test]
exten => s,1,Dial(SIP/250,30)
exten => s,n,Voicemail(250)
exten => s,n,Hangup

Make sure that you have "TRUNK=Zap/g1" in extensions.conf.

Adding users
You probably want incoming calls to actually ring a phone, and possibly even be picked up by a human. There are two steps to setting up a new internal extension; both sip.conf and extensions.conf must be edited.

First, register the user in sip.conf, with the user's real name and IP. Start over with an empty file, then add these lines:

[general]
port=5060 
bindaddr=0.0.0.0
context=default
disallow=all
allow=gsm
allow=ulaw
allow=alaw

[alrac]
type=friend
username=alrac
secret=[alrac's password]
host=[phone IP]
context=pstn-test
Go ahead and register a couple more users in the same way. Our example users are stan and ollie.

The next step is to register the users' extensions in extensions.conf. Add these to the pstn-test context:

[pstn-test]
exten => 250,1,Dial(SIP/alrac)
exten => 251,1,Dial(SIP/stan)
exten => 252,1,Dial(SIP/ollie)

;Internal users can call each other directly with their 3-digit extensions:
exten => _2XX,1,Dial(SIP/${EXTEN},30)
exten => _2XX,n,Voicemail(${EXTEN})
exten => _2XX,n,Hangup

Installing phones
Every IP phone is configured little differently. These are the main parameters you'll need, as this example for alrac shows:

Enable: yes
Username: 250
Authorization User: 250
Password: [alrac's password]
DomainRealm: [Asterisk server IP]
SIP Proxy: [Asterisk server IP]

The story so far
We're not done yet, but this is a good place to stop and review what we've done so far:

  • Installed and configured the TDM04B card for interfacing between the PSTN and our IP phones
  • Created a new context, pstn-test
  • Incoming calls will all be routed to alrac
  • Calls will automatically go to the first available line
  • Registered our users in sip.conf
  • Registered telephone extensions in extensions.conf
  • Setup IP phones and registered them with the server
If you want to play with this a bit, reboot the Asterisk server, then try dialing your new extensions, and placing a call to yourself from an outside line. The final step is settting up outbound dialing.

Outbound dialing
Receiving calls is nice, but you probably want to call out as well. We'll get to this next week, as there are some perils and pitfalls to be avoided. The biggest one is you must define your contexts and call routing carefully or you risk leaving yourself open to providing free long distance to the world. We'll also define a better default context, and in the following week set up a digital assistant so that Alrac doesn't have to answer everyone's calls. Digital assistants are very smart and will even screen your calls.

Resources
Asterisk: the Open Source PBX
Voip-Info.org

Comment and Contribute
(Maximum characters: 1200). You have
characters left.
Get the Latest Scoop with Enterprise Networking Planet Newsletter