Agent Desktop Deployment Options

Agent Desktop Deployment Options

Zoom CX Agent Desktop Integration Options

A very common question our customers ask is, "Can Zoom Contact Center integrate with my [insert system here]?" The answer is often not a simple "yes" or "no."

"Integrations" mean different things to different people. Here are some customer "integration" examples:

 

  • I need my human agent to live inside another application

  • I need my human agents to have screen pops and click-to-call capabilities with my CRM

  • I need my voice IVR to do a database dip into my system and provide self-service information

  • I need to handle credit card payments and integrate with my banking system

  • I need my AI chatbot to understand specific details about my business

  • When an agent talks to a customer, I want the contact center system to automatically display contextual information to help the agent

 
Each of the above items is a different approach to an integration. Understanding the business requirements is crucial to answering the question and solutioning the right Contact Center design for your business.
In reviewing the above list, which feature(s) is required for your "integration"?
In this article, we will discuss the first two items above in more detail. Other topics will be covered in future articles.

Agent Deployment Options

Zoom Workplace App

Our default Agent desktop is the standard interface built into the Zoom Workplace App, the same application you are familiar with using to join Zoom Meetings or make Zoom Phone calls. Agents with the Zoom Contact Center license will have access to the Contact Center tab (shown below), where they will handle their Zoom Contact Center engagements.

Browser Screen Pops

The Launch URL feature, built into the Zoom Workplace App, can be used to construct a dynamic web URL based on variable data which then pops into the system browser on the agent's computer. Data included in the URL screen pop can include standard variables such as the caller's phone number, but can also include custom data collected by the Flow/IVR such as case or ticket numbers.

Zoom Apps

Customers can enhance the Zoom Workplace App by leveraging the Zoom App Framework to integrate web applications into the Zoom Contact Center Agent desktop. Zoom Apps are displayed to agents on the right side of an engagement based on the administrative configuration for each queue. This allows each queue to control which Zoom App(s) is displayed to the agent.
 
The Zoom App Framework supports both public apps, such as the PCI Pal app shown below, and private apps. Private apps are generally targeted at internal use cases and are available only to the Zoom account for which the app was created. If you have the resources to build your own web (html/css/javascript) app, you can integrate it seamlessly into the Zoom Workplace App.
 
 
The Zoom Apps Javascript SDK includes support for both events and APIs, enabling your app to receive engagement updates and to poll for data. For more information, please visit Zoom Apps on the Zoom Developer site

Progressive Web App (PWA)

The web client is available to customers that prefer to have their agents log in to Zoom Contact Center using a web browser, such as Chrome. The feature sets are similiar to those available on the Zoom Workplace App.
 

CRM Integrations

If you prefer to have your agents work embedded inside of your CRM, you can leverage the ZCC CRM CTI Connectors, which support the following CRMs: Salesforce, Zendesk, ServiceNow, Hubspot, and Microsoft Dynamics 365. For customers electing to use one of these CRM integrations, agents will handle engagements inside the CRM using the embedded Zoom Contact Center integration. For these integrations, the screen pop and call logging functions are included right out of the box.
 
 
The default behavior for the integrations is to screen pop based on the Caller ID (voice/SMS channels) or email (web chat/video channels), but additional configuration can be added to screen pop based on additional data collected in the Flow, such as case/ticket number. Let's look at that configuration.
 
 
Note: The options shown on the Channel Configuration screen vary depending on the CRM and the ZCC channel used.

ZCC Smart Embed Integration

Zoom Contact Center Smart Embed (CCSE) is a flexible solution that lets developers quickly embed the Agent into their own web application using HTML iFrame configurations. Your web developer team will add additional javascript code to your web app to receive the call ringing/connected events, which can be used to trigger screen pops and/or call logging within your web application.
 
 
For more on Smart Embed, check out the developer documentation.
 

Partner Solutions

 

If you are looking for an agent solution not covered by one of the above options, additional integrations are available and provided by Zoom Innovative Solutions Vendor (ISV) partners. The ISV partner program includes solutions built for banking, credit unions, insurance, healthcare, and more.
 

Supported Features

The table below lists the channel support for each deployment option.

Deployment Options

Supported OS

Supported ZCC Channels

AI Companion

AI Expert Assist

Zoom Workplace desktop app
Windows, Mac
voice, video, sms, web chat, social messaging, email
Included in all licenses
Included with Elite and AI Expert Assist add-on license

CRM CTI Integrations

Web

voice, video, sms, web chat, social messaging

On the roadmap

On the roadmap. Will require Elite or AI Expert Assist add-on license

ZCC Smart Embed

Web

voice, video, web chat

Not Available

Not Available

Flow Events & Zoom App Marketplace Events

More sophisticated agent desktop integrations can leverage Zoom CX Flow events or Zoom App Marketplace API events (Webhooks/Websockets). With these options, the Zoom CX platform will send HTTPS requests to external API endpoints based on Zoom Contact Center events.
 
Depending on your integration requirements, you may elect to use Flow events, API events, or both.
 
You can design an integration to screen pop or log calls upon receiving these events.
Both the Flow events & Zoom App Marketplace events are available to all of the above Agent Deployment Options.

Event Type

Supported Engagements

Payload Type

ZCX Flow event Scripts

Inbound only

Custom JSON

Zoom App Marketplace events

Inbound and outbound

Fixed JSON

Flow event scripts

Flow event scripts are triggered upon specific actions happening within Zoom Contact Center. When that event is triggered, the associated event script code is executed within the context of the engagement, which means that the script has access to the engagement's variables.
 
Let's take a look at two common Flow event scripts.

 

Event Name

Event Trigger

Engagement accepted

When an agent accepts the call

Disposition saved

The agent saved a disposition and closed out the engagement

Note: A full list of event scripts are available on the support article.
 
Let's show an example of how you could use the above two events to send HTTP requests to an external system. When the external system receives these events, the data can be used to provide logging, screen pops, or other use cases. The exact capabilities provided will be determined by the capabiliies of the external system.

Example Configuration

In the Flow, we start by configuring the event scripts on the Start widget. Below we can see that the Start widget has the two event Scripts configured.

To create the event script code, you will add a new event script to the Start widget and then the code can be written directly into the flow editor as shown below.
 
Both the Engagement Accepted and the Disposition Saved events use similiar code. They are both simple Javascript code blocks that are using the built-in HTTP function to generate an outbound HTTPS POST request.
 
Engagement accepted event script code
 
In this code example, we are including the engagement ID, the caller's telephone number, the agent's email, and the name of the queue. This code will be executed when the agent answers the engagement and begins talking to the consumer. This is an example of what is likely the minimum amount of information required to generate a screen pop, or to start the logging of the new call. It's worth mentioning that if your ZCC Flow configuration is collecting data about the caller in the Flow/IVR, such as their account number, case/ticket number, etc, it is as easy as adding additional variables to the request_body variable to include additional data in this HTTP request.
 
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"] } const result = await req.post('https://api.example.com/acceptedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
 
Disposition saved event script Ccde
 
For the Disposition saved event we will reuse the code used in the previous example, with the addition of the disposition variable added in line 9. This code block will be executed when the agent selects the disposition for the call, which happens as the last action that is performed by the agent in the engagement. By sending this request, the external system can track that the agent has completed the disposition of the engagement. Like the above Engagement Accepted event, additional variables can be included as needed depending on your use case.
 
async function main () { try { let request_body = { "engagementId": var_get()["global_system.Engagement.engagementId"], "caller_number": var_get()["global_system.Engagement.ANI"], "agent_email": var_get()["global_system.Agent.email"], "queue_name": var_get()["global_system.Engagement.queue"], "disposition_name": var_get()["global_system.Engagement.disposition"] } const result = await req.post('https://api.example.com/dispositionedcall', request_body); let jsonResponseBody = result.data; log.debug("Axios jsonResponseBody=" + JSON.stringify(jsonResponseBody)); } catch (error) { log.debug("Received HTTP error " + error); }}
 
Depending on your solution, you may find that the above Flow event scripts are sufficient, or you may need some of the Zoom App Marketplace API events to help cover all required use cases of your integration. For example, you can supplement the two flow events above by subscribing to Zoom App Marketplace API events for hold/resume/mute/unmute events. These additional events would provide your application with insight into the frequency in which agents are placing calls on hold, or mute.
 
Both of the above flow event scripts and the Zoom App Marketplace Webhook/Websocket events are available to your solution.

Zoom App Marketplace API events

Like other Zoom products, Zoom CX has API Webhook/Websocket events available within the Zoom App Marketplace.
 
Events are available to track agent activity such as log in/log out, queue opt in/out, and status change events. Engagement events can track engagements through the system, including events such as engagement started, engagement answered, engagement muted/unmuted, DTMF sent, transfer iniated, ended, note added, disposition added. By tracking engagement events, you have insight into detailed engagement-level data.
 
More information on the Contact Center APIs can be found on the Zoom Developer site.

Summary

Zoom CX provides multiple agent desktop deployment options to meet your Zoom Contact Center business requirements. Common contact center functions such as screen pop and call logging are available for all deployment options. Whether you need a simple integration with your CRM, a custom web application embedded in the agent desktop, or advanced event-driven integrations using Flow Events or API Webhooks, Zoom CX has the flexibility to support your needs. By understanding your specific requirements and leveraging the appropriate tools and integrations, you can create a seamless and efficient contact center experience for your agents and customers.