What is Asterisk?

Download Report

Transcript What is Asterisk?

Asterisk Jargon
Alex Vishnev
Chief Technical Office, VoIP
ACN
What is Asterisk?
• Popular open source PBX (Private Branch Exchange)
– Private Telephone Network inside the Enterprise
• Provides a library of basic telephony functions which
you then use as script building-blocks.
• Common PBX functionality such as voicemail, call
queuing, conferencing, music on hold and others are
all included.
• Asterisk is one of the few PBXs in existence that
connects legacy telephony technologies (Analog,
PRI) to VoIP interfaces (SIP,H.323)
AGENDA
• What is Asterisk?
– PBX Definition and Functionality
– Architecture Overview
• Jargon
– Network Interfaces
– VoIP Connections
– Dial Plan
– Codec
– Channel
– Context
– Extension
– Application
– Variable
– Macro
Asterisk Architecture
Network Interfaces
• PSTN
– Analog (FXS/FXO)
– Digital (E1/T1,BRI)
• IP
– SIP
– H.323
– IAX
FXS/FXO
• Analog Line Interface
• FXS – Foreign Exchange Station
– Generates Dialtone
– Generates Ring
– Connect Analog Phones
• FXO – Foreign Exchange Office
– Accepts Dialtone from CO
– Connect Line from Telco
T1
• Primarily Used In US
• T1 – PSTN Digital Interface
– CAS – Channel Associated Signaling (Wink,
Immediate, etc)
• 24 Voice Channels
• MF/DTMF In-band Signaling
– PRI – Primary Rate Interface (“D” Channel)
• 23 Voice Channels
• 1 Data Channel
• Q.931 Messages
E1
• ITU-T Specification
• Digital Interface
– CAS – Channel Associated Signaling
• 30 Voice Channels
• R2MF
– PRI – Primary Rate Interface (“D” Channel)
• 28 Voice Channels
• 2 Data Channel
• Q.931 Messages
Connections (Users/Peers/Friends)
• VoIP Connections
– Users -> connections that authenticate to
us (phones, etc)
– Peers –> authenticate us (service provider)
– Friends ->Connections that do both may be
defined as
• Relationship defined in (sip.conf, iax.conf)
Dialplan
• "road map" for how Asterisk will work.
– specifies how Asterisk should handle calls.
– consists of a list of instructions or steps that
Asterisk should follow.
• To successfully set up your own Asterisk system, it is
absolutely vital that you understand dialplans.
Codec
• Codec – Short for Coder/Decoder
• Codecs determine the sustained data bit rate which is required for
each channel.
• The codec converts the analog voice signal to a digitally encoded
one that should take less space
• The quality and data bitrate vary from one codec to the next.
• Examples:
– ulaw, alaw, gsm,g.729, g.723.
Channels
• Telephony connections to the PBX
• Call Processing in Asterisk Is Centered Around
Channels
• Drivers for various kinds of connections
– IP (SIP,H.323,IAX,SCCP,MGCP)
– PSTN (Zaptel, PRI, BRI,
Channel Types
•
•
•
•
•
•
•
•
•
•
•
Channel Types could be Physical or Logical
Agent: ACD Agent channel
Console: Linux console client driver for sound cards (using OSS or ALSA)
H.323: An older VOIP protocol
IAX and IAX2: Inter-Asterisk Exchange protocol, Asterisk's own VOIP protocol
MGCP: Media Gateway Control Protocol, another VOIP protocol
SIP: Session Initiation Protocol, the most common VOIP protocol
Skinny: A driver for Cisco Skinny Client Control Protocol (a VOIP protocol)
VOFR: voice over frame relay Adtran style
VPB: For connecting ordinary telephone and telephone lines using Voicetronix
cards
Zap: For connecting ordinary telephones and telephone lines using Digium
cards. Also for TDMoE and for Asterisk zaphfc
Channel Drivers
•
•
•
•
•
•
•
•
•
•
Channel drivers offering other technologies can be optionally installed:
Bluetooth: Allows the use of bluetooth devices to change routing - see CVS
"chan_btp"
CAPI: ISDN CAPI channel
mISDN: mISDN channel
vISDN: vISDN channel (native BRI channel for HFC chipsets)
SCCP: An alternate Skinny/SCCP channel
Sirrix: ISDN BRI for Sirrix cards (with optional ISDN encryption)
UNISTIM: Nortel Unistim channel
Unicall: Replacement for zaptel, with R2 support
SS7: SS7 (ISUP on MTP2/3) channel
Context
•
•
•
•
Named Group of Extensions
Extensions are Unique only Inside Context
[incoming] – example of context
Special Contexts
– [globals]
– [general]
• Contexts are Used for Security and to Differentiate
Services
Extensions
•
•
•
•
•
•
Defined Within Context
An extension is an instruction triggered by an incoming call or by digits
being dialed on a Channel.
Extensions specify what happens to calls as they make their way through
the dialplan.
Traditional Extensions (i.e. extension 153)
Extensions can be used for much more in Asterisk.
exten => (followed by the name of extensions)
– Can be numeric (i.e. regular Extension)
– Alphanumeric (i.e. email address)
Extensions (More then just a Number)
• An extension is composed of three components:
– The name (or number) of the extension
– The priority (each extension can include multiple steps; the
step number is called the “priority”)
– The application (or command) that performs some action on
the call
• Example
– exten => name, priority, application( )
– exten => 123,1,Answer( )
Special Extension
• ‘s’ - extension
• Calls entering a context without a specific destination
(i.e. ring on FXO line), they are handled automatically
by the s extension.
• Example
– [incoming]
– exten => s,1,Answer( )
– exten => s,2,Playback(hello-world)
– exten => s,3,Hangup( )
Priority
•
•
•
Defines step number in a multi-step Extension
Numbered sequentially, starting with 1.
Unnumbered Priority (Contradiction ;-))
– ‘n’ priority, - “next”
– Takes the number of the previous priority and adds 1
– No need to re-number dial plan when changes are made.
– Example:
•
•
•
•
exten => 123,1,Answer( )
exten => 123,n,do something
exten => 123,n,do something else
exten => 123,n,Hangup( )
– Label Priority
• exten => 123,n(label),do something
•
Executes one Specific Application
Variables
•
•
•
•
•
•
Channel Variables
A channel variable is a variable (such as the Caller*ID number) that is associated only
with a particular call.
Predefined channel variables available for use within the dialplan,which are explained
in the README.variables file in the doc subdirectory of the
Channel variables are set via the Set( ) application:
– exten => 123,1,Set(MAGICNUMBER=42)
Environment variables are a way of accessing Unix environment variables from within
Asterisk.
– Example: ${ENV(var)} – var – Unix Environment Variable
Global Variables
– [globals] – Special Context
– JOHN=ZIP/1
– JANE=SIP/JANE
– exten => 123,1,SetGlobalVar(JOHN=Zap/1)
Applications
• Applications are the workhorses of the dialplan.
– performs a specific action on the current channel
• Types
– Generic (Authenticate, VMAuthenticate,etc)
– Billing (SetAccount, SetAMAFlags)
– Call Processing (Answer, Busy, Dial, Hangup)
– Caller Presentation (SetCallerID, SetCallerCIDName)
– Database(DBdel, DBget, DBput)
– Application Interface( AGI, EAGI, PERL, PHP)
– Audio( Playback, Playtones, MusicOnHold)
– Voicemail & Conferencing( MeetMe, VoiceMailMain)
– Queue/ACD (AddQueueMember,AgentLogin)
Macros
• Macros are used to reduce the amount of redundant
code in the dialplan.
• passing arguments to the macro allows to generalize
macros
• Single line invocation from dialplan
• Macros are identified in the dialplan by starting a
context name with "macro-".
• ’s’ extension is used within macros since we want the
actions to be performed automatically
• Arguments in macros are accessed as {ARGn}
Q&A
Alex Vishnev
Chief Technical Officer, VoIP
13620 Reese Blvd. Ste. 400
Huntersville, NC 28078
Office (704) 632-3682
Mobile (704) 778-7260
Fax (704) 947-7112
Email [email protected]
Website http://www.acninc.com