QueueMetrics Live can now connect to a Microsoft Teams instance, read telephony events - both for Teams Telephony and Direct Dial - and produce an accurate representation of all traffic. You can see everything that happened at the telephony level, including inbound, outbound and all Teams-to-Teams calls.

After a long beta period, and some million calls processed, the integration is now ready for general availability. This is the ❤️ story of how an initial idea evolved into an useful product - and as all good love stories, it had its twists and detours along the way.

How it all started

It was the beginning of 2021. A long-time QueueMetrics user had transitioned to Microsoft Teams during the pandemic, and was considering to move all of their telephony services to it. They ran a few smallish support queues, and wanted to see what their options were in terms of keeping QueueMetrics to get the same level of detail and workflow they were used to.

In their initial experience, they found the Teams queue modules to be simpler than what they were used to on an Asterisk PBX, but still good enough for handling their workload, and in the end they were quite happy with it. Nothing fancy, but it got the job done, and native speech recognition was neat. The real issue - and potential show-stopper - was reporting:

  • The Admin Center offered a basic reporting overview of PSTN and Direct Routing, but it seemed to be targeted at billing and audio quality control, and was not as an operating tool to manage a pool of agents
  • There were some Auto Attendant and Call Queue reports, but they only offered a very high-level overview of what happened, and sometimes they appeared to be incorrect - different reports of the same entities appeared to produce inconsistent reports. No way of drilling down.
  • There were a number of third-party Contact Centre modules, but they were basically replacing the IVR/queues that were included and worked well enough. The ones they found were boutique products - expensive, no public pricing, complex integration, and definitely overkill for SMBs who were not pure-play contact centres.
  • Reports on calls were heavily delayed in time, and did not even include lost calls! (boo!)

So they got in touch with us, to see if it was possible to somehow load the data produced by Teams into QueueMetrics.

QueueMetrics has a simple model based on agent session and call events, so they thought it could be possible to inject events as they happened. This also means that any result can be “drilled down” into a set of calls and agent activities, making sure that any reported data always has a clear reason why.

QueueMetrics then produces a large set of statistics to evaluate callers and agents, and those metrics are built to be an effective management tool for contact centres. Plus, we have a large user base of thousands of sites worldwide, so our solution is well tested both in terms of computations and of actual field usability.

It wasn’t love at first sight

Teams telephony data is accessible through the Graph API, so we agreed that it could be possible, in principle, to build something. We were in for some surprises, some of them bad, some quite good.

The bad ones first:

  • Telephony information is not real-time. Call information is delayed significantly, usually 15-20 minutes, and is only generated on call completion. So you do not get to know when a call is active, unless you are its originator.
  • Telephony information can be updated at any time after it was emitted. This means that the details of a call, e.g. the time it was terminated, can be changed after the call was sent (and you already processed it). This happens a lot, for no apparent reason, and and you may get the final version of a call hours after it was first sent to you. And nobody tells you whether the version you received is the final one.
  • Call information is very hard to make sense of. While the documentation is very accurate on details, it is hard to understand the big picture - the hows and whys you get some data pattern. For example, why a session has no duration, or why it is repeated multiple times. Even worse, this seems to change over time, as Microsoft realeases updates, and nothing about that is actually documented. Sometimes multiple attendants will appear as only one, and sometimes they won’t. You have to handle a huge amount of ad-hoc cases.

Sounds discouraging, right? and frankly it was. A quick look on UserVoice or StackOverflow will confirm that we were not alone.

Our solution to the call information issue above was to run a beta program for about one year, just to get a large enough set of calls to be able to translate all common cases. It was supposed to end in April 2022, but guess what, in April there was a release that broke a number of previous conventions, and we had to run patching. Luckily for us, we designed for ease of reworking, so it just took a few days, but it felt like running against the grain.

And now for the good parts - this is a love story, after all!

  • While we started with the goal of gathering data for queues and auto-attendants, and maybe some outboud calls (because that’s our bread and butter in contact-centre environments), we quickly discovered that we got a trace for all calls. Inbound, outbound, on queues, group calls - even Teams-to-Teams, and even Teams calls with other companies! You can definitely get a complete view of what somebody has been doing, whether they work as a call center agent or just use Teams as their go-to “telephone”.
  • Most of the boring configuration can be obtained straight from the Graph API, so there is not much you need to do to get a system up and running. Names, codes, groups…. they just work.
  • Though the API does not expose them directly, we were able to obtain wait times, lost calls and lost agent attempts, so you can get a pretty decent picture of any incoming queue, and can spot call handling issues quickly. This, by itself, makes the solution good enough to be used in real-life.
  • Even when using external third-party systems to run (non standard) queues, we usually get a pretty accurate picture of what happened
  • Voicemails are tracked (ok, maybe you don’t care, but some systems still use them extensively).
  • Direct Routing and native Teams telephony work in a very similar way, so we were able to include them both.
  • During the beta program, we got in touch with a number of telephony professionals who helped us, encoraged us and started depending on the solution as a basis for their daily monitoring. Some were handling tens of calls per day, and some were handing tens of thousands! Turns out that there are some huge Teams deployment out there (universities, hospitals, travel agencies…), so the scalability that we designed into QueueMetrics was put to good use.
  • In the end, we got a definite feeling that there is a market need for a set of X-ray specs that let you - at last!- dive into what is happening in your Teams telephony deployment. No more flying blind!

Where are we now

QueueMetrics Live is generally available for Microsoft Teams by integrating through the Graph API. Reports work and let you see Queues, Attendants, Conferences, Direct calls, Outbound calls and Voicemails. Wallboards sort of work, where daily counters are correct but delayed. Real-time and agent pages don’t currently work (for now - see below). Full details of what we have now can be found at queuemetrics.com/teams.jsp

We are able to offer a simple trial model through our SaaS offering, so if you currently run Teams telephony (or a customer of yours does), you can easily run a test and see if it is worth it. We believe in 100% satisfied customers!

The pricing model is similar to QueueMetrics Live, so you pay a fixed montly fee for each active extension. As the set of features offered is more limited, we found it fair to start with a retail price that is only half of what it is for QueueMetrics Live - so chf 4 per agent per month (~USD $4) instead of the usual CHF 8 per agent per month.

And, of course, we are looking for integrators looking to offer such a solution to their customers.

But… no real-time, ever?

We are confident that Teams telephony is here to stay (and grow), and so we expect the shortcomings above to be fixed - sooner or later.

There are currently some ways to keep track of an agent’s state in Graph, and this could be enough to get us started with real-time analytics. It would still be kind of incomplete, but it would be a first step. And as the Graph API becomes more powerful, more data will be included transparently, and so we expect to get there, somehow.

The course of true love never did run smooth

…but in the end, all love stories end with an happily ever after. So, if you are still with us now, and we managed to pique your curiosity - be our guest, and we will walk you through a complimentary, no-strings-attached evaluation.

Join us at queuemetrics.com/teams.jsp.

And - once again - a huge THANK YOU to all who helped during the beta. You made a difference - and you know who you are.

e706e0937

keyboard_arrow_left Back