ACD solution based on Askozia
Introduction
Askozia with the Call Flow Editor (CFE) offers an ACD solution as an alternative to the SipX/openUC integrated ACD solutions.
Main Features of the Askozia ACD system:
- Graphical design of ACD queues
- Unlimited number of queues and agents
- Different type of agents (static, dynamic)
- Many call patterns (all at the same time, least recently called, fewest calls, random, one after another, round robin with memory)
- Many useful queue parameters like drop time, repeated announcements, wrap-up time, agent ring time (till next phone will ring)
- Custom greetings, regular announcements, music on hold
- Time-based routing, load-based (number of calls waiting in the queue) routing, pin authentication e.g. for special hotlines, text2speech engine, dtmf menues, call-recording and sending of records by mail, different languages, starting bash scripts on queue events and much more.
This guide will describe a way to connect Askozia as an ACD application system to a SipX/openUC PBX. To have all the features described here you need a SBC (Session Border Controller). The configuration description is based on a Patton Smartnode Gateway that was configured to act as a SBC. This gateway is often used for PSTN connectivity. Thus it is already installed on most systems and can alongside (if no transcoding between codecs) handle the SBC function for the ACD application. Other SBCs may work too (ACME, Karoo, Audiocodes Mediant etc.) but have not been tested yet. They have to be compatible to SipX (PBX side) and Asterisk (ACD application side).
This scenario describes basic configuration of call queues, static agents and dynamic agents including scripts to show the status of acd agents on Polycom phones. It is not intended to be a complete guide. But it should be enough to lead you on the right track.
Architecture
The following illustration shows how Askozia is connect to the SipX PBX and which ways a call to a queue is taking.
Installation
The configuration steps expect that you have a running Askozia box with the call flow editor that is reachable by its IP address or domain. The installation is pretty simple:
- Boot from the image
- Enter destination device for the installation
- Configure IP parameters
It also expects that you have a running SipX / OpenUC installation. The steps to get a running Sipx are described in other wiki articles.
It also expects that you have a Patton Smartnode Gateway (for other SBCs you have to adapt the configuration steps).
Configuration
SBC configuration
We will start with the configuration of the SBC because it is a transparent gateway between SipX and Askozia and normaly does not have to be touched again. It will simply route all calls from SipX to Askozia and from Askozia to SipX.It uses two SIP interfaces. One for SIP communication with SipX. The other with SIP communication with Askozia. This examples uses port 5080 to communicate with SipX and 5090 to communicate with Askozia.
- Add SIP Gateway on SipX side that uses a free SIP port to communicate with SipX
context sip-gateway GW_YOURCOMPANY_SBC interface IF_YOURCOMPANY_SBC bind interface WAN context router port 5080 |
- Configure the location service for the gateway that has the domain of your SipX system and a identity-group that allows inbound and outbound calls
location-service LOC_SRV_SIP domain 1 voip.yourcompany.com 5060 identity-group default call outbound use profile tone-set default use profile voip default use profile sip default preferred-transport-protocol udp invite-transaction-timeout 2 non-invite-transaction-timeout 5 call inbound use profile tone-set default use profile voip default use profile sip default |
- Add a SIP interface for the communication with your SipX
interface sip IF_YOURCOMPANY_SBC bind context sip-gateway GW_YOURCOMPANY_SBC route call dest-interface IF_ASKOZIA remote voip.yourcompany.com early-disconnect call-reroute accept call-reroute emit address-translation outgoing-call from-header user-part call host-part fix voip.yourcompany.com 5080 address-translation outgoing-call to-header user-part call host-part fix voip.yourcompany.com use profile voip ACD-SBC |
- Configure a voip profile (this is to avoid transcoding which needs channels on patton gateways.)
profile voip ACD-SBC |
- Add SIP Gateway on Askozia side that uses a free SIP port to communicate with Askozia
context sip-gateway GW_ASKOZIA |
- Configure the location service for the gateway that has the domain of your Askozia system and a identity-group that allows inbound and outbound calls
location-service LOC_SRV_ASKOZIA domain 1 askoziaIP 5060 identity-group default call outbound use profile tone-set default use profile voip ACD-SBC use profile sip default preferred-transport-protocol udp call inbound |
- Add a SIP interface for the communication with your SipX (host-part from header ip of the SBC, host-part to header ip of the Askozia box)
interface sip IF_ASKOZIA |
|
Askozia Configuration
We have to configure four things:
- Virtual Phones
- Queues
- Provider
- Dial Plan Applications to login/logout users
- Add "phones" for all SipX extensions that should be acd agents
- Number: The extension of the agent at SipX
- CallerID: Same as the number
- Ring Length: indefinitely
- Provider: SIP URI
- Dialstring: Number@ProviderContext (to get the providerContext press ESC in the web-ui, at console type "cat /etc/asterisk/extensions.conf", Search for the Name of your provider Name and take the identifier in the brackets below the line "; outgoing provider : Your provider name"
- Add queues (Dialplan, Call Flow Editor)
- See screenshot
- Add Start, Answer, Queue, Upload Media Files and configure Queue parameters. For static agents add queue member
- Add a provider
- Name: Whatever you like
- Host: IP of your SBC
- Port: SBC SIP Port for communication with Askozia (5090 in this example)
- Incoming Extensions: All destination numbers that can be called from the openUC at the Askozia system (e.g. queue numbers, login numbers for agents)
- Codecs: Just the codec you configured in the SBC to avoid transcoding
- Add Dial Plan Applications for login/logout of agents
- For each queue and agent one login application is necessary
1,Answer() |
- In each application you have to replace the agent extension and Callflow Queue ID in RemoveQueueMember and AddQueueMember
- The callflow queue id is like the providerContext in the extensions.conf. Press ESC in the web-ui, at console type "cat /etc/asterisk/extensions.conf", Search for the Name of your Callflow and take the identifier of the queue from the next line with QueueLog under the Callflow identifier
SipX Configuration
- Create an unmanaged Gateway with configured to the IP of your SBC an the port you choose for Sip communication between SipX and SBC (e.g. 5080).
- Add a custom dial rule and configure all numbers you want to route to your ACD system under dialed number. Select your SBC as the gateway.
- If you have dynamic agents you may want to put the login/logout extensions on a speed-dial key of your phone.
Advanced Configuration
Lets say there is an ACD agent (extension 130) that is not statically configured for a queue. When he starts working, he is logging in using a speeddial and when he stops working he is logging of again. The agent is using a Polycom phone and you want to show if he is logged in on the screen of the phone. For this function you need an http server with php around. You may also install php on your SipX system and use that one.
You have to place the following php script on your webserver and replace the IP and the password in the URL call to the ACD system. You also have to place two images on the webserver. On that is showing logged out and the other showing logged in. The example script delivers an image suitable for Polycom Soundpoint IP 450 phones.
<?php |
You can test the script using your browser. Replace the id with the login extension you chose for your agent (e.g. 7130 for agent 130).
If that works you can take step two:
- Go on to the phone you want to configure on your SipX system.
- Open the Microbrowser Tab.
- Put the link with the appropriate id into the Field "idleDisplay home" and set the refresh time to 15 seconds.
Wallboard
Askozia lets you monitor your call queues. In the callflow editor you can click the wrench of a queue element to access the queue settings. Here is a link to the wallboard that shows the status and statistics of the queue.