Italiano English
Edit History Actions

Asterisk1.4

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

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