Sunday, February 6, 2011

Asterisk Telephony Platform for Call Center

Image

Indosoft Inc., a premier contact center software provider offers Q-Suite, a robust, feature-rich and scalable call center ACD for people wanting to use Asterisk as their telephony platform. Q-Suite is enterprise grade, multi-tenant call center software that enables VoIP and TDM connectivity, as well as remote and distributed architectures. Q-Suite delivers sophisticated features like Automatic Call Distribution (ACD) with Skills Based Routing and Queue Prioritization, Predictive/Preview/Progressive Dialing, Interactive Voice Response (IVR), rich IP PBX functionality, call recording, agent scripting and a host of other features and reporting capabilities to meet the demands of modern day contact centers wanting to use Asterisk as their telephony platform. Workforce Management can be integrated into Q-Suite to deliver enterprise interaction through advanced scheduling, forecasting, agent tracking and seat planning capabilities. Q-Suite leverages the advantages of Asterisk, Linux, Apache and MySQL to provide an open architecture with unsurpassed functionality required for any next-generation contact center technology platform, out of the box.

Q-Suite is widely used around the world as premise-based software, as well as in remote and virtual call centers. Its Linux and Asterisk platform make it the most cost effective solution for call centers. Indosoft has been successfully deploying its technology in Canada, U.S.A., Europe, Australia, Asia and Africa for the past 10 years. Indosoft provides excellent remote production support from 9 a.m. EST to 12 a.m. EST, 7 days a week for all its products and services.

Q-Suite offers increased productivity within the contact center while dramatically improving the center’s ability to deliver a favorable customer experience. As such it delivers all the functionality and features required by next-generation contact centers, whether you operate inbound, outbound, or blended operations.

• ACD with Skills Based Routing• Real-time & Historical Reporting• API for CTI (.NET and Socket)• Hosted/Premise/Distributed Architectures• High Availability for Redundancy• Mid-call Recovery for Fail-over• Open Access and Full Knowledge Transfer• Web Agent Interface & Native Client
For more information, read our White Papers or visit our website at www.indosoft.com. Q-Suite’s full-featured Asterisk ACD is a unique product allowing enterprise-grade call centers to use Asterisk as their telephony platform. As a complete call center ACD software for Asterisk, Q-Suite provides advanced functionality like Skills Based Routing, Queue Prioritization, Virtual/Personal Queue and Agent Hot-Desking for the highly evolved hybrid telephony switch, Asterisk, which supports both VoIP and TDM connectivity.

Q-Suite ACD comes with a well developed set of APIs available in both .NET and socket (TCP/IP) library for Asterisk, enabling full ACD functionality to be embedded into your custom business application. With built-in redundancy and fail-safe call recovery, Q-Suite maintains ongoing calls and allows new calls to continue coming should there be any single point of failure, including software failure, within the components of the call center system. This unique feature enables Q-Suite ACD software to be utilized by mission critical applications.


For more information, read our White Papers or visit our website at www.indosoft.com.

Built on top of the open-standard open-architecture switch Asterisk, Q-Suite’s Predictive Dialer enables Predictive, Preview, and Progressive Dialing. Live Lead Queuing enables leads gathered from sources like websites to be posted directly to Q-Suite for immediate dialing. Built-in Concurrent Dialing capabilities, Drop Rate controls, as well as both Individual and Self-Pacing controls work together to maximize outbound call center productivity. A central administrative console provides powerful tools, including full Campaign and List Management as well as a dynamic, easy-to-use Agent Scripting tool, which enables on-page CRM integration, custom variables, text blocks with embedded variables, Post to URL functions and other popular dialer features.

For more information, read our White Papers or visit our website at www.indosoft.com.

Q-Suite’s unique Script Builder is a powerful tool used to generate scripts that guide effective agent-customer interactions for agents using Q-Suite through their web browser (as opposed to a custom application interface). Powered by an easy-to-use Graphical User Interface (GUI), Q-Suite delivers powerful script building capabilities.

A few of its popular functions include the ability to easily embed a web-enabled CRM or other Custom Application directly within the script. Other features include the abilities to insert text boxes capable of using data inline from a database, create custom fields for use within the script, and display script elements/pages based on conditional responses. Q-Suite’s Script Builder also enables data posting functions to be inserted within the script itself, which allows agents to input information received during the call to their agent screen, which is then automatically posted to the indicated URL once the call is finished.


For more information, read our White Papers or visit our website at www.indosoft.com.

The Dialplan Builder within Q-Suite is a Graphical User Interface (GUI) tool utilizing a What You See Is What You Get (WYSIWYG) editor, which allows easy-to-use drag and drop features to develop Dialplans for IVR and call routing in Asterisk. This sophisticated Dialplan Builder allows contact centers to accommodate new and diverse client requirements and increase productivity.

IVR or Dialplans are lists of instructions or steps that Asterisk will follow while handling incoming calls. Unlike traditional phone systems, Asterisk Dialplans are fully customizable and incredibly versatile, allowing full control over the handling and processing of calls. The flexibility and power of Dialplans come from its unique and powerful structure based on contexts, extensions, priorities, applications and a powerful syntax to construct instructions. Q-Suite Dialplan Builder enables the user to unleash the combined power of software and telecommunications to easily control and manage calls. Dialplans can go even further when you develop custom applications for call flow processing in well known and conventional programming languages like Java, C, PHP, PERL etc.


For more information, read our White Papers or visit our website at www.indosoft.com.

Many mature business verticals have a well developed CRM or Custom Application. Q-Suite allows full integration of these applications into the call center software.

A web-enabled CRM or Custom Applications that is capable of accepting command line parameters can be directly inserted into the agent script. The CRM or Custom Application will be displayed as a webpage and opened in the script once the appropriate customer data has been collected. This easy integration allows the agent to work efficiently from one screen.


If the Custom Application is driving the customer interaction, it is possible to embed the Computer Telephony Interface (CTI) into the Custom Application. A well developed set of APIs available in both .NET and socket (TCP/IP) library allows full call center functionality to be embedded into the Custom Application’s interface.


For more information, read our White Papers or visit our website at www.indosoft.com.

Q-Suite provides a uniform interface for CTI integration in the form of well-published API in both .NET and Socket library. This enables Q-Suite ACD to work under the hood, enabling vertical businesses to integrate CTI into any existing or new business application. This approach allows ease of integration and efficient application development, creating an opportunity for business systems with legacy telephony to incorporate CTI, embed Q-Suite ACD and move to IP telephony using Asterisk. Q-Suite API with its uniform interface for CTI integration presents a unique opportunity for deploying Asterisk as your IP telephony platform. Benefits of an Asterisk telephony platform include seamless VoIP and TDM interface, rich PBX functionality and a superior telephone switch at a fraction of the cost of comparable proprietary systems. The CTI library for Q-Suite ACD on Asterisk is available in two flavors (.NET and Socket) to make it easy for use in client applications under different platforms. The XML library allows client applications to log agent activity and tie it with telephony for ease of reporting.

Asterisk H323 channels

The Asterisk H.323 channel is included in the Asterisk source distribution in the channels/h323 directory in the source tree. The chan_h323 only acts like a H.323 Gateway not a gatekeeper, although it appears that the author is currently looking at adding basic gatekeeper functionality. See the channels/h323/README for installation instructions and software requirements and h323.conf for configuration.
There is another H.323 channel implementation (in fact the first one for asterisk that came into existence), named Asterisk-oh323 which is actively developed by InAccess Networks and can be found at http://www.inaccessnetworks.com/projects/asterisk-oh323.
asterisk-ooh323c is a part of asterisk-addons package. It is yet another, new (as of June '05) channel driver based on open source H.323 stack (ooh323c) from Objective systems. This stack is developed in C and contains only the code necessary to set up H.323 signaling channels. All media processing is handled by Asterisk itself. This provides scalability for H.323 calls that will depend primarily on the capability of Asterisk to handle media streams. Users should see call volume handling that is similar in magnitude to what can be handled by SIP. Currently (30-Jun-2005) the channel driver is available on asterisk-addons cvs and also from Objective Systems website at http://www.obj-sys.com/open. Note: You need CVS-HEAD version of asterisk.
The Woomera protocol makes it possible to put your voice over ip system in one server/process and your pbx in another and connect them with a simple raw-linear-over-udp protocol. chan_woomera is an asterisk channel_driver designed to interface the Asterisk PBX with woomera. Currently (June '05) this code is working but considered beta. Woomera currently only supports H323 but it should soon support the OPAL VOIP abstraction layer which will allow it to speak many other protocols. The number of protocols supported by the Woomera server is irrelevant to chan_woomera which will support anything Woomera supports because of it's thin-client-like design.
With woomera you can connect asterisk to a H.323 server (openh323 code) which will do H.323 over IPv6. Apparently openh323 also has some SIP code in their CVS. If added to chan_woomera, you'd get SIP over IPv6 also. h323 performs better, but has no jitter buffer. This implementation uses the Asterisk RTP stack. oh323 driver uses the RTP/RTCP stack and the adaptive jitter buffer implementation of OpenH323. oh323 does not use the codecs of OpenH323 but those of Asterisk. Using OH323 makes all these (stability) problems (with h323) go away, however at a cost of approximately 10-15 times the CPU usage in my situation: a G729 call coming from a Sipura and being rerouted with G.729 over H323 to a Quintum call proxy Jeremy McNamara on performance and why he started chan_h323 Compilation in channels/h323 subdirectory fails with a lot of syntax errors - you need to use exactly the version of PWLib and OpenH.323 mentioned in README. While connecting with H.323 client you get no audio or garbled audio and messages like this on Asterisk console: rtp.c:489 ast_rtp_read: Unknown RTP codec 107 received. Try to disable Speex or some other codec on Asterisk or/and client side. Compiling openh323 can require substantial memory resources, so make sure you have either enough RAM or sufficient SWAP (user report: 380 MB required) MS Neetmeeting is available on most Windows machines and thus a common tool to run the first h.323 test. Be sure to manually select a preferred audio codec in Netmeeting that is well supported by Asterisk, e.g. do not use g723.1 (which is the default) but A-Law or u-Law. Where bandwidth is a concern, use the installable GSM codec for Netmeeting which is available here: Netmeeting-GSM. Just download and start the instcodec.exe, select the GSM codecs and return to Netmeeting.

There is also a Netmeeting plugin for the free Open Source codec Speex, but it is a bit hard to set up: (Netmeeting Speex).


The next step is to edit h323.conf so that your netmeeting callers get dtmfmode=inband.


If you'd like to dial different extensions on Asterisk then you'll probably want to enter the Asterisk server's hostname (or IP address) as Gateway (not Gatekeeper!) in Netmeeting. After that just dial the extension. Without this Gateway setup you will probably want to dial the IP address of your Asterisk box.


chan_ooh323 with Siemens optiPoint 400 : if the RTP stream is closed after 30 seconds, it means chan_ooh323 didn't get a H.245 terminalCapabilitySetAck from the phone and timed out. This happens because the phone expects the dtmf item in the message and doesn't send the acknowledgment if the item isn't present. To work around the problem, use dtmfmode = h245signal in ooh323.conf.

allow=all in ooh323.conf won't work with asterisk-addons-1.4.0 or ealier (calls hang up just after being answered, see http://www.mail-archive.com/ooh323c-devel@lists.sourceforge.net/msg00385.html and the subsequent posts). You must have disallow=all, followed by allow= for each codec you want. Set that globally only. The codecs supported at the moment are ulaw, alaw, gsm, g723 and g729, and you must have the corresponding asterisk codecs installed.

Asterisk config h323.conf

Configuration for the Asterisk H323 channels
The NuFone Network's
Open H.323 driver configuration
;
[general]
port = 1720
bindaddr = 0.0.0.0
;tos=lowdelay
;

You may specify a global default AMA flag for iaxtel calls. It must be one of 'default', 'omit', 'billing', or 'documentation'. These flags are used in the generation of call detail records. (See Asterisk IAX channels for explanation of tos and amaflags)


;
;amaflags = default
;


You may specify a default account for Call Detail Records in addition to specifying on a per-user basis. See Asterisk billing


;
;accountcode=lss0101
;


You can fine tune codecs here using "allow" and "disallow" clauses with specific codecs. Use "all" to represent all formats.


;
;allow=all              ; turns on all installed codecs
;disallow=g723.1                ; Hm...  Proprietary, don't use it...
;allow=gsm              ; Always allow GSM, it's cool :)
;allow=ulaw
;
; User-Input Mode (  DTMF )
;
; valid entries are:   rfc2833, inband
; default is rfc2833
;dtmfmode=rfc2833
;
; Set the gatekeeper
; DISCOVER                      - Find the Gk address using multicast
; DISABLE                       - Disable the use of a GK
 or    - The acutal IP address or hostname of your GK
;gatekeeper = DISABLE
;


Tell Asterisk whether or not to accept Gatekeeper routed calls or not. Normally this should always be set to yes, unless you want to have finer control over which users are allowed access to Asterisk. Default: YES


;
;AllowGKRouted = yes
;


Default context gets used in siutations where you are using the GK routed model or no type=user was found. This gives you the ability to either play an invalid message or to simply not use user authentication at all.


;
;context=default
;
; H.323 Alias definitions
;
; Type 'h323' will register aliases to the endpoint
; and Gatekeeper, if there is one.
;
; Example: if someone calls time@your.asterisk.box.com
; Asterisk will send the call to the extension 'time'
; in the context default
;
;   [default]
;   exten => time,1,Answer
;   exten => time,2,Playback,current-time
;


Keyword's 'prefix' and 'e164' are only make sense when used with a gatekeeper. You can specify either a prefix or E.164 this endpoint is responsible for terminating.


Example: The H.323 alias 'det-gw' will tell the gatekeeper to route any call with the prefix 1248 to this alias. Keyword e164 is used when you want to specifiy a full telephone number. So a call to the number 18102341212 would be routed to the H.323 alias 'time'.


;[time]
;type=h323
;e164=18102341212
;context=default
;
;[det-gw]
;type=h323
;prefix=1248,1313
;context=detroit
;
Reaources: Recover Raid 5

Inbound H.323 calls from BillyBob would land in the incoming context with a maximum of 4 concurrent incoming calls


Note: If keyword 'incominglimit' is omitted, Asterisk will not enforce a limit on concurrent calls.


;
;[BillyBob]
;type=user
;host=192.168.1.1
;context=incoming
;incominglimit=4

Thursday, February 3, 2011

A2Billing – assigning an inbound number to a customer

Assigning an inbound number to a customer is fairly easy to achieve in A2Billing. Once assigned the customer can use the web interface to change the destination of that inbound number.

First you are going to need an inbound number from a DID/DDI provider. I’m going to use DIDX.net in this example.

We need to set the SIP URI destination for the inbound number with our DDI provider. In the DIDX control panel I’ve set the destination of a London DDI  (country code 44 / city code 20) to my demo server -

Next, in FreePBX on the livedemo server, we are going to create an inbound route that checks for the number specified in the SIP URI and passes that call through to A2Billing -

(The availble custom destinations need setting up like this first – http://sysadminman.net/blog/2009/integrating-freepbx-with-a2billing-621)

Now, in A2Billing, we are going to create the inbound number. There are various options for doing this such as importing from a CSV or linking to DIDX.net, obviously handy if you’re creating lots of DDI numbers.

There are also options for how the outbound leg of the call is charged, if at all. If the customer needs the number forwarded to a regular PSTN number and you select ‘dialout rate’ for the billing method then the customer will be charged based on their assigned call plan. It is also possible to charge a monthly amount for the DDI number.

Another option is to forward the call to a VOIP device, maybe a PBX if providing wholesale services or a SIP handset if providing end-user services. One thing it’s not easy to do in A2Billing is charge a per minute rate when forwarding the call as a VOIP call.

Create the number in A2Billing -

Now we’re going to assign that DDI to a customer and set the destination. In this exampe we are forwarding the inbound number to a UK mobile number. Note that VOIP_CALL is set to no. Also, the customer must be assigned to a Call Plan that allows them to call a UK mobile number as they will be billed for this leg of the call -

The customer is now able to see the inbound number in the A2Billing customer interface, and also change the destination -

Related posts: Part 6 – Create a customer in a2billing on ElastixGetting started with A2Billing – Part 4 Creating a customer and making a callUsing A2Billing to account for extension calls in Elastix

Sunday, January 23, 2011

Asterisk Software Add-On

Echo Cancellation

For Asterisk users that connect to the PSTN, the most common type of echo is hybrid echo - the echo introduced by the impedance mismatch between 2-wire and 4-wire telephone circuits. The echo manifests as a distorted and delayed reflection of the users voice while in conversation with an external party through the PSTN.

Host-based Toll-Quality echo cancellation software is designed to operate under 32-bit and 64-bit Linux and provides echo cancellation for configurable tail lengths of 16ms (128 taps), 32ms (256 taps), 64ms (512 taps), and 128ms (1024 taps).

IVR Voice Prompt

The growing installed base of Asterisk® open source PBX/IVR software has created the need for custom IVR prompts which mesh with the existing prompts in Asterisk. This not only minimizes your need for recording additional prompts, but makes customization seamless to the user.

Tuesday, January 18, 2011

Configure Polycom IP Phone With Asterisk PBX

Introductory information on how to use Polycom® SoundPoint® IP phones and Polycom® SoundStation® IP conference phones with the Asterisk PBX.

This document assumes you have an installed and functioning Asterisk server.

In this document, the terms SoundPoint IP phone, SoundStation IP phone, and Asterisk/Asterisk server refer to the following:
SoundPoint IP phone—Polycom SoundPoint IP 301, 320, 330, 430, 450, 501, 550, 560, 601, 650, or 670 desktop phone SoundStation IP phone—Polycom SoundStation IP 4000, 6000, or 7000 conference phone. Asterisk or Asterisk server—a functioning Asterisk PBX installation.

Creating a Basic Configuration
The configuration file fragments in the following figure show the basic settings required to configure both Asterisk and the SoundPoint IP or SoundStation IP phones to successfully interoperate.
Note that these settings are minimal configurations and only show changes from default factory settings on the phone. If you are not sure of the current settings and their impact on the phone in your configuration, restore the phone to the factory default settings (see Removing Configuration Overrides).
To create a basic configuration:
1. For each phone to be connected, define the phone extension number in the Asterisk sip.conf file, as shown in the example below.

In the above example, the extension number 8055 is defined. This extension:

Is defined by the number inside square brackets [8055]

Has a SIP registration username of 8055 username

Has a SIP registration password of 8055 password

Uses the Asterisk mailbox number 8055 in the default context

Is an Asterisk type friend, meaning it is both a user and a peer

Is a dynamic host according to Asterisk

Sends DTMF tones as special RTP packets according to RFC2833

Exists in the Asterisk context Polycom

Allows RTP traffic to bypass the Asterisk server

Sends a caller ID with text as Polycom Demo and a number 8055


2. Define the dial plan in the Asterisk extensions.conf file for the context declared above, as shown in the example below.

[polycom]
exten =>8055,1,Dial (SIP/8055,25)
exten =>8055,2,Voicemail,u8055
exten =>8055,102,Voicemail,b8055

In the above example, the extension number 8055 was added to the dial plan.

When someone dials this extension from within the context :

Asterisk will first try to ring the extension 8055 using the SIP channel, waiting up to 25 seconds for the extension to answer.

If the extension is unanswered, Asterisk will direct it to mailbox 8055.

If the extension is busy, Asterisk will direct it to mailbox 8055.


3. Once the Asterisk configuration is complete, configure the SoundPoint IP or SoundStation IP phone. You can do this in one of three ways:


1. Via a centralized provisioning (or boot) server using configuration files. This method offers the most flexibility. This is the recommended method of configuring Polycom phones and the method that is used throughout this document.
2. Via the phone’s built-in web server using a web browser. Not all options are available using this method, but you can use this method to configure the phone to register with Asterisk.

3. Via the phone’s menu system (using the phone’s buttons). Not all options are available using this method, but you can use this method to configure the phone to register with Asterisk.

Linksys IP Phone Asterisk

First Sipura introduced the SPA-841 which was a decent IP phone but nothing to get excited about, it looked bad and did not have a high quality feel to it when you hit the buttons, felt the handset, etc. The phone was quite popular though with the Asterisk crowd, in large part due to its low price and I would assume the general popularity of Sipura SPA3000s within the Asterisk community.

After Linksys bought Sipura (Linksys itself is now owned by Cisco) they re branded the next generation of Sipura products, the SPA9XX series, as Linksys products. This series improves upon the original 841 in terms of features (Power over Ethernet on some models and a built in switch on some models are the main improvements) as well as build quality, the phones now feel like a high quality product.

The Linksys SPA921 is the cheapest of the Linksys SPA9XX series but offers the same quality as other models in the series, just not all of the same features. For instance the SPA922 is similar to the 921 but includes Power over Ethernet (which means if you do not already have PoE compatible equipment you must purchase either a PoE injector or a power cube for the phone) as well as a built in 10/100 Ethernet switch so that if you only have a single Ethernet drop to a desk you can plug that into the phone and the computer into the phone, versus having to purchase a separate switch and plugging both the phone and the computer into the switch and the switch into the single drop.

The one nice feature for a home office that the SPA922 does have that the SPA921 does not is a back light for the LCD. If you want a back lit phone for home use you could purchase the SPA922 but keep in mind the additional cost of having to purchase a power cube or a PoE injector. I find it very odd that Linksys would provide a back light on a PoE phone but not on a phone that plugs directly into the wall for electricity, usually it is the other way around.

All of the SPA series of products only work with Session Initiation Protocol (SIP). SIP is of course the dominant protocol out there for both IP phones and servers but also for Internet Telephone Service Providers (ITSPs). Personally I like to have my SIP devices all connect to Asterisk and then have Asterisk make IAX2 protocol connections out to my ITSP since not only does IAX2 support encryption (who knows how good it is, it was thrown in a few versions back but rarely used by anyone) but I also don't have to have as many ports open on my firewall.