Sample library for Digital Contact Center Platform
Important
Announcing Dynamics 365 Contact Center—a cloud contact center powered by Microsoft Copilot. Learn more
To help partners and customers get started with Digital Contact Center Platform, Microsoft provides a library of sample components in GitHub. It's a collection of sample code, components (solutions), and documents that can help Digital Contact Center projects with various tasks. These tasks include customization, configuration, and operation of the platform. The goal of the library is to offer reusable and easy-to-follow resources for Digital Contact Center developers and users.
Areas
We want to empower customers and partners to create and deploy solutions in a fast and easy way, using our cutting-edge technologies. To achieve this goal, we have created a set of deliverables that cover the following main areas:
Microsoft Copilot Studio
Learn how to create and manage chatbots that can handle natural language queries and provide personalized responses. Start here.
Unified Routing
Learn how to route customer interactions across different channels and agents based on skills, availability, and priority. Start here.
Omnichannel
Learn how to provide a seamless and consistent customer experience across multiple channels such as voice, chat, email, SMS, and social media. Start here.
AI
Learn how to leverage artificial intelligence to enhance customer service. Start here.
The library is open source and hosted on GitHub at Component library in GitHub. There, you find the documentation, examples, and source code. You can also contribute to the project by reporting issues, suggesting features, or submitting pull requests.
Important
Sample codes, components (solutions), and documents created by the community aren't supported by Microsoft. If you have questions or issues with community tools, contact the publisher of them.
Library content
The following sections outline the content that we share in the Component library in GitHub. Each section includes a link to the relevant file in GitHub.
Microsoft Copilot Studio
DTMF aggregation by Bot Framework Skills
This sample serves to explain how to use Bot Framework Composer skill to add DTMF aggregation to Copilot Studio. For DTMF aggregation on chatbots, Bot Framework Skills are required to develop semi-pro-code solutions with the Bot Framework Composer and the Bot Framework Telephony Package.
Multilingual voice bot in Microsoft Copilot Studio
This sample solution contains a Copilot Studio bot that was implemented based on the guidance here: Set up a multilingual bot in Microsoft Copilot Studio
Play Audio file in Copilot Studio voice bot
This sample shows how to play audio files saved in secure data storage. With Bot Framework Composer and Azure Blob Storage, we can secure a custom audio clip and play it in a custom copilot.
Unified Routing
Channel-based presence
A core feature of this scenario is the flexibility of channel presence management for agents. Depending on the volume and urgency of different types of customer inquiries, agents can adjust the flow of incoming channel requests to suit their preferences and availability. For instance, an agent can pause the incoming calls channel if they want to focus on chats or cases, or the other way around. This way, agents can optimize their productivity and customer satisfaction.
Learn more at Channel Based Presence.
This sample approach is to use a channel-centric solution by setting up a separate Advanced Queue for each relevant channel. This allows for the use of the native Assignment MethodAssignment Ruleset functionality and reduces latency between Agent Channel selection and assignments. See also Overview of unified routing.
Set up agent capacity for custom entities
In Dynamics 365 Customer Service, you can configure capacity-based routing for entities to supplement the case (incident) entity. Learn more at Set up agent capacity for custom entities, where we provide two approaches one no-code and one low-code to perform the before mentioned actions.
Omnichannel
-
To identify a customer in the contact center, you might have to apply custom search criteria, based on the information that the customer provides. This approach will help you quickly and efficiently find the customer's profile and access their records. In OOB, you can search by name, phone number, and email address. However, you might want to search by account number or other relevant data. This article explains how to customize the search criteria.
Learn more at Identify customers automatically.
JavaScript Sample Context parsing
Context variables are data that provide information about the conversation before it starts, such as the channel, the customer profile, and the custom settings.
You can use context variables to create routing rules that assign conversations to different queues based on these data. You can also use context variables in tools that help agents work more efficiently, such as macros and scripts.
Additionally, you might want to access context variables from custom JavaScript code in web resources.
The Microsoft.Apm.getFocusedSession()
API is a useful method for accessing the session object of the session that is in focus, this is part of the app profile manager JavaScript API Reference that includes methods and properties to manage tabs and sessions in Customer Service workspace.
The following sample one retrieves the context variable customerName in the onLoad event:
function parseContextVariables(executionContext) { var formContext = executionContext.getFormContext(); Microsoft.Apm.getFocusedSession().getContext().then((context) => { var customerName = context.parameters.customerName; alert(customerName); } ); }
Another useful method is Microsoft.Omnichannel.getConversationId(), this function can be called to fetch the unique GUID of the current ongoing conversation in a session. It Returns a promise resolved with currently ongoing conversation ID. The identifier can be used to fetch the conversation record programmatically.
Microsoft.Omnichannel.getConversationId();
LiveChat Widget customization samples
LCW customization samples is a collection of Ready-to-use JavaScript code examples for customizing the Omnichannel LiveChat Widget.
The collection of JavaScript code snippets can be copied and applied to modify the Omnichannel LiveChat Widget.
AgentScript and Macro samples
Agent scripts play a pivotal role in reducing the risk of human errors throughout the resolution process. They serve as guiding frameworks, directing agents on the necessary actions to take during customer interactions. This alignment with established business processes empowers agents to deliver swift, standardized resolutions, consequently reducing average handling time and elevating customer satisfaction.
The different types of agent scripts include text-based guidance and macros. Macros automate repetitive tasks by reducing complex actions to a single click. By integrating these elements, teams can streamline workflows and enhance overall operational efficiency.
Download a ready-to-use Power Platform solution at https://github.com/microsoft/Dynamics-365-FastTrack-Implementation-Assets/blob/master/Customer%20Service/ComponentLibrary/Omnichannel/CommonAgentScriptsAndMacros/ that includes sample actions. The associated PDF file in the same folder contains a step-by-step guide on how to create a macro. This guide is part of the Customer Service Workspace in a Day hands-on lab with detailed instructions.
AI
-
Emails have unstructured content. Routing rules based on subject/body text aren't effective.
Human intervention is required for proper categorization. The case would need to be re-assigned to the right owner. The customer might want to implement a custom AI model before engaging Unified Routing.
This content describes a proposal approach by using ARC rules, and AI Builder.
Summarizing Dynamics 365 KB Articles with ChatGPT
The current integration of Copilot Studio with knowledge bases only offers article links without providing a summary that can be used in chat conversations.
By integrating ChatGPT with the existing Copilot Studio platform, the gap is bridged. This way, knowledge articles are summarized directly within the chat conversation.