Linux Progress! Want to be a beta tester?

Debian
Yesterday we had our first Alpha install of our new Linux relay at a customer site. I was pretty pleased with the results because the Relay worked flawlessly.

Our new Linux Relay is written in C# (.Net Core — same as 3CX).  It doesn’t require any special SDKs or .Net installs because our Relay is “self-contained” (for those of you who know what that means in the .Net Core world).  Essentially, you copy the files to your 3CX server (hosted or on-prem), set a couple of permissions, register the license key, and start the daemon (service).  With a little practice, I think you could probably perform the install in about 5 minutes.

Here is what we have ready so far:

Setup Tool:

The setup tool automates about 95% of the installation process including:

  • Sets Linux permissions
  • Registers the license key
  • Creates the Relay and Proxy services (daemons)
  • Sets the web bindings (URLs the Relay will respond to)
  • Opens firewall ports (if you are using IPTables)
  • Configures the database proxy.

REST API

The new Relay requires a license key.  Why?  Because we’ve baked into the Relay a REST API which enables developers to leverage our 10+ years of 3CX development experience to easily build their own solutions.  So, if you can call a REST-based API, you can now integrate your solutions with 3CX without needing to know the intricacies of the 3CX Call Control API.  This new API will replace our HTTP API and will have far, far, more methods because all our tools will use this new API. While the example screen capture below may look a little complicated, this is exactly what a programmer would expect to receive from an API (json object of a 3CX extension).

Database Proxy and 3CX Exporter

Previously you had to install our 3CX Exporter tool directly on the 3CX server.  That’s no longer required because we have included in the Relay installer an optional database proxy.  The proxy makes it possible for 3CX Exporter to run on a separate server (in the cloud or on-prem) and synchronize the data in the 3CX database with Microsoft SQL or MySQL.

We’ve been pounding away on adding support for Linux into our tools, and we’ve made some excellent progress.

Want to be a beta tester?

Let’s be honest, it’s a little early to call this a Beta, but the Relay has already proven to be very stable.    Still, if you would like to tinker with some of our early work, get in contact with our team +1 801-642-4655.  My support staff will likely complain a little about the added workload, but they better get used to it because the flood gates will be opening very soon.  While there is a ton of work left to do before we can even call this a beta, we are looking for people who are willing to tinker and offer suggestions.  If you would like to take a peek, I suggest you navigate to our website and select “Contact Us” and then “Waiting for Linux”.  Put in the notes that you are interested in beta testing, and also be sure to list which applications you want to see released with Linux compatibility first.  That will help us prioritize our work.

Tools you can Try NOW

This blog post will get out of date very quickly as we release more of our tools with Linux compatibility.Today, 3CX Caller ID, and 3CX Exporter are the first applications that can take advantage of the new Relay.  However, I’m traveling to India tomorrow and will be with our development team for the entire month of January.  The purpose of the visit is to train our team on how to work with 3CX running on Linux and to walk through converting ALL our applications over to the new Relay.  I expect you will see several more Linux compatible tools being released over the next couple of weeks.  As you might expect, we are going to start with some less-complex applications first, then move to some of the more complicated applications once the team is comfortable with the process.

User Guide

If you are a real nerd and want a peek at the User Guide, you can see it here. Keep in mind that this is a working document and will change frequently. It’s not been proofed either guys, so don’t be too critical.  If you have suggestions, feel free to make a comment.

 

 

 

3CX has effectively made it necessary for all 3CX customers to upgrade to 3CX 15.5 SP6. While it is “possible” to continue to run older versions of 3CX, the risk of doing so makes it infeasible for a production environment.

For those who have not heard, 3CX had to make changes to their activation servers (for security reasons). The changes mean that you can no longer activate 3CX servers older than V15.5 SP6. Because there are many common reasons why a 3CX server might need to reactivate, older versions of 3CX could fail unexpectedly. You really have no choice but to upgrade.

Since EVERYONE MUST upgrade to 3CX 15.5 SP6, and 3CX announced V16 yesterday, we have decided to drop further development for older versions of 3CX. While our tools will continue to work on older versions of 3CX, we will not be releasing any updates for versions older than 15.5. This is the first time we have stopped supporting older versions of 3CX (we still have products available for download for V10).

Pragmatically, this change in our support policy will probably not impact any of our customers since we have not seen an activation on an older 3CX server in a long time. Regardless, here at VoIPTools are committed to supporting all our customers, and providing regular updates to all our products.

 

We were asked by a call center customer if Recording Manager could be configured to only record inbound external calls.  The answer now is “yes”.  While 3CX may still record all the calls, behind the scenes, Recording Manager can delete any recordings made of calls that are not inbound external calls.

In large 3CX deployments, storage can quickly be consumed by recordings.  This feature deletes unwanted recordings in real-time.  This is different from a retention policy that deletes ALL recordings older than a specified date.  With this feature, Recording Manager only deletes recordings that are internal or outbound external calls.

3CX really only provides two choices when it comes to Recording calls: (1) all calls for an extension, or (2) on-demand manual recordings. This new feature offers additional flexibility for deciding what recordings are important, and because the removal of unwanted recordings happens in real-time, disk utilization is minimized.

 

It’s no longer a all-or-nothing choice!

The cost of transcribing voicemails is very reasonable.  Even so, in very large organizations a tiny cost can add up over time.  Having the ability to choose which extensions are transcribed is an important feature.  Perhaps you only want to transcribe the CEO’s or selected managers’ voicemails.  The latest release of Voicemail Manager allows you to selectively choose which extensions are transcribed.  It’s no longer an all-or-nothing choice!

 

 

Leader Board

In the coming days, we will be releasing an update to our existing wallboard to include some additional views.  Our original wallboard view is a “Leader Board” that displays agent activity with the most productive agents listed at the top of the list while less productive agents fall toward the bottom.  It’s a great tool for motivating staff to be productive by introducing some gamification elements to the work environment while allowing managers to easily monitor performance.

Unlike the 3CX Wallboard, our leaderboard wallboard monitors both inbound and outbound calls, whether the calls come to the agent through a queue or direct calls to/from the extension.  This wallboard monitors all external calls, not just queue calls.

 

New Features:

We have added some new columns to the Leader Board.  We now show the current 3CX presence setting (Available, Away, DND, etc.) and a timer that shows how long the agent has been in the current status.  These columns update in real-time.  I anticipate we will release a new report that shows how long agents were in each status.

 

 

New Queue Views

3CX has a great built-in wallboard, but it has one limitation — you can only see one queue at a time.  We are adding two new views to our wallboard to display multiple queues.  These views display typical queue statistics, but I would like to point out one column in particular.  “Available Agents” displays the count of agents who are logged into the queue and available.  This data is obtained using our new Windows/Linux Relay.

 

Multi-Queue View

Simple Multi-Queue View

Linux Relay Development


Debian

Sometimes progress seems to happen at a snail’s pace, and at other times progress is breathtaking. Our Linux development efforts started out slow, but recently the pace has quickened and I’m truly excited to watch our progress unfold. Hang on, things are about to get a little crazy at VoIPTools (if it hasn’t already been crazy here for the last year or more).

As one of the lead programmers here at VoIPTools (yes, I still have my pet projects), I’ve had to retool my skills honed over the last 37 years to get up to speed developing for Linux. On one hand, the code has been pathetically simple, and on the other hand, I’ve never felt more like a fish out of water.

Going back many decades I was once a Unix administrator for a large government entity. So you would think it wouldn’t be such a challenge for a Windows guy to get back up to speed again on Linux. Well, that old experience has come in handy, but what do they say about all dogs learning new tricks? It’s been a challenge at times.

I’ve been so close to completing the technical aspects of our new Relay that this 3-day holiday weekend I decided to pound through the remaining issues and get it done. Happily, I completed the last really hard technical issue on Monday. Yeah, that’s what nerds do when they have a 3-day holiday — play!

The real bug-a-boos for me have been (1) making the Linux install easy for people who know nothing about Linux, (2) make the event broadcast/subscription pattern easy for our development team, and (3) getting one codebase to work seamlessly on both Windows and Linux. The last one (#3) was the last hurdle to overcome. You could probably hear me cheer when I got our Relay to run both on Linux (as a daemon) and Windows (as a service) with the same code. It was epic (from my perspective).

So, as with any new release of a technically challenging product that is core to our entire business, we have to take baby steps as we look at releasing tools that utilize the new Relay. Next week we install our first custom product using the Relay. We still have optimizations to perform, and certainly some refactoring, but you can’t imagine how excited I am to have the core of the freaking Linux Relay ready to turn over to the full development team.

For you fellow geeks that care about some of the guts, here is a peek into what’s different about the old and new Relays. The original Relay was written with WCF at the core (pardon the pun). This was an awesome architectural decision. It has been rock-solid from day-1. But… the security restrictions imposed by WCF proved to be a real challenge to configure in some environments (ok, many). With 3CX in the cloud and VoIPTools on-prem (as one example) getting everyone to play nice could be a challenge.

 

REST API


The industry has changed since we first architected the Relay. We have all moved from SOAP to REST and that’s what’s primarily different about the new Relay… it’s based on REST. I can hear the gears turning in your head. That’s right, REST. So, you are wondering… will there be a new REST API? The answer is YES! And this will not be a little API, this will be a HUGE all-inclusive API, and YES we plan to make it public. Do you hear the cheers from all the programmers around the world? Yup, I heard it too.

But REST doesn’t do event broadcasts, what about that? That’s been handled by SignalR and Websockets. If you could see the amount of code that has been ripped out of the Relay and the huge simplifications to the remaining code, you would be cheering too. The Relay used to be one of those applications that everyone (including me) hated to touch out of fear of breaking something. Now with the new REST API, the patterns are so easy to follow that even junior programmers at VoIPTools will be able to make changes. You just can’t imagine what this means to future development at VoIPTools. THIS IS HUGE.

Now I’m the first to admit that I get a little excited by new releases, and I have to back peddle a little and be a little more forthcoming about where we are with the new Relay and what that means to the release of Linux compatible versions of our commercial tools. We still have a ton of work to do on the Relay to make it “production ready”. If you twist my arm, I would say maybe a month or a little more to get it ready for prime-time. But that’s only part of the story. As a very brief retelling of how our tools work with 3CX — let’s review… Our products (Recording Manager, On-Call Manager, Emergency Notifier, etc.) don’t talk directly to 3CX, they talk to the Relay and the Relay talks to 3CX. That happens in both directions. I’ll not detail the “why” here, but trust me, the Relay was probably the single best decision we ever made at VoIPTools. So when we replace the Relay, we have to make some changes to our applications, right? Yes, that’s true. But I’ve gone to great lengths to minimize the necessary code changes. For example, the old Relay command for MakeCall was VoIPToys.RelayServices.MakeCall. The same command for the new Relay is VoIPTools.RelayServices.MakeCall. As you can see, that’s a pretty minor change.

There will be other changes necessary. For example, Recording Manager accesses 3CX recordings via a Windows shared folder. Obviously, that’s specific to the Windows platform. Sure, I could do the same thing with Samba, but rather than add that complexity, we now expose the recordings through the Relay. Therefore, gone are all the hassles of setting up shared folders and the necessary cross-domain security challenges that come with that technology. The Relay runs on the 3CX server and the recordings are on the 3CX server, so security becomes pathetically simple. And I have a ton of code we can strip out of all our applications that were required for setting up security and authorization. Now I hear all our customers cheering!

 

What’s Next?


Initially, only the Relay will be Linux compatible. Our applications will still run on Windows. Eventually, it seems likely we will port all of our tools over to “Core” so they can run on both Windows and Linux, but that’s down the road a little farther. Baby steps right?

We have so many initiatives I would love to pursue/complete (our cloud platform for example), but the Linux market has blown up over the last 2 years and I had to make a choice. It seemed logical that we focus on the Linux Relay first since that’s going to be needed to fully embrace our cloud initiative. Once we have all our tools working with the Linux Relay, I’ll pause, take a breath, then decide what the next big thing is at VoIPTools.

 

Keeping track of phone calls in the 3CX Call Control API is a messy business. It’s been particularly challenging getting our dialer to work in all environments. One of the challenges was making outbound calls, getting the resulting unique 3CX call ID, playing the correct prompt, and then transferring the call. The complexity of this process was compounded by the need to control the outbound caller ID, and handling the prepending and stripping of digits along the way. Mucking with the phone number in outbound rules was just one of many headaches that came along.

Happily, we have added a new feature to our dialer that allows you to prepend digits to the phone number prior to dialing so you can force the call out a particular trunk (to control the outbound caller ID). We also now support stripping those extra digits too. Adding and stripping digits was really messing with our ability to track the right call through the process, but it’s now fully supported in our latest release.

 

What's New?

Finding time is always a challenge for me.  But I thought it might be beneficial for me to highlight whenever we add a new feature to one of our products here in my blog.  Let’s see if I can make this a habit.

  • Robo Dialer:  We have been working hard on the dialer to make it more efficient.  One of the recent changes was to eliminate the use of some of the CFD applications and now we are making calls directly (for Prompt and Direct call types).  This has simplified both the install (fewer restarts of the Queue Manager service) and the application runs faster.
  • Auto Voicemail:  We have added the ability to upload professionally recorded messages, and the ability to change the names of the recordings.
  • Emergency (911) Notifier:  Our first release of our desktop notification client was released last week.  This tool will be seeing several improvements in the coming weeks, but that’s probably the biggest change right now.
  • Competitive Wallboard:  We are adding idle time, and Agent Presence Status as new fields.  These features will be ready for release in the next couple of days.
  • Exporter:  This feature has been around for a while now, but I’ll mention it nevertheless… we can now process CDR files as well as synchronize data between PostgreSQL and Microsoft SQL or MySQL.
  • HTTP API:  This feature has been around for a while now, but maybe didn’t get a lot of notice.  We can now perform a MakeCallPlayFile.  It makes a call, plays the selected audio, and hangs up.  And a feature I forgot we had was MakeCall(<extension>, <other party>, <callerID>).  This feature allows you to change your outbound caller ID prior to placing a call.
  • Survey Creator: (formally Post Call Surveyor) can now upload prompts directly to 3CX without the need for a Windows share and all the hassles that entailed (security headaches).  We renamed the product because we discovered that people are using the tool not just for post-call surveys, but more generally.
  • Surveyor: (preview dialer):  We added a new Qualification widget, and we added the ability to have the dialer automatically dial the next contact when you move to the next contact.

We are constantly improving our existing products, but here is a tease of a couple of new products soon to be made available in beta:

  • CRM Plugin for Hubspot
  • Shared Reception Console for shared office spaces

There are probably lots more new features that have been released recently, but that’s what comes to mind at the moment.

 

 

 

Today we added three new tools to enhance our support offerings and ideas management!

Support Forums

It’s been a long time coming, but we finally got around to adding moderated support forums. If you have questions and you are looking for help either from our support staff, or the community, the forums are now available.

https://www.voiptools.com/community/

 

Idea Management

Also, we have added a place for you to submit product ideas and feature requests. Here you can add your ideas for new products, or enhancements to our existing commercial products. You can vote on other peoples ideas too. Those ideas with the most votes will be carefully considered.

https://www.voiptools.com/ideas/

 

Lost License Recovery

If you have lost your license keys, we can easily email your keys — IF — the keys were purchased using our new website.  For older keys purchased on our previous website you will need to contact us.

https://www.voiptools.com/lost-license/

 

 

We have a customer who has over 100 queues. They discovered managing large numbers of agents and queues to be a daunting tasks. We built this custom add-on to simplify their task.

With this add-on, the user can select multiple (or all) queues, then select the agents they want to assign to the queues, and instantly assign the agents to the queues. They can also assign the order of the agents in the queues. It’s just as easy to remove agents from the queues too.

Do you have the same challenge? We can help.

Get the Best Solution for your Business

Whether through one of our commercial products, or a custom solution built to meet your specific needs, we can help you get the most out of your 3CX investment. Call us today!

Contact Us