ACD (Automatic Call Distribution)
The following is the definition of ACD from Wikipedia:"In telephony, an Automatic Call Distributor (ACD) is a device that distributes incoming calls to a specific group of terminals that agents use. It is often part of a computer telephony integration system. ACD systems are often found in offices that handle large volumes of incoming phone calls from callers who have no specific need to talk to a certain person, but want to talk to a person who is ready to serve at the earliest opportunity."
See Also
- Database Systems Corp. ACD - Integrated ACD Software and IVR software plus IVR and voice broadcast phone systems. Features include sophisticated skills based routing
- Virtual ACD from Database Systems Corp. including call routing to remote agents
- Hosted ACD Software by UCN Inc- Competitively priced hosted telephony solutions carried over a nationwide VoIP Network.
- Asterisk based Inbound ACD from Indosoft with a unique web-based tool-set to effortlessly setup and manage Inbound Call Center
- IVR Studio from Voicent Communications. Screen pop on networked computers.


Comments
333Scenario
1) Call has to be directed to Mexico with autoattendant or autoattendant has to be played in Mexico, to keep the same type of IVR played we decided to play it on the SM7000 and just forward 2000 or 3000 , 2000 for english, 3000 for Spanish to Mexico.
sip.conf
;Defined SM7000 information, g729 is free if used as passthrough, meaning all your devices have to be g729 capable to avoid requiring codec conversion on the Asterisk.
sm-xx
type=peer
context=from-fwd
host=xxx.xxx.xxx.xxx
disallow=all
allow=g729
allow=ulaw
;Also created all the extensions required for the office, in this case 150 extensions which started at 100 - 250
100
type=friend
username=100
secret=12345
host=dynamic
dtmfmode=rfc2833
nat=yes
context=from-sip
101
type=friend
username=101
secret=12345
host=dynamic
dtmfmode=rfc2833
nat=yes
context=from-sip
extensions.conf
;I created a context named from-sip similar to the context that the extensions in sip.conf
from-sip
exten => 1000,1,Dial(SIP/1000)
exten => 1001,1,Dial(SIP/1001)
exten => 1002,1,Dial(SIP/1002)
exten => 1003,1,Dial(SIP/1003)
exten => 1004,1,Dial(SIP/1004)
exten => 1005,1,Dial(SIP/1005)
exten => 1006,1,Dial(SIP/1006)
;English
exten=> 2000,1,Answer
exten=> 2000,2,Ringing
exten=> 2000,3,Wait(2)
exten=> 2000,4,Queue(queue1|t|||180)
exten=> 2000,5,Hangup
;Spanish
exten=> 3000,1,Answer
exten=> 3000,2,Ringing
exten=> 3000,3,Wait(2)
exten=> 3000,4,Queue(queue2|t|||180)
exten=> 3000,5,Hangup
;Agent Login English
exten=> 2001,1,AgentCallbackLogin(||${CALLERIDNUM}@from-sip)
;Agent Logout English
exten=> 2002,1,AgentCallbackLogin(||l)
;Agent Login Spanish
exten=> 3001,1,AgentCallbackLogin(||${CALLERIDNUM}@from-sip)
;Agent Logout Spanish
exten=> 3002,1,AgentCallbackLogin(||l)
;This allows us to use any extension to record in gsm format special announcements
Exten => 888,1,Wait(2)
Exten => 888,2,Record(/tmp/asterisk-recording:gsm)
Exten => 888,3,Wait(2)
Exten => 888,4,Playback (/tmp/asterisk-recording)
Exten => 888,5,wait(2)
Exten => 888,6,Hangup
The point is that with this information I am ready to receive from sm-xx 2000 or 3000 depending on the language selected via dtmf by customer in LA, now that I have named that and in my prescendence 4 pointed to the queue1 or queue2 and also made it a timer of 3 minutes I can check the queues.
Announce = queue-english was not there, we had to record it with the 888 extension and save it into /var/lib/asterisk/sounds directory, pretty easy, this message is played to the Agent that is signed to english and spanish queue to let him know which language customer selected to answer properly.
queue1
music=default
autofill = yes
reportholdtime=yes
strategy = random
timeout = 5
retry = 5
wrapuptime = 0
maxlen = 0
setinterfacevar = yes
ringinuse = no
announce-holdtime = yes
periodic-announce-frequency=60
announce-round-seconds = 10
announce = queue-english
leavewhenempty=strict
joinempty=strict
queue-youarenext = queue-youarenext
queue-thereare = queue-thereare
queue-callswaiting = queue-callswaiting
queue-holdtime = queue-holdtime
queue-minutes = queue-minutes
queue-seconds = queue-seconds
queue-thankyou = queue-thankyou
queue-lessthan = queue-less-than
queue-reporthold = queue-reporthold
periodic-announce = queue-periodic-announce
member => Agent/1000
member => Agent/1001
member => Agent/1002
member => Agent/1003
member => Agent/1004
member => Agent/1005
member => Agent/1006
queue2 same thing with this queue.
agents.conf
agent => 1000,1234,Nancy
agent => 1001,1234,Rodrigo
agent => 1002,1234,Alberto
agent => 1003,1234,Alpha
agent => 1004,1234,Lisseth
agent => 1005,1234,Oscar
agent => 1006,1234,Noemi
The most interesting part is the Agents, signing in and out, which I will show as well as the HUD integration that I am working on right away.
Server characteristics:
IBM e-server, 2GB RAM
3.0Ghz Processor.
Hope this information can be of any help to people attempting to manage they're own ACD.
Saul Bejarano