PBX
definitions
- CFC = Call Flow Control
- DDNS = Dynamic DNS - service that automatically updates a domain name to point to a network's changing IP address
- DID = Direct Inward Dial
- DTMF = Dual-Tone Multi-Frequency
- ISDN = Integrated Services Digital Network - circuit-switched telephone network system that transmits both data and voice over a digital line through copper cables; 2 types:
- BRI = Basic Rate Interface / BRA = Basic Rate Access - 2 B and 1 D channel; 128 kbps; home users
- PRI = Primary Rate Interface / PRA = Primary Rate Access - US/Japan 23 B(eta/earer)-channels (voice) and 1 D(elta/ata)-channel (data), Europe 30 B-channels and 2 D-channels; businesses
- IVR = Interactive Voice Response
- MA = Module Admin
- MoH = Music on Hold
- PBX = Private Branch Exchange - private telephone system that connects users within an organization (extension-to-extension) and routes external calls through the public phone network or the internet
- POTS = Plain Old Telephone Service (RJ11)
- FXO = Foreign Exchange Office - uplink
- FXS = Foreing Exchange Subscriber - downlink
- (phone)FXO - FXS(PBX)FXO - FXS(provider)
- PSTN = Public Switched Telephone Network
- RTP = Real Time Protocol - used to transport call media
- SBC = Session Border Controller
- SDP = Session Description Protocol - e.g. codecs
- SIP = Session Initiation Protocol - initiation and tear down of the call
- toll-free number - telephone number that is billed for all arriving calls
933 - 911 test call; it reads back the 911 address it sees (only good providers provide this)
7777 - simulate an inbound call
freePBX
- I'm using freePBX on a VM in VMware Workstation with MicroSIP softphones
- when installing the VM, choose to install the OS later and then in the drive settings of the VM choose the image
- create the elements backwards when desiging the IVR
Admin
Bulk Handler
- import/export csv file of settings
Feature Codes
System Admin
- hostname, time zone, DNS, reboot...
System Recordings
Updates
- updating via CLI is preferred because it handles the dependencies automatically (with GUI, multiple Updates are required) -
fwconsole ma upgradeall and fwconsole ma restart
User Management
- manage users and groups
- FreePBX Administration - allow users/admins to manage some parts of FreePBX
Connectivity
Inbound Routes
- what to do with inbound calls
- DID - destination
- CID - source
Firewall
- opening only the UCP port through the firewall is preferred for security reasons (as opposed to opening admin GUI towards the internet)
- rebooting the PBX twice in 5 minutes disables the firewall for 5 minutes
Outbound Routes
- what to do with outbound calls
- executes the first match
Trunks
- virtual phone line over IP which carries calls
Applications
Announcements
- just a recording / voice response
Extensions
- BLF = Busy Lamp Field - indicator that changes color based on event status
- CDR = Call Data/Detail Record - call history
- CID = Caller ID (extension CID overrides outbound route CID which overrides trunk CID - specificity prevails)
- MWI = Message Waiting Indicator
- UCP = User Control Panel - allows users to administer their settings
- VM = VoiceMail (system registers only if >5 seconds)
- general VM box - useful for departments of after-hours messages
- virtual extension - not associated with any device
- avoid extensions starting with 1 because of the potential conflict with feature codes
- work with groups, not users - more scalable
Advanced -> Max Contacts - Maximum number of Endpoints that can associate with this Device
*1 - toggle recording of the call
*97 - check this extension's VM
*98 - check different extension's VM
*43 - echo test of sound and latency - useful for troubleshooting
miscellaneous
Reports -> Asterisk Logfiles - logs
Reports -> Asterisk info - various info
- if more agents than incoming calls, then ring group; else queue
- dial patterns:
X = any digit from 0-9
Z = any digit from 1-9
N = any digit from 2-9
[1237-9] = any digit or letter in the brackets (in this example, 1,2,3,7,8,9)
. = any number with any length
- prepend - Digits to prepend to a successful match. If the dialed number matches the patterns specified by the subsequent columns, then this will be prepended before sending to the trunks.
- prefix - Prefix to remove on a successful match. The dialed number is compared to this and the subsequent columns for a match. Upon a match, this prefix is removed from the dialed number before sending it to the trunks.
- match pattern - the dialed number will be compared against the prefix + this match pattern. Upon a match, the match pattern portion of the dialed number will be sent to the trunks
- CallerID - If CallerID is supplied, the dialed number will only match the prefix + match pattern if the CallerID being transmitted matches this. When extensions make outbound calls, the CallerID will be their extension number and NOT their Outbound CID. The above special matching sequences can be used for CallerID matching similar to other number matches.
lab
- the easiest way to test it is to add a feature code through
Misc Application
config
- only the non-default/relevant config
- some is extracted from the mysql database and some from the asterisk config files
extensions
extension name tech
301 Sales 1 pjsip
302 Sales 2 pjsip
350 Voicemail Sales virtual
401 Support 1 pjsip
402 Support 2 pjsip
450 Voicemail Support virtual
voicemails
[default]
350=350 Voicemail Sales
301=350 Sales 1
302=302 Sales 2
401=401 Support 1
402=402 Support 2
450=450 Voicemail Support
greeting
[app-announcement-2]
include => app-announcement-2-custom
exten => s,1,GotoIf($["${CHANNEL(state)}" = "Up"]?begin)
exten => s,n,Answer
exten => s,n,Wait(1)
exten => s,n(begin),Noop(Playing announcement Greeting)
exten => s,n,Playback(custom/greeting,noanswer)
exten => s,n,Goto(app-daynight,22,1)
CFC
[app-daynight-toggle]
include => app-daynight-toggle-custom
exten => *2822,1,Macro(user-callerid,)
exten => *2822,n,Answer
exten => *2822,n,Wait(1)
exten => *2822,n,Set(INDEXES=22)
exten => *2822,n,Set(DAYREC=beep&silence/1&featurecode&digits/22&de-activated)
exten => *2822,n,Set(NIGHTREC=beep&silence/1&featurecode&digits/22&activated)
exten => *2822,n,Goto(app-daynight-toggle,s,1)
exten => *2822,hint,Custom:DAYNIGHT22
feature code
[app-miscapps]
include => app-miscapps-custom
exten => *22,1,Noop(Running miscapp 1: Test IVR)
exten => *22,n,Macro(user-callerid,)
exten => *22,n,Goto(app-announcement-2,s,1)
IVR entries
selection dest
1 ext-group,300,1
2 ext-queues,400,1
0 ivr-1,s,1
ring group
grpnum strategy grplist description
300 ringall 301-302 Ring Group Sales
queue
[400]
announce-frequency=180
announce-holdtime=once
periodic-announce-frequency=0
strategy=rrmemory
timeout=15
member=Local/401@from-queue/n,0,"Support 1",hint:401@ext-local
member=Local/402@from-queue/n,0,"Support 2",hint:402@ext-local