Asterisk
From ArchWiki
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,emailIn 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 ztdummybefore 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.