Microsoft has slowly been expanding the business capabilities of its Azure platform, adding services and application programming interfaces that can be used to provide a set of message-driven workflows. Much of this development builds on its Service Bus backbone, and the tooling used to run both Azure Functions and the Azure App Service.
SEE: Get an in-depth understanding of Microsoft Azure online with this training bundle from TechRepublic Academy.
Building a message-based, event-driven architecture on Azure makes a lot of sense. It’s an effective and portable way of building distributed applications that can scale both up and out as needed.
One growing set of APIs are Azure’s Communication Services, which bridge distributed computing and voice communications, linking code to public telephone networks and other communication services, like Teams. It’s a powerful tool, with support for voice and video calls — both over the internet and through the telephone network — as well as text via chat, SMS and email.
- Automating Azure Communication Services
- Adding automation to your code
- Building your own custom call center
Automating Azure Communication Services
The Azure Communication Service APIs make it easy to plug these technologies into your code, giving apps direct access to your customers and users. What’s perhaps most interesting about these tools is they let you build your own custom call center applications, adding multichannel communications to customer service and sales tools or as part of a support platform.
Where things get interesting is when you add support for call automation, making voice a direct part of your workflows. Instead of integrating your applications into a digital call center, you’re able to build a dedicated tool to route and assign telephony and web calls appropriately.
With this dedicated tool, you’re not limited to pre-call routing; your code can handle moving calls from one endpoint to another — for example, when escalating a customer support issue. There’s also support for click-to-call applications, either through the web or through an app, enabling quick video and voice connections from user apps to support desks.
In addition, developing code for the automation APIs is simple enough. As well as REST APIs, you’re able to use C# or Java libraries to add functionality to new and existing applications.
SEE: Develop highly marketable coding skills with this training bundle from TechRepublic Academy.
These are integrated with Azure’s event infrastructure, which lets you build business logic around a call. This allows you to build tooling to manage and triage call queues, so if a call from a valued customer is passed into a queue it can be prioritized or routed to a specialist operator.
Adding automation to your code
The C# and Java SDKs are probably the most likely ways to build enterprise communications workflows. They both offer the same features, from setting up calls to working with existing calls and managing recording a call.
There’s one important caveat: Once a call has been answered you can only move it between Azure Communication Services endpoints, as Microsoft has yet to add the ability to redirect calls to other phone numbers.
Calls are managed using asynchronous APIs, so you can trigger a welcome message and put a call in a queue for an agent at the same time. Your code sits between the caller and the voice service they’re using, only responding when new events are raised.
Using asynchronous methods means you’re not tying up resources waiting for responses, ensuring users get the best response time while keeping compute costs to a minimum. You can even use this approach to direct an incoming call to multiple endpoints, so any waiting agent can pick it up. Alternatively, calls can be redirected if not answered in sufficient time, without the caller knowing the call has been transferred.
Once an action has completed, it raises an event your code needs to handle. Events are delivered using Azure’s Event Grid or via Webhooks, so you can use standard libraries and techniques to work with them.
Incoming call notifications are delivered by Event grid, so you can use tools like Azure Functions to respond to a call and trigger a workflow. Once a call has been set up any further events are delivered by Webhooks, meaning you will need to keep track of the context of a call in your code. Callback events are simple enough to use, with the tools built into .NET and Java.
Building your own custom call center
You’ll find the service supports most of the features you should expect to find in a PABX or a call center, ensuring user familiarity and the ability to integrate it with both existing workflows and tools. New applications can now take advantage of recently released Azure Communications Service’s UI components, which simplify integrating calls into your code and into services like Teams.
Automating the call flow in and out of your applications can significantly reduce load on your staff. For example, there are tools to decode dual-tone multi-frequency tones, allowing you to build a custom interactive voice response service.
You could perhaps use the recording tools to take a voice message, then pass the recording to Azure Cognitive Services speech recognition tools, so an agent is prebriefed and ready to engage before they start to call. Similarly, any identifying information could be handed over to Dynamics 365, for direct access to customer relationship management content.
This perhaps is the biggest advantage of using Azure Communications Services, its deep integration with the rest of the Azure platform and the other Microsoft clouds. By working with your own code and Microsoft’s services, and even with the Power Platform low-code tools, you’re able to build much more complex services more quickly.
SEE: Discover how using low-code tooling can ease your IT team’s workload.
There’s another advantage to using these tools to build your own call center environment. By using workflow to route calls internally over Azure, you’re able to provide a single external number for your services and hide all the numbers given to operators and other staff, using the same number for outgoing calls from your customer service platforms. Providing privacy for staff is important, and using this technique helps maintain it while still giving customers access to your support platform.
Microsoft continues to expand its communications APIs, providing tools for businesses of all sizes to use cloud-hosted telephony. With the ability to integrate features like this with Teams, the resulting applications fit neatly into existing business processes without significantly changing the way we work.
Read next: Improvements in the data store for Microsoft Dataverse aim to help businesses build on their data.