...
Goal
...
(short
...
description)
...
Asterisk is an open source/free
...
softwareimplementation
...
of
...
a
...
telephone
...
private
...
branch
...
exchange
...
(PBX).
...
Like
...
any
...
PBX,
...
it
...
allows
...
a
...
number
...
of
...
attached
...
telephones(or
...
softphones)
...
to
...
make
...
calls
...
to
...
one
...
another,
...
and
...
to
...
connect
...
to
...
other
...
telephone
...
services
...
including
...
the
...
public
...
switched
...
telephone
...
network(PSTN)
...
if
...
gateway
...
hardware
...
is
...
installed.
Applicability
Prerequisites (OS, dependencies on other software)
You must install these packages before proceeding with the installation of Asterisk.
- Linux 2.4 kernel sources or kernel 2.6 header files. (for libpri)
- bison and bison-devel packages (This is used to build Asterisk)
- ncurses and ncurses-devel packages (Used to build astman, etc.)
- zlib and zlib-devel packages
- openssl and openssl-devel packages
Download & build:
Code Block |
---|
wget [http h1. Applicability h1. Prerequisites (OS, dependencies on other software) You *must{*}install these packages before proceeding with the installation of Asterisk. * Linux 2.4 kernel sources or kernel 2.6 header files. (for libpri) * bison and bison-devel packages (This is used to build Asterisk) * ncurses and ncurses-devel packages (Used to build astman, etc.) * zlib and zlib-devel packages * openssl and openssl-devel packages h1. Configuration (OS agnostic) \\ h2. Download: wgethttp://ftp.digium.com/pub/asterisk/releases/asterisk-1.4.1.tar.gz] wget [http://ftp.digium.com/pub/zaptel/zaptel-1.2.15.tar.gz wgethttp] wget [http://ftp.digium.com/pub/libpri/libpri-1.4.0.tar.gz] tar zxvf zaptel-1.2.15.tar.gz cd zaptel-1.2.15/ make make install cd .. tar zxvf libpri-1.4.0.tar.gz cd libpri-1.4.0/ make make install cd .. tar zxvf asterisk-1.4.1.tar.gz cd asterisk-1.4.1/ ./configure make menuconfig \************************************\* Asterisk Module Selection \************************************\* Press 'h' for help. \---> 1. Applications 2. Call Detail Recording 3. Channel Drivers 4. Codec Translators 5. Format Interpreters 6. Dialplan Functions 7. PBX Modules 8. Resource Modules 9. Voicemail Build Options 10. Compiler Flags 11. Module Embedding 12. Core Sound Packages 13. Music On Hold File Packages 14. Extras Sound Packages Asterisk Module Selection Press 'h' for help. \---> 1. Applications 2. Call Detail Recording 3. Channel Drivers 4. Codec Translato 5. Format Interpreters 6. Dialplan Functions 7. PBX Modules 8. Resource Modues 9. Voicemail Build Options 10. Compiler Flags 11. Module Embedding 12. Core Sound Packages 13. Music On Hold File Packages 14. Extras Sound Packages \\ \--------------------------------------------------------------------------------------------------------\-Navigate with these commands: {{}} scroll scroll => up/down arrows (de)select select => Enter select all all => F8 deselect all => F7 back all => F7 back => left arrow quit quit => q save and quit => x MostMost of the *make menuconfig* options are self-explanatory, provided you know what the various applications or modules are for. When in doubt, accept the defaults. At worst you'll install something you don't need, or have to go back and add something later In the bottom of menu you will see the dependences of the module you are selecting. \\ Exit and save with x and write: \\ make \\ If you want samples and documentation: \\ make samples make progdocs \\ And finally installation: \\ make install \\ \\ |
...
Configuration
The directory with all configuration files is by default /etc/asterisk/
...
The
...
basic
...
configuration
...
files
...
if
...
we
...
are
...
going
...
to
...
use
...
sip
...
protocol
...
are:
...
sip.conf
...
and
...
extensions.conf
...
CHANNELS
Asterisk support several types of channels, examples are: h.323,
...
sip,
...
iax,
...
zap,
...
etc
...
In
...
this
...
document
...
we
...
are
...
going
...
to
...
implement
...
sip
...
channels
...
and
...
for
...
this
...
we
...
use
...
sip.conf
...
configuration
...
file.
...
SIP.CONF
...
This
...
file
...
follows
...
the
...
general
...
syntax
...
in
...
configuration
...
files.
...
They
...
are
...
composed
...
by
...
sections,
...
variables
...
and
...
values
...
in
...
this
...
way:
...
[SECTION1
...
]
...
Variable1=value1
...
Variable2=value2
...
....
...
[SECTION2
...
]
...
Variable1=value1
...
Variable2=value2
...
....
...
There
...
is
...
a
...
[general
...
]
...
section
...
where
...
you
...
can
...
define
...
the
...
general
...
parameters
...
of
...
sip
...
channels.
...
For
...
example:
...
general
port = 5060 ; Port to bind to
bindaddr = 0.0.0.0
...
;
...
Address
...
to
...
bind
...
to
...
context
...
=
...
sip
...
;default
...
'sip'
...
context
...
for incoming calls
You have to define one section for each sip telephone so:
Code Block |
---|
incoming calls You have to define one section for each sip telephone so: [phone1] type=friend host=dynamic defaultip=192.168.1.4 ;username=blah ;secret=blah dtmfmode=rfc2833 ; Choices are inband, rfc2833, or info mailbox=1000 ; Mailbox for message waiting indicator context=sip callerid="Me" <2124> [phone2] type=friend ;secret=blah host=dynamic defaultip=192.168.1.3 dtmfmode=rfc2833 ; Choices are inband, rfc2833, or info mailbox=1000 ; Mailbox for message waiting indicator context=sip callerid="Mini Me" <2123> <2123> |
...
sip.conf
...
only
...
define
...
sip
...
channels,
...
not
...
the
...
dialing
...
plan
...
that
...
is
...
defined in extensions.conf.
...
Each
...
sip
...
channel
...
belongs
...
to
...
one
...
context
DIALPLAN
EXTENSIONS.CONF
...
One
...
of
...
the
...
most
...
important
...
ideas
...
behind
...
Asterisk
...
is:
...
an
...
extension
...
is
...
a
...
program
...
that
...
defines
...
what
...
will
...
happen
...
when
...
a
...
number
...
is
...
called.
...
And
...
this
...
is
...
done
...
in
...
extensions.conf
...
that
...
implements
...
the
...
dialing
...
plan.
...
The
...
syntax
...
is
...
similar
...
to
...
sip.conf
...
with
...
several
...
sections:
...
[general
...
]
...
- At
...
- the
...
- top
...
- of
...
- your
...
- extensions.conf
...
- file,
...
- you
...
- configure
...
- a
...
- few
...
- general
...
- settings
...
- in
...
- the
...
- section
...
- headed
...
- [general
...
- ]
...
- .
...
[globals
...
]
...
- Next,
...
- in
...
- the
...
- [globals
...
- ]
...
- section,
...
- you
...
- may
...
- define
...
- global
...
- variables
...
- (or
...
- constants)
...
- and
...
- their
...
- initial
...
- values.
...
Contexts and Extensions
- After the [general] and [globals] categories, the remainder of the extensions.conf file is taken up by the definition of the Dialplan. The Dialplan consists of a collection of contexts. Each context consists of a collection of extensions.
Extension Patterns
- When you define the extensions within a context, you may not only use literal numbers, not only alphanumeric names, but also you may define extensions that match whole sets of dialed numbers by using extension patterns.
The general syntax of extensions is:
exten => extension number, command priority, command
- Where exten if fixed
- Extension number is the number called
- Command priority is the order the commands are to be run
- Command is what is going to be done
Example:exten => 1,1,Dial(SIP/phone1,20,tr)
...
exten
...
=>
...
2,1,Dial(SIP/phone2,20,tr)
...
exten
...
=>
...
1000,1,Dial(SIP/phone1&SIP/phone2,20,tr)
...
*
...
When
...
somebody
...
calls
...
1 the sip phone1 will ring for 20 seconds if nobody answer the call will fail. This sip phone has to be defined in sip.conf.
- When somebody calls 2 the sip phone2 will ring for 20 seconds if nobody answer the call will fail.
- If somebody call 1000 then the phone1 and phone2 will ring in parallel until one of them answer or 20 secons period finish. Since an extension may have a number of commands there may be multiple entries for an extension.
The complete extensions.conf file is:
Code Block |
---|
[general] ; the sip phone1 will ring for 20 seconds if nobody answer the call will fail. This sip phone has to be defined in sip.conf. * When somebody calls 2 the sip phone2 will ring for 20 seconds if nobody answer the call will fail. * If somebody call 1000 then the phone1 and phone2 will ring in parallel until one of them answer or 20 secons period finish. Since an extension may have a number of commands there may be multiple entries for an extension. The complete extensions.conf file is: [general] ; ; If static is set to no, or omitted, then the pbx_config will rewrite ; this file when extensions are modified. Remember Remember that all comments ; made in the file will be lost when that happens. ; ; XXX Not yet implemented XXX ; static=yes ; ; if static=yes and writeprotect=no, you can save dialplan by ; CLI command 'save dialplan' too ; writeprotect=no ; If clearglobalvars is not set, then global variables will persist ; through reloads, and even if deleted from the extensions.conf or ; one of its included files, will remain set to the previous value. ; clearglobalvars=no ; ; User context is where entries from users.conf are registered. The The ; default value is 'default' ; userscontext=sip ; ; The "Globals" category contains global variables that can be referenced ; in the dialplan with the GLOBAL dialplan function: ; $ {GLOBAL(VARIABLE)}\\ \\ \\ \\ \\ \\ \\ \\ ; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid ; Unix/Linux environmental variables can be reached with the ENV dialplan ; function: $ \\ {ENV(VARIABLE)}\\ \\ \\ \\ \\ \\ \\ \\ ; [globals] CONSOLE=Console/dsp [globals] CONSOLE=Console/dsp ; Console interface for demo . ; Context sip [sip] exten => 1,1,Dial(SIP/phone1,20,tr) exten => 2,1,Dial(SIP/phone2,20,tr) exten => 1000,1,Dial(SIP/phone1&SIP/phone2,20,tr) \\ \\ \\ |
...
ASTERISK CLI
If you installed Asterisk in /usr/sbin,
...
then
...
to
...
run
...
it
...
write:
...
#/usr/sbin/asterisk
...
To
...
enter
...
in
...
CLI
...
interface
...
run:
Code Block |
---|
\ #/usr/sbin/asterisk \-rcvvvv Asterisk 1.4.0, Copyright (C) 1999 - 2006 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com> Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': Found == Parsing '/etc/asterisk/extconfig.conf': Found Connected to Asterisk 1.4.0 currently running on lab2 (pid = 2448) \-\- Remote UNIX connection Verbosity is at least 15 lab2*CLI> \\ |
...
As
...
many
...
v's
...
you
...
write
...
more
...
verbose
...
output
...
you'll
...
obtain.
...
Main commands are:
...
- restart
...
- gracefully
...
- :
...
- Causes
...
- Asterisk
...
- to
...
- stop
...
- accepting
...
- new
...
- calls
...
- and
...
- perform
...
- a
...
- cold
...
- restart
...
- when
...
- all
...
- active
...
- calls
...
- have
...
- ended.
...
- restart
...
- now
...
- :
...
- Causes
...
- Asterisk
...
- to
...
- immediately
...
- hang
...
- up
...
- all
...
- calls
...
- and
...
- perform
...
- a
...
- cold
...
- restart.
...
- restart
...
- when
...
- convenient
...
- :
...
- Causes
...
- Asterisk
...
- to
...
- perform
...
- a
...
- cold
...
- restart
...
- when
...
- all
...
- active
...
- calls
...
- have
...
- ended.
...
- New
...
- calls
...
- are
...
- accepted,
...
- and
...
- only
...
- when
...
- all
...
- calls
...
- have
...
- completed
...
- is
...
- the
...
- restart
...
- performed.
...
- Use
...
- this
...
- command
...
- very
...
- carefully,
...
- as
...
- you
...
- have
...
- no
...
- way
...
- of
...
- knowing
...
- when
...
- the
...
- conditions
...
- for
...
- the
...
- restart
...
- will
...
- be
...
- met.
...
- On
...
- a
...
- busy
...
- system,
...
- the
...
- restart
...
- might
...
- not
...
- occur
...
- until
...
- well
...
- after
...
- you've
...
- forgotten
...
- you
...
- requested
...
- it.
...
- The
...
- best
...
- practice
...
- on
...
- a
...
- busy
...
- system
...
- is
...
- to
...
- execute
...
- restarts
...
- manually.
...
- sip
...
- show
...
- peers
...
- :
...
- List
...
- and
...
- displays
...
- the
...
- status
...
- of
...
- all
...
- peers
...
- with
...
- whom
...
- you
...
- are
...
- registered
...
- sip
...
- reload
...
- :
...
- Reloads
...
- the
...
- SIP
...
- channel
...
- module.This
...
- is
...
- the
...
- equivalent
...
- of
...
- performing
...
- a
...
- reload
...
- chan_sip.so.
...
- Reloading
...
- the
...
- SIP
...
- channel
...
- is
...
- required
...
- to
...
- load
...
- changes
...
- to
...
- sip.conf
...
- and
...
- sip_notify.conf
...
- into
...
- memory.
...
- Active
...
- SIP
...
- channels
...
- are
...
- not
...
- dropped
...
- during
...
- a
...
- sip
...
- reload.
...
- stop
...
- gracefully
...
- :
...
- Stops
...
- the
...
- system
...
- when
...
- all
...
- currently
...
- active
...
- calls
...
- have
...
- completed,
...
- and
...
- does
...
- not
...
- accept
...
- new
...
- calls.
...
- stop
...
- now
...
- :
...
- Stops
...
- immediately,
...
- terminating
...
- all
...
- active
...
- calls.
...
- stop
...
- when
...
- convenient
...
- :
...
- Stops
...
- the
...
- system
...
- when
...
- all
...
- currently
...
- active
...
- calls
...
- have
...
- completed.New
...
- calls
...
- are
...
- accepted,
...
- and
...
- the
...
- system
...
- will
...
- stop
...
- only
...
- when
...
- there
...
- are
...
- no
...
- longer
...
- any
...
- active
...
- calls.Using
...
- this
...
- command
...
- is
...
- not
...
- a
...
- good
...
- idea,
...
- since
...
- you
...
- have
...
- no
...
- real
...
- way
...
- of
...
- knowing
...
- when
...
- the
...
- necessary
...
- condition
...
- for
...
- stopping
...
- the
...
- system
...
- will
...
- occur.
...
Basic ASTERISK installation (1.4.1)
...