Asterisk

From ArchWiki

Jump to: navigation, search


Contents

[edit] Asterisk Configuration

[edit] Summary

Asterisk is a complete PBX in software. It runs on Linux, BSD, Windows and OS X and provides all of the features you would expect from a PBX and more. Asterisk does voice over IP in four protocols, and can interoperate with almost all standards-based telephony equipment using relatively inexpensive hardware.

Asterisk provides Voicemail services with Directory, Call Conferencing, Interactive Voice Response, Call Queuing. It has support for three-way calling, caller ID services, ADSI, IAX, SIP, H.323 (as both client and gateway), MGCP (call manager only) and SCCP/Skinny.

This wiki will show you how to configure a simple in house network enabling us to use a SIP softphone to talk to another SIP softphone on your LAN. This is nothing major, but will get you familiar with Asterisk configuration and its pretty cool.

[edit] What You Need

Of course, you'll need Asterisk. You can grab it from [community]. You should also grab asterisk-addons, asterisk-sounds and asterisk-zaptel. You'll also need a SIP softphone and at least two machines. Recommendations for SIP phones are kphone, in the AUR and x-lite, a binary.

[edit] Configuration

[edit] SIP

Assuming your asterisk server is up and running we will only need to edit two files sip.conf and extensions.conf. Change to your asterisk configuration directory (should be /etc/asterisk). Edit sip.conf and place the following in:

[me1]
type=friend
username=me1
secret=password
host=dynamic
context=house

[me2]
type=friend
username=me2
secret=password
host=dynamic
context=house

This creates our two SIP users me1 and me2 with a password of password in the house context. We will be defining the context next.

Edit extensions.conf with the following:

[house]
exten => 100,1,Dial(SIP/me1)

exten => 101,1,Dial(SIP/me2)

This creates that context house and assigns extension 100 to the SIP user me1, and extension 101 to the SIP user me2. Now all thats left is to see if it works.

[edit] Music On Hold

Music on hold is a really sweet feature. And once again easy to install and configure. Edit /etc/asterisk/musiconhold.conf and add (or make sure its uncommented)

[default]
mode=files
directory=/var/lib/asterisk/mohmp3

Now go into your sip.conf

musiconhold=default

And that's all there is to it. Just copy your favorite legally obtained MP3 to /var/lib/asterisk/mohmp3

[edit] Voicemail

Voicemail is another cool feature of asterisk. There are many ways to configure it, however Ill just cover the simple in-home, just messing around version.

Create/edit your (you guessed it) voicemail.conf

[general]
format=gsm|wav49|wav
serveremail=asterisk
attach=no
mailcmd=/usr/sbin/sendmail -t
maxmessage=180
maxgreet=60

[default]
100 => 1234,Me,me@mydomain.com

Ok, so whats that mean? Most of the [general] is pretty self-explanatory. However make a note, if you have postfix set up right the PBX will send an email notifying the user of a new voicemail and if attach=yes it will attach the file.

Now for the actual mailbox. The format is

mailbox => password,user,email
In this case, we gave Me (email me@mydomain.com) mailbox 100, with a password of 1234.

Now we have to have a way to leave messages to this voicemail, and a way to access it. For this, we go back to the extensions.conf and modify your existing entry as follows:

exten => 100,1,Dial(SIP/me1,20)
exten =>100,2,Voicemail(100@default)

The 20 on the end of the first exten tells Dial() to call for 20 seconds. If no one answers it heads to Voicemailbox 100 in the default context. Easy enough. Next is actually accessing your voicemail. For that we add

exten => 600,1,VoiceMailMain,s100@default

So when we call 600, the application VoiceMailMain goes to 100 in the default context. The s allows for automatic login.

[edit] Notes

The voicemail apps have a TON of options so I'd suggest reading over some additional docs. This is just for a basic, home use setup. Also note that it is generally a good idea to use extensions higher then your users extensions for accessing voicemail. This way someone dialing 208 doesn't hit someone's voicemail at 205. I will update soon on how to use CALLERIDNUM to log into your voicemail.

[edit] Connecting To The PSTN

Ah. What we were all waiting for. Now that we have this really cool thing setup, its time to actually connect to the outside world. To do this, you'll need a provider. I use Junction Networks which is working out pretty good for me. Your provider should have instructions on connecting to asterisk so I will keep this very general.

[edit] General Instructions

[edit] sip.conf
[general]
register => username:password@sip.specific.com

[whatever]                   
fromdomain=specific.com     
host=sip.specific.com
insecure=very    ; check with provider
username=usernameduh
secret=passwordduh
type=peer
[edit] extenstions.conf
[outboundwithCID]  ; this can be whatever
exten => _1NXXNXXXXXX,1,SetCIDNum(15555551234)
exten => _1NXXNXXXXXX,2,Dial(SIP/${EXTEN}@whatever)
exten => _1NXXNXXXXXX,3,Congestion()
exten => _1NXXNXXXXXX,103,Busy()


[default]  ; This should be set in your sip.conf for incoming calls

;These should to be changed to your actual number
; ie     15555555555
exten => 1NXXNXXXXXX,1,Answer()
exten => 1NXXNXXXXXX,2,Playback(ttt-weasels)
exten => 1NXXNXXXXXX,3,HangUp()
[edit] Notes
  • In the outbound context, any number dialed will be sent out to your service provider. The Whatever in the 2 priority should match what you have in your sip.conf.
  • Of course, the inbound dialplan can be modified to do what you want. For instance, you can have

Dial(SIP/me1) so when someone calls your number they're routed to your SIP phone on your computer. Then add in voicemail etc etc etc.

  • Feel free to message jeebusroxors on #archlinux with any questions

[edit] FWD

FWD is one of the great VOIP services out there. It's kind of reminds me of AIM, where everyone gets a screen name (FWD number) and we can all communicate on that network. Using ipkall you can also enable free incoming calls. Here is some general information for setting up your asterisk server with FWD.

[edit] iax.conf

The first step is to log into FWD and enable their side of IAX. Its under extra features and they claim it to takes a little while to activate. Keep this in mind.

Now edit your iax.conf with the following in the general section.

register => FWDNUMBER:PASSWORD@iax2.fwdnet.net 
disallow = all
allow = ulaw

And at the bottom somewhere add

[iaxfwd]
type=user
context=fromiaxfwd
auth=rsa
inkeys=freeworlddialup

This allows calls from FWD

[edit] extensions.conf

Place this at the top under [globals]

FWDNUMBER=MYFWDNUMBER ; your calling number
FWDCIDNAME="MyName"; your caller id
FWDPASSWORD=MYFWDPASSWORD ; your password
FWDRINGS=sip/office ; the phone to ring
FWDVMBOX=1000 ; the VM box for this user

Next add this to a context. It's for outgoing.

exten => _393.,1,SetCallerId,${FWDCIDNAME}
exten => _393.,2,Dial(IAX2/${FWDNUMBER}:${FWDPASSWORD}@iax2.fwdnet.net/${EXTEN:3},60,r)
exten => _393.,3,Congestion

You can change the 393 to whatever you want. This is what you'll dial before dialing a fwd number. So for instance, to dial 744561 you would dial 393744561.

And lastly the incoming calls.

[fromiaxfwd]
exten => ${FWDNUMBER},1,Dial(${FWDRINGS},20,r)
exten => ${FWDNUMBER},2,Voicemail,u${FWDVMBOX}
exten => ${FWDNUMBER},102,Voicemail,b${FWDVMBOX}
[edit] Notes

If you have problems I would suggest removing the variables from extensions.conf. I pulled these off of FWDs site and I have not tested them myself.

Some cool extensions to call are 55555 (a volunteer maned test line) and 514 (conference).

[edit] MeetMe

MeetMe is the application that allows you to do conference calling. Same as everything, basic setup is easy. Edit meetme.conf

conf => 1000

Ok that was tough. Next is extensions.conf

exten => 999,1,MeetMe(1000|M)

Neat. Now dial 999 to get into conference 1000. The |M after enables music on hold if no one's in there. It will automagicly go away when someone joins the conference.

[edit] Notes

  • You MUST have the zaptel package in order for meetme to work. Install it and run modprobe ztdummy before running asterisk. This provides digium timing for us without cards so we can utilize TDM.

[edit] Asterisk Console And Softphones

Now lets get Asterisk going.

# asterisk -vvvvvvc

This will give us the Asterisk CLI with verbose output. If Asterisk is already running you'll need to use

# asterisk -r

Now fire up your SIP clients and set them up with the information in the sip.conf. Switch back to your Asterisk CLI and you should see

 Registered SIP 'me1' at 192.168.0.142 port 5061 expires 60

Now you should be able to dial 101 from me1 and talk to me2.

[edit] Common Problems

If you receive a 404 Not Found error check your extensions.conf and the number you dialed.

Personal tools