Explore the DaVinci Toolkit and gain valuable insights into experience orchestration through decoupled services. This scalable, resilient, and extensible platform effectively separates event producers and consumers, enabling a seamless flow of information. Dive into the world of event-driven architecture, where you’ll learn how to optimize event production, detection, consumption, and reaction. This innovative approach significantly enhances customer care by triggering timely actions based on CRM events, making it ideal for real-time data processing. When selecting a platform, prioritize scalability and resilience. Harness the benefits of decoupled services to improve application efficiency and responsiveness with the DaVinci Toolkit.
Today, I am going to focus on event-driven architecture and the value of decoupled services in creating a scalable, resilient, extensible, and secure solution for you and your agents. Let’s head to Creator Studio, where I’ll open my profile.
This is about as simple a profile as you can have in DaVinci. It starts with the DaVinci agent configuration, which controls the size of the toolbar and manages global presence. The call simulator acts as my phone system, while global presence control manages and coordinates availability or work mode across channels.
As I log in, the DaVinci profile downloads all of these components into my browser session. The agent configuration tool includes my global presence settings. Once the simulator loads, it sets itself to “not ready” and sends a message through the framework, which global presence picks up, reflecting that I am not ready.
These two components can independently communicate by sending messages about their state. Each app picks up only the messages it’s interested in and acts according to its capabilities. For instance, global presence is only interested in state messages; when it receives the “not ready” message, it displays that status.
Another feature is live presence, which is part of the toolbar. Live presence detects that Sally Newman is logged in as a Salesforce user, and you can see that message reflected in global presence and live presence from the agent configuration tool.
When I set myself to “ready,” it sends a message out through the toolbar to indicate readiness. The simulator picks this up and transitions to “ready,” generating a phone call that I can see here. The simulator displays all the phone information privately, sending an interaction message that indicates I’m on a call and what information I’m responsible for. Global presence, which is the only interested app in this case, picks up the message and reflects that I’m on an interaction.
When the call ends, the simulator sends a message indicating that the interaction is over and the new work state is “ACW” (after-call work). Global presence reflects this change. When I log out through global presence, it sends a message via the toolbar, which the simulator picks up, logging me out.
This configuration represents how everything starts in the cloud as independent apps that get downloaded into an agent toolbar. The agent configuration, global presence, and the DaVinci simulator are all independent but embedded in the toolbar.
Now, how does this account for scalability? Each instance runs individually on desktops, with no backend services in the cloud. This means you can scale this solution to 10, 100, 1,000, or even 10,000 users, each independently running this toolbar on their desktops. Each agent maintains their private connection, exposing nothing to the internet and only sharing information with the apps they control. This design ensures both security and scalability.
How can I extend this solution? I have Salesforce, but I’m currently in a “not ready” state because I logged into the DaVinci premise gateway. When I logged in, it also logged me into the simulator, which returns a message indicating that I’m logged in but “not ready.” This message is sent to the phone channel and shows up as a “not ready” status in global presence.
When I change my status in global presence to “ready,” it sends a message to the toolbar that tells interested channels to go “ready.” I receive a phone call, and in an instant, all those messages bounce back and forth. The phone call arrives with its private information, and the interaction packet indicates I’m engaged. Global presence picks this up and shows that we’re on an interaction, while the Salesforce component triggers a screen pop for Andy Young.
I should have received the screen pop because there was a multi-match, which I have to click on to execute. Now I have the screen pop with information from Salesforce about Andy Young, and I can add my notes and details. All this information—the notes, caller information, and activity data—is private to Salesforce. The phone channel and global presence are unaware of these details.
When I end the interaction, the phone system sends a message indicating that the call has ended. This triggers the activity to be saved and updates global presence to show that I am in ACW. If I quickly finish this task, I will be done with the call, and as you can see, I’ve created that activity in Salesforce, pulling in all the information Salesforce was monitoring through the interaction package.
This demonstrates how we can create complex, robust, and sophisticated solutions that are secure on the DaVinci platform, which is both resilient and extensible. Each CRM app remains independent while maintaining its connection to Salesforce. Global presence is independent, the phone channel operates independently, and they communicate by sending messages back and forth without exposing anything to the internet.
The system is scalable because each agent maintains their own connection, keeping everything within their browser session and user experience. If an issue arises on one agent’s desktop, it won’t affect the others in your contact center, creating a much more resilient and robust solution.
Lastly, we can add other channels such as SMS, chat, and email. These can all participate in the global messaging system. For example, if I receive an SMS, it will indicate an ongoing interaction, which is communicated to global presence. If I’m still available for phone calls, I can handle those as well, ensuring seamless multitasking.
This example illustrates omni-channel control, responding to various inputs from both Salesforce and global presence, and maintaining the flow of messages. This is how DaVinci builds a seamless solution from simple components, allowing you to construct your solution block by block, app by app.
