1. WombatDialer 0.8.0 - it’s rough work to make things smooth

    It’s been a long ride, but WombatDialer 0.8.0 is finally out. The theme of this release was to make the experience of running WombatDialer smoother and to integrate the feedback coming from our users.

    WombatDialer is currently used in a good number of call-centers worldwide implementing scenarios of all kinds - from recalls of lost calls in inbound call-centers, to massive telecasting, to “classic” outbound scenarios like automated dialing and preview dialing with hundreds of live agents.

    The high flexibility of WombatDialer makes it easy to adopt it in existing call-centers and to easily create high value added services for proactive customer care - you call the customer to remind and help him, so he does not have to. This means customers are happy and the call center can organize its works on a predictable workflow.

    There are a good number of changes worth mentioning in version 0.8.0:

    • WombatDialer is future-proof by supporting Asterisk 12 and the upcoming Asterisk 13 right out of the box. It works on any version of Asterisk since 1.4.
    • WombatDialer now runs more quickly - we did a number of optimizations on the database layer. The dialer starts automatically when the system is already configured, so you don’t have to remember to do it.
    • The layout was notably improved - now it looks way better and there is more information available, especially on the Reports and Live pages. We did a large number of tweaks to improve usability - for example, when you are looking at a campaign run, the run refreshes automatically.
    • WombatDialer is able to send e-mails on campaign completions - this feature makes your life easier when running large campaigns that take days to complete.
    • Improved reverse dialing mode - it is possible to set a completion code when rejecting a call, and the agent’s channel is automatically disconnected if the call fails.
    • The APIs were improved to set completion codes when rejecting calls, to set extStatus codes through the HTTP interface and to report system health.
    • We have an automated test suite. Before releasing, we test Wombat with over one million calls in telecasting, direct-to-queue and reverse modes. This may not make a direct difference to you but it means we have a way to run predictable stress tests and make sure WD will handle real-life workloads.
    • We also fixed a large number of little bugs here and there - over 80 items were addressed. Together, these fixes make the experience simpler and smoother.

    WombatDialer can be installed through yum or it can be installed as a standalone Docker app. The User Manual has a chapter on how to run it under Docker, reaping the benefits of a hassle-free installation and upgrade path.

    What comes next?

    The upcoming version 0.9 will cover:

    • Internationalization. WombatDialer will be available in the most common languages.
    • Fax and AMD detection, with user-configurable appropriate behavior (for example, when you connect to a Fax, you might send a default fax page, or leave a default message in the voicemail)
    • Improved time-scheduling for runs (e.g. dial from 9 to 5 from Monday to Friday, dial 9 to 11 on Saturdays but don’t dial at all on Dec 25 and Jan 1).
    • More powerful reschedule rules, with HTTP notifications and the ability to add the current number to a list or blacklist

    We welcome comments and ideas - what is the killer feature you’re missing that would make a difference to you?

    If you want to try WombatDialer now, you can install it automatically on most existing PBXs - see http://wombatdialer.com/installation.jsp - and get it up and running in a few minutes. So you can stop worrying about the subtleties of implementing real-life outbound dialing in Asterisk and make your call-center agents more productive.

    Plus, Erwin is super-cute - try it today!

     
  2. Hey! there’s a Wombat in my Docker!

    It is Summer. So when Erwin started talking about ships and sailing, we considered it quite normal. But what is Erwin doing on an (apparently pirate) container ship?

    Yes - WombatDialer is now available as a working Docker image.

    Why is this cool?

    Docker containers are a new standard for infrastructure management. Docker containers let you install and upgrade software without worrying about dependencies and software versions - each of them behaves as-if it was a separate virtual machine, but it is lightweight as the actual running processes and has very low latency.

    This plays very well with WombatDialer, that is an extremely flexible and scalable outbound dialer for the Asterisk PBX. It follows our philosophy that you should tell the system what you want done, not how, and that WombatDialer will take care of all the low-level details (errors, reschedules, call handling, server clustering, logging) while you focus on the high-value-added business application - be it call reminders, queue recalls, telephony surveys… you name it.

    What this means for WombatDialer

    You can run the Dockerized version of WombatDialer in a single command on any Linux OS that supports Docker. So to test-drive WombatDialer on a new system running Docker v1.0+, you just enter:

     docker run -p 8080:8080 -P -d loway/wombatdialer
    

    This downloads an image containing Wombat and its database, and starts it by binding it to port 8080 of the local server. So you can connect it as http://[serverip]:8080/wombat and it will run immediately. Docker runs on Centos 6.5 systems, CentOS 7 and Debian systems. Just make sure that you are running version 1 or newer. Want to test-drive it fully? get a free WombatDialer demo key and start serious dialing immediately.

    To make sure it’s running and know its id, enter:

     docker ps
    

    And to stop it:

    docker stop {id}
    

    Each container is run as a separate instance - so you could have multiple distinct WombatDialers on the same box, just by binding them to a separate public port. Want to run a quick test? just start a new instance, do your testing and throw it away. Each instance starts as a clean-slate, with a clean database and configuration ready to be customized.

    That’s nice but… how do I keep the data between different runs?

    WombatDialer uses a pattern called “data-only containers”. This means that you can have special containers that only contain the data (databases and custom configuration) where everything else is in a code image. You do this by creating a data-only container, giving it a name (in our case it’s MYWBT) and mounting it to your WombatDialer instance.

    docker run --name=MYWBT loway/data true
    docker run --volumes-from MYWBT -p 8080:8080 -P -d loway/wombatdialer
    

    So if you run a WombatDialer instance without a special data container, everything will be put in the code image. If you do, all data that is supposed to be present on an update will be stored in the data-only container.

    You want to upgrade WombatDialer because a new version is out? stop your existing Wombat instances, and run them again on the same data containers. Docker will download the latest version and when you connect to it, the database will be automatically updated. Want to make backups? connect to the data-only container using a tool like nsenter and run a backup job.

    What is coming next?

    We expect Docker to play a significant role in infrastructure management. We believe that it makes it so simple to run WombatDialer instances that end up being just “fire and forget”. Plus, having higher performance, lower memory consumption and lower latency compared to a separate VM, it plays especially well for telephony applications.

    To know more

     
  3. WombatDialer 0.7.7 - E-mail notifications and more

    After a few months, we are releasing version 0.7.7 of WombatDialer. This includes a large number of bug fixes and a few interesting new features. As you can see, Erwin himself is very excited about the new features.

    Erwin You Got Mail

    The most important feature is e-mail notifications. You can now tell WombatDialer to send you an e-mail when a campaign completes or changes its run status. This is extra useful as it makes tracking long-running campaigns a breeze. When you start using it, you simply won’t live without.

    How do you turn this on? you first have to edit the tpf.properties file to tell Wombat about yous SMTP sending properties - see the updated User Manual. We suggest leaving on the SMTP debug mode, so that it logs SMTP activity to the logs. Create a new campaign that has just a few calls in it, set the e-mail notifications to ALL, enter one or more e-mail addresses in the e-mail field and run the new campaign. You will receive notifications when the campaign starts, when it is paused/unpaused and when it stops.

    How does a notification e-mail look like?

    Campaign name: Test - Started at: 14.07.27 14:36:34 - Current state: COMPLETED
    Runnable on: Su | Mo | Tu | We | Th | Fr | Sa - From: 00:00:00 - To: 23:59:59 - Priority: 10 
    Calls placed: 188 - Items in call cache: 0 - Calls terminated: 100 
    Life-cycle termination rate: 53% - Reschedule rate: 47% - Est. remaining calls: 0 
    Running for: 00:01:20 - Estimated completion in: 00:00:00 - Attempts per hour: 8460 - Completions per hour: 4500 
    

    As you can see, it is the same information that you see on the Live page for that campaign. By the way, the Live page was made “livelier” - now if you are looking at a running campaign, its statistics are updated periodically so you do not have to re-select it. Plus, counters were added on the Live page to see the numbers of runs in a given section even when the section is closed.

    Under the hood, we made a large number of changes to improve the database persistence layer and avoid bottlenecks for high load. The server component that powers the Live page was rewritten from scratch and it is now an order of magnitude faster. Asterisk 8 and Asterisk 11 are now the best supported targets, and we have a standardized regression suite that tests all dialing modes with one million calls.

    So it is an interesting time to run WombatDialer. We are seeing a lot of people coming up with creative and innovative solutions to power their call-centers and improve their workflows, especially with queue recalls.

    You can test-drive WombatDialer now using the free, supplied demo key.

     
  4. Introducing QueueWiz

    For the Astricon 2013, we created a little tool that lets you easily model Asterisk-based call centres.

    QueueWiz is the first free web app for interactive, quick and accurate call center sizing, cost and revenue simulation. Insert your data with the intuitive interface, measure traffic intensity, expected wait times, agents’ engagement, revenue per call and per agent and even hourly margins. Save your simulation and share it via email or social media.

    Completely free of charge at http://queuewiz.queuemetrics.com.

     
  5. WombatDialer 0.7.3: Black lists, CSV uploads and more

    After a few months of work, we are proud to release WombatDialer 0.7.3. This is a major release that adds a number of features that have been on the wish list for quite a bit of time.

    Namely:

    • Black lists. It is now possible to filter call lists dynamically when dialing out using one or more Black Lists. Black Lists are lists like any other in WombatDialer that can be used to collect numbers that are not to be called anymore. They can be updated through the HTTP API, so you can control this feature externally and while a campaign is running.
    • CSV import / export of lists. You can now prepare lists of numbers to be dialed (with all their attributes) using your favourite spreadsheet and upload them to the dialer through and easy-to-use drag and drop interface. You can also export lists of numbers with attributes as CSV files.
    • Separate Agent CLID. A number of times, you want your agents to receive a call which caller-id contains information on the call being made (e.g. the name of the person called, or their CRM id - you choose). You can now have separate caller-ids for the external versus the internal side of a call.
    • Attributes substitution. You can now use call attributes in caller-id’s, caller presentation and logging code.
    • Sortable campaign runs. In the Live page, you can now decide the sort order of campaigns and runs
    • Number generator. The number generator can now create correctly set of numbers to be dialed whatever their prefixes
    • Better security. On all user-created records, you can now see who created them and who modified them last
    • Live dialer status. The dialer box on the main page can be set to refresh automatically

    Plus a large number of fixes, usability tweaks and minor redesigns meant to make the experience smoother and better.

    You can try the latest version with the free license included or you can upgrade an existing systems through the yum installer. Get started from our Dialer Installation page. We are sure you will like the new release.

    PS. We’ll be exhibiting WombatDialer and QueueMetrics at the Astricon in Atlanta, booth 33 - come and say hi.

     
  6. WombatDialer 0.7.0 available today

    WombatDialer started to be used for production services about two years ago. Its first adoption scenario was telecasting - delivering voice messages to a large set of recipients in a way that was fully automated, scalable, monitorable and integrated with external processes. We put a lot of effort into making sure that this worked to the point of being 100% reliable. Now our baby wombat is growing up.

    A lot of users are demanding multi-tenancy and better control of how calls ending up to human agents are to be placed. Version 0.7.0 is available now, and it adds a number of interesting new features:

    • Reverse dialing lets you have outbound agents immediately connected when the callee picks up, without the minimal delay of waiting on a queue for dispatching. On top of this we implemented preview dialing, where agents can check the number to dial and approve or skip it - we have a tutorial for this, showing the integration of the default preview panel into the QueueMetrics agent’s page at http://blog.wombatdialer.com/post/52639475437/preview . As with most things in WombatDialer, we included all-powerful APIs to roll your own.
    • A complete security model that closely mimics the one used in QueueMetrics will let you define multiple, separate “tenants” having their own campaigns while sharing the physical Asterisk infrastructure
    • Dynamic Campaigns: runs can now have lists of numbers added (or paused) while they are running. Working fine with “idle” campaigns as well.
    • The Live page was improved to display the dialer status and - when using queue end-points - who is the agent currently connected to a call. Also a number of usability tweaks were implemented to make the experience smoother.
    • The dialer controls now show extensive queue and agent details to make monitoring easier. Also the dialer supports better syncing to live queues when restarted.
    • A number of performance changes will make processing larger campaigns a breeze.

    A complete description of all the changes is available in the updated User Manual, available in HTML and PDF from http://www.wombatdialer.com/manuals.jsp

    You can test drive the latest version now, by running "yum upgrade wombat" on an existing installation. Or see http://wombatdialer.com/installation.jsp

    We look forward to your feedback and suggestions - we have a special forum for feedback located at http://wombatdialer.userecho.com . Let us know what you think of the new version and what you would like to see in the next version of WombatDialer.

     
  7. Tutorial: Reverse preview dialing made easy

    Preview dialing is a type of reverse dialing available since WombatDialer 0.7.0 where the agent has a chance to “preview” the number that is to be called before actually having a call placed.

    The way it works is:

    • The agent logs on to a queue. WombatDialer uses the queue (as it usually does in Reverse dialing modes) to know which agents are available. This makes integration with QueueMetrics very easy.
    • The agent asks WombatDialer for a number to call. WombatDialer gets the next number out - considering all its dialing and reschedule rules - and reserves it for the agent.
    • The agent uses a GUI where they can see the number to be dialed and typically embeds, or links to, an external CRM app so that they can review the call
    • When the agent is ready, they ask for the call to be either placed or skipped.
    • If the call is to be placed, the agent is connected immediatately and listens to Music on Hold until the callee is on line
    • If the call is not to be placed, it is maked with a special code
    • Reschedule rules apply - so error states are handled correctly

    Step 1: Installing Elastix

    In order to run this tutorial, we install a brand-new Elastix 2.4 system. On it we create:

    • Three SIP extensions: 300, 301 and 302. We will use 302 as the agent extension while 301 and 300 will be used as sample end-points
    • One queue, called “400”, to hold our agent. Note that calls will NOT be processed through the queue but we will use the queue to keep track of which agents are available. When defining it, we make sure that we set: “Ring Strategy: rrmemory” - “Event when called: yes” - “Member status: yes” so that WombatDialer can fully observe it.

    Step 2: Installing WombatDialer

    We install WombatDialer on the Elastix system using yum. When we log in, we create:

    • An Asterisk server that can talk to Elastix. We can use the AMI user “admin” with the default password you gave during the system installation.
    • A trunk named named “Trunk”, which dial string will be Local/${num}@from-internal
    • An end-point of type QUEUE, which name is “400” (so that it observes queue 400), located at extension “400” context “from-internal” (this is not really needed if you run only reverse campaigns), setting both “Reverse dialing: yes” and “Manual preview: yes”
    • We create a list called “Numbers” and leave it blank for now
    • We create a campaign called “Reverse”, which has logging set as “QM_COMPATIBLE” and which logging code is “400”. We add to it the trunk, the EP and the list we just created.

    Now we go to the list manager and upload the following list:

    300,NAME:John
    301,NAME:Mike
    

    This tells WD to dial numbers 300 and 301, and sets a NAME attribute for each call (that will be useful when previewing).

    Step 3: Installing and configuring QueueMetrics

    Install QueueMetrics on the same machine as the Elastix system by typing:

    yum install queuemetrics-espresso
    

    Now log in into QM and configure:

    • An agent called agent/302
    • A user for agent 302 called “agent/302” password “999” class “AGENTS”
    • A general monitoring queue called “400”. Set agent/302 in the MAIN level of that queue.

    Now edit the “System parameters” and edit the section realtime.agent_button_1 as follows:

    realtime.agent_button_1.enabled=true
    realtime.agent_button_1.caption=Wombat
    realtime.agent_button_1.url=http://10.10.5.30:8080/wombat/agents/rd_pop.jsp? agent=SIP/[a]&url=http://10.10.5.31/sugar/index.php%3faction=UnifiedSearch%26module=Home%26query_string=<NUMBER>%26name=<NAME>&inset=1
    

    Edit the public IP of your Elastix server and replace the “10.10.5.30” address above.

    This code links to an instance of SugarCRM on 10.10.5.31. On it, create a contact named “John” which telephone number is “300” and one contact named “Mike” which telephone number is “301”. You can link to any other CRM software that has a web-based interface just the same way.

    Making it all work together

    • Log “agent/302” into QueueMetrics and have him join queue 400 on extension “302”. Note that we are using Hotdesking - the agent logs into Asterisk with their SIP extension.
    • Start the dialer. From the Live page, start the campaign “Reverse”. No calls will be placed.
    • Check the dialer status. You should see WombatDialer observing queue 400 and finding “SIP/302” logged on. Try pausing and unpausing the agent and refreshing the dialer: the status of SIP/302 should change accordingly.

    Now click on the button called “Wombat” from the Agent’s page. You should see a preview panel like the one in the picure:

    As you can see the SugarCRM panel is displaying the right record.

    TIP: the first time you call the page, SugarCRM might ask you to log in. Do it and refresh the page.

    If you look at the Live page on WombatDialer, the call should appear as “Reserved”. When the agent clicks on Dial, the call should start. Once the agent answers, your dialer will try and connect the other extension.

    When dialing, the Live page will show what is going on:

    And the same thing will happen on the Agent’s page:

    Nice work, isnt’t it? :)

    Improving the solution

    • You can add PSTN numbers to your lists and the will be dialed as if the had been entered on a local extension.
    • If you want WombatDialer to dial without waiting for an agent decision, just remove the “Manual preview” check and restart the dialer.
    • If you want a customized preview panel, you can create one by using the WombatDialer API.
     
  8. A WombatDialer roadmap - reverse dialing, AMD/fax detection and more

    We have been quite busy working on a number of themes that will make WombatDialer better and more useful, so we thought we’d better share them with you.

    Busy Wombat

    The first theme we have addressed is improved flexibility in dialing to agents. A number of users asked for ways for agents to be already connected when the callee is rung. This led to the developement of Reverse Dialing and Reverse Stepwise Dialing. With Reverse Dialing, the agent is rung first and then the call is attempted. This makes sure that when the callee answers, the agent is already on-line and ready to talk. The agent must be a member of an Asterisk queue, so that we get presence information (log in, log out, pauses and current status) right out of Asterisk. This also lets you share an agent on multiple queues with different dialing policies.

    With Reverse Stepwise Dialing, we go a bit further - we use an API so that an agent can reserve a call, preview it and decide whether to actually dial it or to mark it as processed without dialing. If the agent does not want the call processed, you can reschedule it or mark it as not to be processed. If the agent does not make a decision within 10 minutes from reserving, the call is put back into the dialing pool. All call variables are passed to the agent, so you can display them or link to an external CRM.

    The second theme is security - we are adding a security model that matches the one used by QueueMetrics, so that you can make different trunks, end-points, campaigns and list visible to some users only. This also affects Live viewing and campaign reporting and will make WombatDialer completely multi-tenant (like QueueMetrics is).

    After this, we plan to address two major themes - AMD/Fax detection and Black lists / Robinson lists. For AMD/Fax, we plan to use the facilities Asterisk offers in order to detect whether the call is answered by an Answering Machine or by a fax machine. This has the major advantage of not tying you to a specific solution, but lets you use a plethora of third party modules that are available for Asterisk in case you should find the default ones not good enough for you. WombatDialer will run the channel detection scripts and will react by sending either a pre-recorded message (for AMD) or a fax page in case no human caller is detected.

    As per black lists, we plan to offer both a way to check numbers against a set of internal lists or against an external server using an API. A number will be checked against all lists for a campaign and will be processed only if all call lists allow it.

    We plan to release the first two features - Reverse and Reverse Stepwise - in about one week. Work is already ongoing for security, so this should be available in 0.7.0 by the end of June. AMD/Fax and black lists will be implemented by the end of the summer - as they in the planning stage, we would like to hear from you about what you would need. We have a Sugegstions forum on UserEcho at http://wombatdialer.userecho.com where you can propose new improvements and vote on what other people proposed, so make sure your voice is heard.

    (Source: wombatdialer.com)

     
  9. Version 0.6.13 - A taste of things to come

    We have a new version of WombatDialer available on the public repo. This version adds a few interesting things to WombatDialer and should make your life easier when running it in production.

    First, WombatDialer has a better status view of queues: it now prints out the agents present on a queue and their current state, plus the calls (if any) currently queued.

    New dialer status

    This way it is easier to understand what is going on in real-time. Also, when a call is connected to an agent, the agent being used is shown on the Live page. WombatDialer also tries to sync the queue as soon as it is brought up, so you always see all queues for your running campaigns even if you restart the dialer.

    The second major change is that call lists are now dynamic. You can pause and add lists on running campaigns, and WombatDialer will immediately respond to the changes you make.

    List manager

    You can even add lists to idle campaigns, and they will start dialing immediately. For each list, the current high-water mark is displayed. The Live page also includes a check so that you cannot send commands to the dialer if the dialer is currently down.

    One last important change is that the infamous DTSC bug was fixed, so you do not need to restart the dialer multiple times. This will make installation of the system easier.

    We look forward to your comments - we have a feedback system available at http://wombatdialer.userecho.com so the community can propose new features and discuss them before we implement them. And do not forget to follow us on Twitter or Facebook so you can be updated when we have something new for you!

     
  10. A bit of history of WombatDialer (with furry picture)

    We originally started working on the WombatDialer as a “sidekick” of QueueMetrics for a couple of clients who were interested in having ways to automatically feed Quality Assessment data into QM. The idea was to recall callers and offer them a short IVR quality assessment menu, in order to gather information on how well their call-centre was behaving.

    So we needed something to do that, in a way that was basically turn-key. By designing the requirements, we found out that you could have Asterisk do a lot of things that all had in common the dialing logic - see Why was WombatDialer created for a longer explanation. The name came from the son of our lead engineer, who was three at the time and heavily into wombats and furry animals in general.

    A likewise wombat

    Our point with WD was not replacing common Asterisk predictive-dialer solutions (there are a number of them, and they work well) but offering declarative dialing primitives - you tell WD what you need and it performs as if it was one single call on one single server, though it may be hundreds of calls on multiple servers. The idea was that you would install it on an existing system - that had its own dialplan and GUI - and it would interface. That it would work along whatever telephony traffic you had on the box. So we did not initially target predictive, agent-heavy systems, but thought about telecasting, and moved on to power-dialer when used together with queues. And we added a free usage license so that people like you could download it and use it to create something new on their own PBX - no questions asked, but please share!

    We found a lot of interest so far - we already have a number of systems installed worldwide and many more in testing phase that we are following up. People keep coming up with ideas on things one could build - recalling queue hangups is really interesting, and so are reverse IVRs in general. We are learning a lot and try to make the product better.

    What would you like to build next to improve your call-center (or your PBX) by adding easy to use, scriptable outbound iteractions? Just let us know.