I heard a lot of good things about Amazon Connect recently so I decided to try it out. Amazon connect is a cloud based contact center that enables you to easily set up a contact center. I wanted to see if I could use it to conjunction with a model-driven app such as Dynamics 365. I must admit it was a quick process to get a contact center up and running. I signed up for the the free AWS account and from the AWS Console I created an Amazon Connect instance. Once created the Amazon connect portal guides you through the steps to create to your contact center.
Although Amazon Connect offers omni-channel capabilities, for this exercise, I am focusing solely on voice calls. With a couple of clicks I was able to claim phone numbers from two different countries to use for inbound and outbound calls.
Amazon Connect features an easy-to-use designer for creating customer interaction workflows, known as flows. Each instance comes with some out of the box flows you can modify for your own use or if you prefer create them from scratch. Flows are used to play prompts, get customer input and routes calls to agents based on availability.
I found the designer easy to use and intuitive. Once you have created your flow you can then assign it your phone numbers. Inbound calls to your phone number will trigger your flow.
Amazon Connect’s Contact Control Panel (CCP) is a web-based interface that enables your contact center agents to accept and make calls. When a call is routed to an agent, it appears on the CCP. Agents can also manage their availability through the CCP.
There is library on github called amazon connect streams that allows you to embed the CCP in a custom web app. It has some some sample code you can adapt to your own requirements. In your html code you will needs to reference the streams Javascript library and set the url of your contact instance and it’s region.
<script type="text/javascript" src="connect-streams-min.js"></script>
var instanceURL = "https://joegilldemo.my.connect.aws/ccp-v2/";
To get this to work in Dataverse I created a solution with connect-stream-min.js and a html file to open the CCP. I then added a CCP button in the toolbar to open the CCP html file in the side pane.
function openCCP() {
Xrm.App.sidePanes.createPane({
title: "Amazon Connect",
paneId: "CCP",
canClose: false
}).then((pane) => {
pane.navigate({
pageType: "webresource",
webresourceName: "jg_ccp"
});
});
}
Any inbound calls to my account pop up in the CCP side panel within my app. This allows you to answer or make calls without leaving your application. Although I have not tested it extensively, it appears to be very promising. I plan to do another post on how to pass parameters with the inbound calls and open a form within your model-driven app.