Asterisk Jargon Alex Vishnev Chief Technical Office, VoIP ACN.

23
Asterisk Jargon Alex Vishnev Chief Technical Office, VoIP ACN

Transcript of Asterisk Jargon Alex Vishnev Chief Technical Office, VoIP ACN.

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