Asterisk, and other worldly endeavours.

A blog by Leif Madsen

AstriCon 2009 Presentation — Building a Distributed Call Center


For those who missed it, you’re able to get a PDF of my AstriCon 2009 presentation from the http://www.astricon.net website.

http://images.tmcnet.com/expo/astricon/presentations/cc01-madsen-digium.pdf

There are additional presentations available from the conference as well. Check them out here:  http://www.astricon.net/2009/astricon/agendaAtaGlance.aspx

Overall, the conference was extremely well attended and I had a great time. I’ve been to a lot of conferences, and AstriCon is definitely a premiere conference that is professionally run, and contains a great deal of useful information by well versed presenters with little fluff (i.e. sales pitches). I met a bunch of great people there who are quite intelligent, and hope to keep in contact with them.

If you’re looking for conferences to budget for next year, definitely keep AstriCon on your short list.

Advertisements

Written by Leif Madsen

2009/11/18 at 3:40 pm

3 Responses

Subscribe to comments with RSS.

  1. Hi Leif. Thanks for posting the slides to your talk; I plan to go through them in the next couple days, but I was wondering if you could provide more detail or perhaps point me in the right direction.

    I’m working on the side for a friend’s father, who is creating his own start-up. The start-up will necessitate some form of call center, and his preference would be for it to be a distributed/virtual call center. He has tasked me with coming up with a “cost-effective” (i.e. cheap) solution, so I wanted to take a look at Asterisk.

    Can Asterisk foster a virtual environment? Where a end-user calls a 1-800 number and is routed to an agent (load balanced, obviously, based on call volume)? I know it can record calls and offer much of the same functionality of a PBX via a web interface, but I wasn’t sure if it could provide a completely soft solution (no phone, just VoIP via the computer for an agent through a browser or local application)? Or at least forward to a separate phone number.

    I’m pretty much a Linux newbie, never having used it before. And I haven’t gotten the chance to play around with Asterisk much yet, but it seems like such a promising solution to my dilemma. I’m just having some trouble finding some starting out literature or a guide to setting up Asterisk for this somewhat simple setup.

    As I said, if you could point me in the right direction, I’d greatly appreciate it.

    Thanks!

    Rahul

    2010/02/10 at 12:00 am

  2. Absolutely Asterisk can do all this (and more)! This is basically what I do for a living.

    However, I’ve learned it from over 7 years of working with Asterisk and lots of testing and practicing with different methods.

    Let me quote the following paragraph, and answer some of the questions you’ve posed there:

    “Can Asterisk foster a virtual environment? Where a end-user calls a 1-800 number and is routed to an agent (load balanced, obviously, based on call volume)? I know it can record calls and offer much of the same functionality of a PBX via a web interface, but I wasn’t sure if it could provide a completely soft solution (no phone, just VoIP via the computer for an agent through a browser or local application)? Or at least forward to a separate phone number.”

    Yes Asterisk can be created into a virtual environment. In fact, Asterisk doesn’t really care about how you utilize it in such an environment — it only cares about where you direct calls (whether they are sent to that instance of Asterisk, or where you tell Asterisk to place a call).

    As for your scenario that you pose that has a 1-800 number that is directed to multiple boxes, this is typically a scenario where you might utilize something like OpenSIPS to evenly distribute the load amongst multiple Asterisk servers (or this could even potentially be another Asterisk box that is simply a distribution point) — you’ll see that nearing the end of my slides with the pair of boxes at the front that distribute to several boxes in the back.

    As for the soft solution; Asterisk is a multi-protocol PBX. It doesn’t care whether you’re connecting via analog (POTS), or digital (ISDN BRI/PRI), or SIP, or IAX2, or MGCP, or H.323, or…. it goes on. All these technologies can then talk to each other seamlessly without any knowledge about the other protocols. It does this because Asterisk can speak all these protocols, so it just talks to them in their native language, all the while happily translating between technologies.

    There is no need for Asterisk to require any hardware other than the computer it is running on. Just download something like a Zoiper softphone and connect via SIP, then attach your tollfree numbers (or local numbers) from the PSTN via an ITSP (Internet Telephony Service Provider). I’ve had good luck with Unlimitel.ca (Canada) and Bandwidth.com (USA). There are many others, but those are ones I use on a daily basis without any issues.

    It could be done for the agent via the browser as well — Zoiper offers a web based phone, and a few other people do as well. I haven’t used them much because they are typically based on ActiveX, and because I don’t use Windows much, they aren’t useful for me.

    As you state, alternatively you could just forward to a separate number by placing another call out your ITSP which then delivers it to a cell phone or landline; again, Asterisk does not care in the slightest how you mix technologies and how you deliver calls.

    The following paragraph concerns me though, based on the complexity of a solution you are trying to provide:

    “I’m pretty much a Linux newbie, never having used it before. And I haven’t gotten the chance to play around with Asterisk much yet, but it seems like such a promising solution to my dilemma. I’m just having some trouble finding some starting out literature or a guide to setting up Asterisk for this somewhat simple setup.”

    You have much reading and learning to do grasshopper! There are various installation guides on the internet, and you can even find a free book on Asterisk from http://www.asteriskdocs.org (with the ability to purchase and help out the authors a bit ;))

    It would probably also be a good idea to grab an intro to Linux book as well, since you’ll need those skills to maintain the system.

    The distributed methodology to call centres is one of the more complex implementations to Asterisk that there is. You have to factor in a lot of thing, such as where are you going to centralize your data? (database typically, connected via ODBC). How are you going to manage that data, and who will be managing it? (do you need to build a web interface to manipulate the data in the database?), how tolerant to failure are you? Do you need to utilize some sort of auto-failover system (like LinuxHA/heartbeat), or do you need to handle hundreds of calls and need to distribute them evenly amongst multiple servers with something like OpenSIPS?

    You’ll need skills in Asterisk like dialplan programming; database interactions via realtime and func_odbc, plus the ability to create the tables for connecting; Linux skills for compiling and installing Asterisk; testing skills with things like SIPp for load testing and call scenarios.

    I don’t want to discourage you in your endeavor to learn Asterisk, because it is truly an amazing piece of software, and it CAN do all the things you want it to do based on your description. However, you’ll need to be realistic about your abilities to build such a system; there is much difference between building a small home office system with an auto-attendant and some extensions with voicemail and the ability to record calls — and a distributed, redundant, flexible call centre system 🙂

    However, if you just need a simple queue setup, that’s really quite straight forward on a single system. Just look at the queues.conf file along with extensions.conf for the dialplan, and sip.conf for the connections of SIP softphones. Building that should only take a few days of your time, even first try. Once you’ve got a handle of all those concepts, just keep learning and trying new things, reading what you can, and try to be creative in what you’re doing, and you’ll get there.

    Hope some of that helps! To answer another of your questions: I’m not aware of any how-to documents for building a distributed call centre. Once you get into that kind of scale, it really depends on your implementation as to how such a system would work, which is why they tend to be custom solutions. The other reason is people like myself make a living on building those solutions, so writing a how-to document on such a system doesn’t make a lot of sense. We tend to try and write smaller documents that allow people to get to that level.

    Check the doc/ subdirectory of your Asterisk sources. As of Asterisk 1.6.2 there is a document I wrote about creating queues.

    Enjoy your time with Asterisk!

    Leif Madsen

    2010/02/10 at 8:39 am

  3. Wow, you aren’t kidding when you say I’ve got a lot of reading to do. Guess I’ll hit up the Asterisk community forums and check out some of those links from your reply. I’ll absolutely take a look at Asterisk docs. I’ll ask my developer friends what Linux books they would recommend.

    Thank you for all your suggestions — they really do help a lot.

    It may be some months down the line, but I may send you a message or email for some advice or just to update you on my situation. Thank you again, sir.

    Rahul

    2010/02/10 at 11:53 pm


Comments are closed.

%d bloggers like this: