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
Top Related