Writing Your First Avaya Aura Collaboration Environment App

This is my fourth blog article about the Avaya Aura Collaboration Environment. My previous articles were fairly high level in nature and explained what you can do with Collaboration Environment, but didn’t go into a lot of detail about how to make the magic work. In this article, I am going to take you much deeper and introduce you to the process of developing a Collaboration Environment application.

While knowing how to write Java code is certainly helpful in understanding the nitty-gritty aspects of creating Collaboration Environment applications, I will do my best to hold your hand through those parts. Don’t get scared away just yet.

Are you ready? Great, let’s get started.

A word to the wise–you will gain a deeper understanding of this material if you first read through these related articles:

The Avaya Collaboration Environment

Avaya Call Intercept Services

An Introduction to Avaya Collaboration Environment 3.0

First, Collaboration Environment applications are written in Java. Period. If you are a C# programmer, you need to find yourself a good book on Java and get busy learning it. Of course, since Java is the greatest language ever written, this requirement should not be a problem for real programmers.

That last comment was meant to be a joke…mostly.

The development environment for Collaboration Environment applications consists of Eclipse For Java EE Developers and Maven. Both are available as free downloads and are fairly simple to install. Grab the latest tested releases and you will be fine.

Note that Avaya SDK requires that you set a number of Environment Variables for Eclipse and Maven. Please refer to the installation manuals or videos for details on which ones need to be created.

Eclipse is the IDE (Integrated Development Environment) in which you will write all your Java code. For nearly every Java programmer that I know, this should not come as a great surprise. Eclipse has been around for a long time and is a very popular development tool. I started using it over ten years ago and it’s still my IDE of choice.

Maven is used to package and build your Collaboration Environment application. I will admit that this is my first experience with Maven, but I found it easy enough to figure out and far less complicated than old-fashioned Make files. Better yet, there is a plug-in for Eclipse that hides nearly all the Maven plumbing and allows you to concentrate on writing code. Maven does the heavy lifting of building the deliverable that gets loaded onto a Collaboration Environment server.

Of course, since you are writing Java code, you must install a Java Software Development Kit (SDK). I use the glassfish4 release, but that’s certainly not a requirement.

You also need to obtain the Collaboration Environment SDK. This can be downloaded from the Avaya DevConnect site. You will also find a number of excellent videos up there that walk you through the installation and configuration process. I found them to be invaluable to my success.

Avaya created a Maven archetype that makes it extremely easy to write your applications. With just a few key strokes and mouse clicks, I was able to create the skeleton of a Call Intercept application that looks something like this.

public class MyCallListener extends CallListenerAbstract {

private static Logger logger = Logger.getLogger(MyCallListener.class);

public MyCallListener()



public final void callIntercepted(final Call call)


logger.fine(“Entered callIntercepted.”);




If you are not a Java programmer (and I applaud the uninitiated that are still reading this article), please allow me to explain what you are looking at.

MyCallListener is the container for the code that processes an incoming or outgoing call. This means that it will be executed on every single call that comes in on a trunk or is sent out through a trunk. Of most importance is the method callIntercepted. This is where you put the code that tells Collaboration Environment what to do with a call. By default, callIntercepted allows a call to proceed uninhibited.

Of course, allowing a call to proceed as if nothing happened isn’t all that exciting. To remedy that, you add code to callIntercepted that tells Collaboration Environment to do interesting things with the call.

Those things might include stopping it dead in its tracks (e.g. block list). It might also include sending it to a destination different than the number the caller dialed (e.g. Find-Me-Follow-Me). Even more exciting, you may want to create a conference from this call and invite other people to join in. We can take it even further by having this call launch emails, text messages, video conferences, or anything else your heart might desire (or your business requires).

Once you have latched onto an in-progress call, Collaboration Environment allows you to write an application that manipulates it in a million different ways.

Key to this manipulation is the call object. If you look at the skeleton code you will see the statement call.allow(). This tells Collaboration Environment to send the call on its merry way. The call object allows you to do so much more than that, though.

Here are a few examples:

call.allow() Send the call on to the next hop
call.divert Send the call to a new destination
call.drop Release the call
call.getCalledParty() Get information about the called party
call.isCallingParty() Get information about the calling party
call.initiate() Create a new outgoing call

Using the above, redirecting an incoming call to an operator could be as simple as this:


Adding the text “Important:” to the caller’s name display could be accomplished with the following lines of code:

Participant callingParty = call.getCallingParty();

String newInfo = “Important: ” + callingParty.getDisplayName();

I could go on and on, but the point is that once you have the call, what occurs next is up to you. You can dip into a database, call out to external service via web services, change the caller’s displayed number, invoke another Collaboration Environment application, or anything else you code into your application. You are only limited by your imagination.

It’s important to know that even though the application is processing a SIP call, there is no need for the programmer to know the first thing about SIP. The SIP URI, headers, header parameters, and message body are all hidden from the application. That’s not to say that you can’t get to them if you really want to, but for most applications, that’s not required. Telling a call to drop can be accomplished without knowing that this will generate an 6xx response or a BYE message.

Now, I wasn’t quite accurate when I said “every single call that comes in on a trunk or is sent out through a trunk.” Collaboration Environment allows you to define exactly which calls you want your application to process. It does this by assigning endpoints and telephone numbers to an application. For instance, you might want to assign everyone in the sales group to one Collaboration Environment application and everyone in accounts receivable to a different Collaboration Environment application. You might want your Collaboration Environment application to only run on the behalf of your contact center agents. You get to decide all that when you install and configure the application.

In addition to simply manipulating telephone calls, Collaboration Environment has connectors to email, SMS text, and video systems. It also provides a media interface that allows you to play prompts and collect responses.

Writing an application that intercepts an incoming call, plays a message to the caller, collects his or her touch-tone responses, deflects the call to a new destination, and sends a text message back to the caller is straightforward and simple.

Building the Application

Once you’ve figure out what you want your application to do, you must invoke Maven to build and create the deliverable. The deliverable is in the form of an svar (Structural VAR) file that is then loaded onto the Collaboration Environment server. The loading and subsequent configuration is done using the Avaya Aura System Manager.

Once an application is loaded and users have been assigned to it, it’s ready to run. It’s that simple.

One more thing. Make note of the logger variable in the skeleton code. This allows your application to write to a system console at execution time — think System.out.println(). This can be invaluable during the development phase.

That’s All For Now

I was pleasantly surprised to see how easy the entire process was. The longest part was setting up Eclipse, Maven, and the Java SDK, but I would have to do that for any Java development project. Once everything was installed and configured, using the Collaboration Environment SDK is a piece of cake. It’s extremely well documented with an organized and well-structured Javadoc. Additionally, Maven greatly simplifies the application development process. It’s almost as if the code writes itself.

I intend to continue documenting my findings as I dig deeper into the SDK and write more complicated applications. I am just starting to play with the data APIs and I have yet to do anything with the media interface.

So much to explore and so little time…

Related Articles:

How to Deliver the Digital Healthcare Patient Experience

Technology and the Internet of Things hold great promise to improve our health and well-being. Internet-connected infusion pumps, imaging machines, blood-glucose sensors, and myriad more devices, can automatically share valuable data to a person’s electronic health record. We can expect to see network-connected healthcare aides playing an ever-greater role in delivering healthcare. Smart beds that automatically detect if they’re occupied—or if a patient has gone walkabout—and can track the quality of the patient’s sleep. Wearables and implants that measure a patient’s vital statistics, continuously log data and report, in real-time, any abnormalities to the appropriate clinical staff.

We’re not talking some far distant future here—a report last year from IDC indicated that enterprise mobility will have penetrated over 80% of MEA healthcare organizations by 2017, with over a third of organizations having already deployed corporate smart devices. Hospitals in the region are already increasingly looking to technology solutions to proactively advance patient care and improve outcomes.

Countries in the region, especially in the GCC, are making transformation of healthcare services a key priority as they look to improve the well-being of their citizens. We are seeing major initiatives to leverage technology to improve healthcare delivery in the region, such as in the United Arab Emirates, which has included providing a world-class healthcare system in its UAE Vision 2021 strategy. Likewise, the Kingdom of Saudi Arabia has made improving healthcare delivery a key plank of its Vision 2030.

Healthcare organizations here in my region also understand that technology is a tool for driving efficiency and streamlining operations as well as improving patient outcomes. Dr. Sulaiman Habib Medical Group (HMG), one of the largest providers of comprehensive healthcare services in the MENA region, recently unveiled its Al Suwaidi Hospital in Saudi Arabia, a digital medical facility that is the first of its kind in the Middle East.

A cloud-based technology infrastructure enables the hospital to be a fully-paperless operation, and multimedia connectivity between diverse departments ensures that the time taken for reporting and maintaining records is greatly reduced. This enables physicians to focus on more patients and seamlessly transfer cases to other departments, laboratories, or the billing section. It also allows the hospital to maintain digital records, which are useful in generating patient medical histories, as well as meet regulatory requirements. Together with Avaya, HMG is delivering a fully digital patient experience, with real-time collaboration for physicians, laboratories, and other components of the healthcare delivery process.

While HMG can rightly claim to be a global leader in healthcare technology, we are seeing other healthcare providers increasingly adopting technology solutions here. Networked devices are prevalent in hospitals already, with a growing number of nurses and doctors having transitioned away from clipboards and paper to Wi-Fi-enabled communications devices and tablet computers.

Technology in healthcare does bring unique challenges. The highest standards must be met for patient security and safety at all times, with patients needing to have absolute confidence that their data is safe. Therefore, creating applications that can enhance the patient experience and improve the healthcare operator’s efficiency can be more challenging than in other industries.

Adding to those challenges: healthcare operators’ patients are also other companies’ customers and employees—and have correspondingly high expectations of the experience they are looking to receive. People today are well aware of what good technology experiences look like and feel like—so why wouldn’t they expect to receive those good experiences from their healthcare provider.

Many of us will be all too familiar with this scenario: you have to attend a hospital’s emergency room for a medical crisis. In a high-stress time you will likely have to answer questions about medical history, insurance details, and so on before you can be seen by an attending care practitioner. That practitioner will then refer you to a physician or other medical staff member—at which point you will likely have to give your details again!

While forward-thinking organizations like HMG are addressing these challenges, other healthcare organizations need to enter the digital era. Companies today don’t want to risk losing customers as a result of a bad experience—and healthcare providers can’t afford to think differently.

The reality is that traditional business communications have failed to keep pace with consumer-focused technological devices. The simplicity, built-in intelligence, and sophistication of today’s devices have taught consumers that it’s not difficult to have satisfying, tailored experiences—every time. If healthcare providers want to improve our well-being, they need to give us the experiences we want.

For more information, please visit Avaya.com or e-mail me at esusic@avaya.com.

Winning the CX with Apps, Integrated Data Views, Custom Agent Desktops

An estimated $6 trillion in global revenue is up for grabs due to dissatisfied customers constantly switching providers, seeking a better customer experience—CX. From finance to retail to hospitality, it seems virtually every industry is grappling with above-average customer churn. Why? Technology has evolved to a point where there is now an inconceivable number of ways for customers to engage with brands, creating a communications environment that many companies simply aren’t set up to handle.

Think about it: if customers aren’t connecting with a brand using one of their three personal mobile devices, they’re leveraging a myriad of other channels and connected platforms to research, communicate and engage. Consider that 150 million emails and 2.4 million Google search queries were sent last year per minute. In that same 60 seconds, almost one million customers were logging into Facebook, and almost 350,000 new tweets were being posted. Over 50,000 apps were being downloaded per minute through the Apple App Store, and over 20 million messages were being sent via communication apps like WhatsApp.

If these statistics show us anything, it’s that experience is everything. The average consumer today uses a combination of the above channels to engage with his or her favorite brands. In fact, in 2014, over 40 % of customers were already using up to seven different service channels including live chat, email, social media, SMS and traditional phone.

The Entire Organization Contributes to the CX

In this next-generation communications environment, a series of unique interaction touch points are created to form a dynamic, inimitable customer journey, as Avaya’s Bernard Gutnick discusses in his blog “Customer Journey Maps Help Strengthen Relationships.” This journey extends across an entire organization, regardless of business line or function. It transcends the limitations of time and space. Conversations continue where they last left off and are routed to whoever is best fit to help, regardless of where that expert resides within the organization. As mentioned, however, many companies aren’t set up to handle this kind of environment from an architectural standpoint. Just consider companies in industries like government, where 71% of federal IT decision makers still use old operating systems to run important applications

Communications-Enabled Applications

To create this revolutionary environment, businesses must operate on open, agile infrastructure that enables them to build any communications-enabled application organization-wide. In today’s smart, digital world, companies need the speed and flexibility to design, build and run unique applications to meet constantly changing customer needs and business requirements. This open environment supports businesses with a contextual, 360-degree view of the customer journey—a view that seamlessly extends across all teams, processes and customer touch points to deliver unparalleled brand experiences.

These apps need to be easy for IT to create, deploy and manage, and they must be agile enough to serve multiple departments to improve ROI and TCO. Driven by the right tools and strategies, every employee must be empowered to do his or her job at maximum potential each day. As we’ve mentioned time and again, gaining a 360-degree view of the customer means serving both contact center and non-contact center environments within a company. This is exactly why best-in-class companies are 30% more likely to align their entire organization around the customer to ensure consistency and contextualization.

Integrated Data Views and Custom Agent Desktops

Here’s how this next-generation communications environment specifically works:

  • A full library of customer engagement capabilities for contact centers—plus team engagement APIs to build business apps for almost any computer environment (i.e., Mac, Windows, iOS, Android and Javascript)—enables businesses to continually reinvent the communications experience, thus reimagining CX possibilities and business outcomes. This is how any expert can be made available for any customer inquiry or issue regardless of their location within the organization.
  • Companies can build their own contact center apps, or embed specific functions into their existing apps, to customize the agent desktop for any unique customer configuration. This ability to instantly innovate customer communications enables organizations to anticipate and respond to the speed of the consumer. Keep in mind that virtually anyone should be able to oversee these customizations, be it the company’s development team, system integrators, or the provider’s professional services team.
  • To know where your customers want to go, you must first know where they’ve been. With CRM information directly integrated within its interface, a web-based application empowers agents with a single, integrated browser view. This enables employees to view all data—both historical and real-time—across every fathomable interaction channel. This means an agent seeing that a customer communicated with a chatbot twice over the last two days about a billing error, for example. Agents will never have to wonder what steps were taken prior to their interaction with a customer, and consumers will never have to repeat the same information or be transferred across multiple different agents. Also keep in mind that this move to a web-based application offers contact center operators more flexibility to leverage general purpose browsers on a range of computers such as Macs, PCs and Chromebooks. This not only eliminates the need to upgrade client apps, but allows companies to customize the layout of each contact center so that information matches the requirements of each individual operation.

As technology continually evolves, businesses will have no choice but to press forward if they wish to perform at the speed of the consumer. Experience is everything, and organizations need a new way to design, deliver and manage customer engagements. With customers now using more digital channels than ever to engage with the brands they love, it’s clear that customer-based business applications have won the war.

Interested in learning more or chatting about transforming your environment? We can help enable you to compete and win the hearts and minds of your employees and customers. Contact us. We’re here to help and would love to hear from you.

A totally new way to approach customers—and a million reasons to do so

Last month, Laurent Philonenko wrote about some of the exciting work being done with the Avaya Breeze™ Platform, noting that many of our 2016 DevConnect Excellence Award winners were making the creation of Avaya Snap-ins a center point of their strategies.

There is perhaps no better proof point for this than the efforts of Engelbart Software GmbH, our 2016 DevConnect Partner of the Year.

DevConnect business development manager Bill Petty recently sat down with Dirk Engelbart, founder and owner of Engelbart Software, as part of our new DevConnect 8-and-Out podcast series, and talked about their experiences with Avaya Breeze. Avaya Breeze represents “a totally new way to approach customers,” according to Dirk.

In the interview, Dirk speaks directly to the opportunities his company is able to pursue through Avaya Breeze, with “millions of use cases” solvable at his fingertips through Avaya Breeze. His examples, including a manufacturing-related solution to enable warehouse workers to reach suppliers by mapping part numbers via SAP integration, clearly demonstrate the power of this platform.

But most impressive is his story of delivering a deal-winning proof-of-concept implementation in less than two days. This isn’t just a mockup, or some fancy slideware that shows what could be done, but rather a demonstrable, tangible example of how it is actually implemented.

We’ve been hearing this speed-to-market feedback from Avaya customers and partners alike, as we’ve been running bootcamps and training programs on Avaya Breeze and related tools like Avaya Engagement Designer. Avaya Breeze simply makes it easy and quick to create solutions that, using more traditional CTI methods, would have taken weeks to months to complete.

So grab a cup of coffee/soda/tea, and have a listen to what Dirk has to say about Avaya Breeze and why Engelbart has shifted all of their development focus towards leveraging Avaya Breeze.