= Install Asterisk 1.4.36 with Asterisk GUI = This guide will show how to compile and install Asterisk 1.4.36 getting the sources from the Digium SVN repository. As far as I know, no Linux distro comes with a packaged Asterisk 1.4.x, but this new version brings a lot of new features, such as the web configuration tool called AsteriskGUI. Instead you could use !AsteriskNow, but it does not come with the latest AsteriskGUI, and is not flexible as your own Linux Box. In this guide I used my Gentoo Linux Box Log in as root and... : == Backup == Remove any older Asterisk installation and backup your existing {{{/etc/asterisk}}} folder, we are going to make a big mess :) == Download the sources == {{{ cd /usr/src svn co http://svn.digium.com/svn/asterisk/tags/1.4.36/ asterisk-1.4.36 svn co http://svn.digium.com/svn/asterisk-addons/tags/1.4.12/ asterisk-addons-1.4.12 svn co http://svn.digium.com/svn/asterisk-gui/tags/2.0.4/ asterisk-gui }}} == Compile == in each folder (follow the same order as source download): {{{ ./configure make make install make samples }}} Note (for Debian or Ubuntu): If ./configure or make return the following error: {{{configure: error: *** termcap support not found}}}, install: {{{libncurses5-dev}}} Optionally you can run {{{make menuselect}}} before {{{make}}} to customize your build In the {{{asterisk-gui}}} run {{{ make checkconfig }}} and follow the output of the command to tune the configuration files. You will need to run {{{make checkconfig}}} several times fixing one thing per time. == Run Asterisk == Now just run: {{{ asterisk }}} and once started you might attach to the console this way: {{{ asterisk -rvvvv }}} The web interface is here: http://127.0.0.1:8088/asterisk/static/config/cfgbasic.html '''warning: replace 127.0.0.1 with your server IP address''' To configure your account add a block in your {{{/etc/asterisk/manager.conf}}} {{{ [admin] secret = mysecret read = system,call,log,verbose,command,agent,user,config,dtmf,reporting write = system,call,log,verbose,command,agent,user,config,dtmf,reporting }}} == Understanding Asterisk 1.4 GUI == In asterisk 1.2 we had in the {{{sip.conf}}} stuff like this: {{{ register => username:password@sip.messagenet.it:5061/EXTENSION }}} If you are configuring with the web GUI, go to the advanced options and fill the field "contact" with EXTENSION you had in the register line of Asterisk 1.2 Now go to "Incoming Calls" and create a Rule that matches your "contact". Also, there is a bug in the scripts of the GUI. If you have many accounts from the '''same''' provider, the the "Incoming Calls" form you always have to specify the last one on the list. Asterisk will always match the first [Trunk] that shows up typing in the console {{{sip show peers}}} == MYSQL CDR Logs == For this section it is supposed that you have a basic MySQL knowledge Create a {{{asterisk.sql}}} file like this: {{{ CREATE DATABASE asterisk; GRANT INSERT ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'yourpassword'; USE asterisk; CREATE TABLE `cdr` ( `calldate` datetime NOT NULL default '0000-00-00 00:00:00', `clid` varchar(80) NOT NULL default '', `src` varchar(80) NOT NULL default '', `dst` varchar(80) NOT NULL default '', `dcontext` varchar(80) NOT NULL default '', `channel` varchar(80) NOT NULL default '', `dstchannel` varchar(80) NOT NULL default '', `lastapp` varchar(80) NOT NULL default '', `lastdata` varchar(80) NOT NULL default '', `duration` int(11) NOT NULL default '0', `billsec` int(11) NOT NULL default '0', `disposition` varchar(45) NOT NULL default '', `amaflags` int(11) NOT NULL default '0', `accountcode` varchar(20) NOT NULL default '', `userfield` varchar(255) NOT NULL default '' ); ALTER TABLE `cdr` ADD INDEX ( `calldate` ); ALTER TABLE `cdr` ADD INDEX ( `dst` ); ALTER TABLE `cdr` ADD INDEX ( `accountcode` ); }}} Change the password in the file and then simply {{{ mysql -u root -p < asterisk.sql }}} Now edit {{{/etc/asterisk/cdr_mysql.conf}}} : {{{ [global] hostname=localhost dbname=asterisk table=cdr password=password port=3306 sock=/tmp/mysql.sock userfield=1 }}} You have to kill asterisk and restart it, a reload from the console is not enough in this case. == Notes == === Phones diplay "New user" instead of numbers on incoming call === From users.conf you may comment out {{{ fullname = New User }}} or incoming calls from peers will be displayed on the phones as "New user" instead of showing the phone numbers. === Avaya phones freeze after a while === Comment out the {{{ mailbox= }}} line form the phone block in users.conf It is a problem with asterisk telling the phone that there are messages waiting === Monitoring a link performance === Add {{{ qualify = yes }}} === No Ring Tone === In {{{extensions.conf}}} modify the macro trunkdial as follows: be aware sometimes you have to change also the {{{[macro-trunkdial-failover-0.3] }}} the key idea is that you add a '''answer''' and a '''ringing''' command before starting the call {{{ [macro-trunkdial] ; ; Standard trunk dial macro (hangs up on a dialstatus that should ; terminate call) ; ${ARG1} - What to dial ; ;exten => s,1,Dial(${ARG1}) exten => s,1,Answer exten => s,2,Ringing exten => s,3,Dial(${ARG1}) exten => s,n,Goto(s-${DIALSTATUS},1) exten => s-NOANSWER,1,Hangup exten => s-BUSY,1,Hangup exten => _s-.,1,NoOp }}} If you still experience problems also you can do this: in {{{users.conf}}} : {{{ transfer = no }}} Why this works?: if you allow transfer, ringing sounds might get lost especially if mixing technologies such as SIP and IAX2 ?? ---- Old workaround: If you can't hear ringing tone on your voip phone try to add the following line in the extension.conf file {{{ exten = your_pattern,1,Answer exten = your_pattern,2,Ringing exten = your_pattern,3,Macro(trunkdial,${trunk_n}/${EXTEN:0}) }}} === IAX Tunnel with a peer behind NAT === ==== Configuration on the Peer behind NAT ==== * trunk_10 is the username that asterisk will use to register to the other peer with the public IP * trunk_1 is the username that the other user will present to log in here * type friend is VERY IMPORTANT for this configuration {{{ [trunk_10] allow = ulaw,alaw,gsm,ilbc,speex,g726,adpcm,lpc10 context = DID_trunk_10 dialformat = ${EXTEN:1} hasexten = yes hasiax = yes hassip = no username = trunk_1 secret = mySecret host = asterisk.ninux.org port = 4569 registeriax = yes registersip = no trunkname = Manual Tor Vergata trunkstyle = customvoip disallow = g729 insecure = very type = friend qualify = yes }}} ==== Configuration on the Peer with public IP ==== {{{ [trunk_1] ;saverio allow = all context = DID_trunk_1 dialformat = ${EXTEN:1} hasexten = yes hasiax = yes hassip = no host = dynamic secret = mySecret username = trunk_10 port = 4569 type = friend registeriax = yes registersip = no trunkname = Custom - tuscolomesh trunkstyle = customvoip ;insecure=very qualify = yes }}}