Omnichannel vs Customer Service Workspace

This is a question that I’m being asked on a semi-regular basis at the moment, so I thought it would be helpful to do a writeup around things. It’s definitely not clear from the outset based on existing documentation. However, being able to speak to wonderful people such as Tricia Sinclair has been amazing in being able to figure out the differences between the two applications.

So, where to start. Well, let’s first of all understand the similarities between the two applications.

Firstly, they are both multi-session apps. To put this in context (as mentioned elsewhere previously) – traditionally Dynamics 365 applications have been ‘single session’ applications. This means that users would navigate around, open/close records, create or edit as necessary. If users wanted to have multiple records open, they’d need to have multiple tabs open, or even multiple windows (yes, I still remember the days before browsers had tab functionality!).

What multi-session means in this context is that users are able to open up multiple records, and switch between them in the same tab. Open records pop into the left-hand navigation bar, and users can easily click between them. Not only that – users are also able to open further tabs within the same record pane, to access further information. These stay open whilst users switch to other records, which is really quite helpful!

So for example, a user could open a case record, then open the contact associated to the case, as well as the account related to the case. They could then further open the knowledge base to search for articles, and so on and so forth. All of these stay open.

Both apps are also web applications – they run in a browser, rather than needing to have a specific software application installed for them (unlike Unified Service Desk).

So, where do they actually differ? Well, this was a bit difficult for me to understand in the first instance, though that turned out to be because I had both Customer Service Workspace as well as Omnichannel configured within the same environment! Turns out that this wasn’t the best approach to take to compare the two, & understand their capabilities. Easily fixed though with quickly spinning up a new trial to install one in.

So with knowing how Omnichannel works (after all, I’ve written quite extensively around it), let’s take a look at the Customer Service Workspace app:

Customer Service workspace overview
  1. The session pane lists all the sessions that you are actively working on. Select the tabs to navigate among sessions.
  2. The Home session returns you to the Customer Service Agent Dashboard view.
  3. Each session has a tab in the session panel. Select a tab to navigate to the session you want to work on.
  4. Select a case to open a new session. A single click on a case replaces your view with the case form. Select the back arrow in the upper-left corner of the form to get back to your previous view.
  5. Select the tabs to navigate to your open activities, cases, forms and views.
  6. Select the + icon to expand the menu to view a list of forms, views, and activities. Select the one you want to open in a new tab.
  7. Select the drop-down selector to filter cases in queues you can choose to work on.
  8. Select Shift + mouse click to open a new session for an activity. A single click replaces your view with the activity form. Select the back arrow in the upper-left corner of the form to go back to your previous vie

Now, without Omnichannel installed in the same environment (& obviously licensed for users), it’s not possible to have native Dynamics 365 channels such as Chat, WhatsApp, etc. Conversations will not appear for customer service agents who are using the Customer Service Workspace.

Note: If you DO have Omnichannel installed in the same environment, and users are licensed to use it, then conversations will show up within the Customer Service Workspace app for them. They’ll have notifications pop up on the screen for incoming customer sessions.

That’s not to say that it’s not possible to have channels available within Customer Service Workspace. So how do they actually come in?

Well, as it turns out, channels within Customer Service Workspace need to be third party channels. There are a plethora of 3rd party add-ons for Dynamics 365, that offer different communication capabilities. Some of these do date back a while (to before any native Microsoft capabilities).

For example, there are ISV add-ons for Customer Service that can embed a call dialler into the experience, so that customer service agents can call directly from a record. Or alternatively an add-on such as a 3rd party web chat application, that can then surface these within the Customer Service Workspace. Each of these obviously would need to be purchased, licensed & integrated appropriately with your Dynamics 365 solution as necessary too.

Now both applications also have other similar functionality, such as the Productivity Pane, Agent Scripts, Smart Assist & Knowledge Search. However there can be differences between them. For more information, I’d suggest taking a look at Tricia’s blog article that goes into depth on this.

So to summarise, Omnichannel is for the native Microsoft channels, giving customer service agents the ability to service customers using them. Licensing (currently) is with Customer Service Enterprise, and then either the Digital Chat or Digital Messaging add-on SKU’s.

Customer Service Workspace, on the other hand, allows customer service agents to be able to have a multi-session application for their work, as well as allowing communications through third-party channels. Licensing is as per the different Customer Service SKU’s, with any 3rd party add-on being licensed appropriately.

Hopefully this helps clarify the different between these two, and make them less confusing. If you have any further questions around this, please drop a comment below, and I’ll do my best to respond!

Omnichannel Admin Center (Part II)

We’ve started off looking at the new Omnichannel Admin Center in Part I. I’m going to continue going through the wonderful new app (interface?), showcasing the functionality that’s different (there’s no point in me mentioning things that are the same, right?).

So having taken a look at the general overview, let’s start delving deeper into how it really is better!

Queues

Queues are really the backbone of Omnichannel. Customer interactions come through to a queue, where agents can then pick them up & respond. Without a queue, nothing would ever happen!

In the new interface, the functionality around queues has been extended. This is what the new interface looks like overall:

You’ll note that the default queues aren’t showing up in here. I’m not quite sure why that is, but am looking into it, and will post about it when I find out the reason behind it.

Opening up a queue record gives us the following:

I’m loving the cleanliness of the new layout – it’s something I’m probably going to keep saying! The new UI is just so much nicer on the eye, in my opinion. We have the information laid out well.

New users can be added from the ‘Add Users’ button on the right top, which is a pretty standard interface (ie adding new/existing records into a subgrid on a form).

But there are several new features here that weren’t present through the old interface. The first to talk about is the ability to set Operation Hours (the block at the bottom of the screenshot above). It’s great to see the prompt that if no operating hours are set, it’ll default to 24/7 operation.

Previously, it was a slight pain (ie clicking around a lot!) to get these to be associated. Now all we need to do is click the ‘Set Operation Hours’ button at the bottom of the page, and we can then add an existing record for this, or set up a new one:

Choosing an existing record will also give us the option to modify the settings for it:

One of the really nice things about this is the Assignment Method, which shows how work items will be prioritised. It’s possible change this, as well as create a NEW assignment method:

So quite a few additional functionality options available from the initial interface, rather than needing to click around. I’m liking it!

Workstreams

Just as with Queues, the Workstreams interface has been streamlined as well. One of the important things to note is that workstreams will need to be migrated over from the old interface to the new interface (I guess that there’s something happening behind the scenes?). I’m going to cover how to do this in a future post (stay tuned!), but let’s take a look the functionality in the new interface:

Clicking into a workstream record gives us the following information:

That’s already MUCH better laid out than the previous way, I think!

So let’s see what we have here. Well firstly, we’re able to move between the channels that are associated to the workstream. This is really helpful, as it can allow us to flip quickly backwards & forwards, and see the relevant information for each channel. We’re able to directly edit each individual channel just by clicking on it (loving the ‘fly out’ side screens for this!), and change the behaviour of it:

The abilities to quickly & rapidly do all of this is just wonderful, rather than needing to have a concrete understanding of the (complex) relationship structures within the system, and clicking around.

It’s also possible to add a new channel directly from this screen, which will easily walk (admin) users through setting up a new channel as needed:

Moving down the options available, we’re able to set routing rules, as well as work classifications. I’m going to talk about this in a separate post, but there’s some really interesting new capabilities here!

Looking at the Work Distribution information, we’re also able to view more information around this, as well as modify some of the settings available. Again, this comes in as a ‘fly out’ style window:

One of the neat pieces of functionality that has been slipped in is the ‘Keep same agent for entire conversation’ option. This means that if the customer interaction drops for some reason, & they come back, it can look for the same agent that they were chatting with previously, if it’s set as such.

Finally, we then have the ‘Advanced Settings’ tab, which gives us information around sessions, notifications, context variables, smart-assist bots, and quick replies. All of these are able to be viewed & configured directly from within the workstream, rather than needing to jump around different parts of the Omnichannel system, & then associating them together:

So to wrap up here (don’t worry, more to come shortly!), the new interface is really enabling admins to be able to quickly & easily create the necessary setup that’s needed. It’s avoiding needing to click around into different parts of the system. Omnichannel is complex enough as it is, and with being able to do the setup from one screen, it really makes life a LOT easier overall with getting the initial setup in place!

What are your thoughts on the new app? Have you used it yet? Have you found that it’s saving you time/effort? Drop a comment below – I’d love to hear!

Omnichannel Admin Center (Part I)

So there’s a new kid on the block. Or rather, it’s probably more accurate to say that there’s a new app available in Dynamics 365! This is the ‘Omnichannel Admin Center’ app that’s now present for anyone who currently has Omnichannel installed in their environment, or who is creating a new installation of Omnichannel.

So, what is this all about then?

Well, let’s back up a step here. Previously to set up Omnichannel, users had to go into the Dynamics 365 Settings, find the Omnichannel App, start the setup of it, and then go ahead & manually configure everything in the Omnichannel Administration app.

This, to be frank, took quite a bit of time to do, and needed users to be very familiar with the different parts of the interface. I’ve previously covered the (multiple) steps needed to do all of this in various blog posts, to help users understand what is actually needing to be done.

Thankfully, Microsoft realised the complexity around this, and have come out with a simplified administration experience. I’m very much in support of this, as it reduces the complexity of getting things started for Omnichannel in the first instance!

So let’s go ahead & take a look at this new app

The first thing to notice when opening the new Omnichannel Admin Center app is the interface itself. I think that this is really nice – rather than a ‘typical’ model-driven app experience, users are able to see some useful information on the home page itself!

Also, very nicely done in my opinion, are the three links at the bottom of the page:

  • Release Notes. This takes users to the release notes section on the Microsoft Docs website. It’s a great little thing that can help users understand the latest/greatest features that are being released
  • Ideas forum. People come up with great ideas to suggest to Microsoft to be able to include in their products. The Ideas forum is the location for these, where users can upvote popular concepts, or submit their own ideas. The Microsoft engineering teams do actually keep an eye on this!
  • Support community. The community forums are really helpful in allowing users to raise questions around the products, and give the ability for other users to help them out by giving answers etc. Most users will have already experienced the support forums in one way or another, but having a link directly to it is definitely quite useful to have

Now one thing that’s usually asked is ‘how can we quickly/easily see & set up chat in Omnichannel’? It’s one of the first things asked, as people tend to want to deploy (web)chat capabilities first, and then add other capabilities later on. Setting this up manually does take several steps, along with some waiting time (or, as I like to refer to it as, a coffee/snack break!)

It’s possible to quickly launch this through the button at the top of the page, rather than needing to go through the multiple configuration steps manually:

Click the button to launch it, and you’ll see the following window come up:

Clicking the ‘open chat demo’ will allow the system to start automatically configuring it for you – no more need for manual steps! You’re also able to use sample data if you wish to, to be able to show the experience without needing to load it in manually.

Yes, this really does only take a minute or two to happen!

Once the system has auto-configured everything, you’re now able to go ahead & launch the demo. Again, all the links & information are presented easily to us, telling/showing us what we need to do.

You’ll notice the chat widget in the lower right hand corner, which I’ve outlined in the image above. This launches into the chat widget directly, rather than needing to deploy it first to a webpage:

There’s no need to start needing to get into the setup of workstreams, queues, channels, routing capabilities, etc. It’s all configured right for you, to get you immediately started!

Of course, to test it out fully you’ll also need someone logged in as an Omnichannel Agent, to be able to respond to the chat instance. This could be the same user (in a different tab/browser on the same machine), or a different user on another machine. It’s really up to you as to how you would like to go about it.

So this is a really great feature to be able to have now. It’s not the ONLY great thing about the new app, however – stay turned for Part II next week when I’ll go into more capabilities that it provides!

Branding Omnichannel Chat Widget

One of the most basic functions of Omnichannel is the humble chat widget. This lovely little feature is there to be embedded on a webpage. People browsing the website can see it in the corner (or wherever it’s placed), and can then click on it to get help from a customer service person.

When clicked on, the chat window immediately opens, and people can connect to a live advisor. As mentioned previously, it’s also possible to add initial questions to the interface for the customer to fill out, and the information is then provided to the customer service agent.

All of this is wonderful. However, companies are now, more than ever, conscious of their branding. And by branding, I’m not just referring to a corporate logo. Businesses will often have colour schemes that are globally identified with them, along with fonts as well. Think of Coca Cola, for instance. The cursive script used is identifiable wherever you are in the world, even when it’s written in a different language, or the other way around!

With the default system customisation options, the chat widget itself is able to be pointed to a logo to be used in it. However further customisations and options, such as the colour scheme, are limited to pre-set options. So what happens if a company wishes to extend this further, and keep things in line with their corporate image?

Well, thankfully due to some extended development tools, this is able to be done. Below, I’m going to set out some of the functionality that is available through the usage of different scripts that can be added to the webpage within the chat widget code, which will then enhance it even further.

Pop out mode

It’s great to have the chat widget on the same screen, down in the corner somewhere. But what if you’re wanting to have it pop out, and present in a different window? It’s not possible through the default configuration, but it is possible through the usage of code. Simply adding the following line before the ‘></script’ tag at the end of the code block, we get to see this happen:

data-open-in-window="true"

It’s also possible to set the tag to “false”, which will then obviously not pop it open in a new window, but will keep it within the widget itself.

Font options

Not only are we able to pop out the chat window, we’re also able to use custom fonts. Again, the default font options leave a lot to be desired, in my opinion. Given the wide range of fonts being able to be used on websites nowadays, it’s definitely very nice to be able to use more fonts for the chat widget itself. I’d be slightly cautious here against being too ‘wild’ with them, as obviously we want to ensure that they’re accessible for all, and not difficult to read for some people.

Adding the following code snippet before the ‘></script’ tag at the end of the code block will make this happen. Note that we do need to specify the font that we’re wanting to use, though not all fonts may be available on website pages:

data-font-family-override="Stencil; Segoe UI"

Also bear in mind that different browsers may have compatibility issues with more advanced fonts, along with mobile devices, so I’d advise to be careful here. Ensure that you do test this out as widely as you can. There is also a second option font that can be used, in the case where the main font that you’ve specific is not available.

Custom colours

The final piece of customisation that I’d like to mention (at least for the purposes of this blog post) is around colours. Again, there are only a few pre-set colours available to pick from for the chat widget interface, which is a shame. For this, I’d definitely have expected to see the ability to select more colours, or have a colour picker/HEX value column available to use. After all, if it’s possible to do this in Microsoft Word (or other programs), why not Dynamics 365?

So again, there’s a nifty little code segment that can be added to the chat widget code script on the webpage. This requires you you know the HEX value for the colour that you’re wanting (if you don’t know this off the top of your head, there are free tools out there that can easily and quickly provide it to you).

data-color-override="#174F15

Personally, I think that the colour option is the best one to go for, as you can immediately utilise any custom colours that your branding contains!

Overall, I think that these are really great, and as you can see, I’ve played around with them for my own environment!

Have you ever had a need to customise something like this, but faced challenges? Drop a comment below – I’d love to hear!

AI Translation for Omnichannel

How to start off this post? I’ve been trying to work out how exactly I can express my excitement around this new feature for Omnichannel. Included in the Wave 2 2020 release, it’s just AMAZING. That, however, doesn’t give it true justice. So let’s see how I can describe it properly to give it due respect.

Previously I’ve mentioned the ability to use skills within Omnichannel (see https://thecrm.ninja/omnichannel-for-dynamics-365-queues-users-skills/). This can be used to indicate, for example, agents who can communicate in a certain language. That’s useful of course, but what happens when you don’t have anyone who can speak the language that the customer wants to use? It’s a problem, and one that’s really not easily solved. At least, not until now.

So, what exactly does this new translation feature do? Simple – it translates from one language to another. OK, it’s actually a little more awesome than just that. Having delved into it quite a bit over the last week or so, there are (in my view) three main benefits (with a bonus one as well!):

  1. It translates incoming text from the customer (through chat) from the language that they’re using to the language that the agent is using
  2. It translates outgoing text from the agent (through chat) from the language that the agent is using to the language that the customer is using
  3. It translates text between agents from one language to the other & vice versa (eg on an internal consult)

Now for the bonus. It doesn’t just translate text from one language to another. It follows the languages being used! So if the customer switches in mid-conversation to a different language, the system picks it up. Not only is the new incoming language translated into the agents language, but the replies from the agent are shown in the (new) language being used by the customer. It’ll automatically show text in the ‘last used’ language, which is really quite incredible (at least in my opinion).

There’s no fiddling around of needing agents to select the language that they need, or anything else. It’s a simple click to turn it on, and then another click to turn it off. I’m going to go through the setup of it below, as there are a few fiddly bits that did confuse me for a bit.

It’s also possible to use different translation tools. At the time of writing this post, it’s possible to use Bing, Google or Azure translation models. I’m sure that there will be other options available in the future as well to use, which really opens up possibilities for clients with differing digital estates.

Translation happens in real time, so there’s no waiting around for it to actually get on with it. It’s displayed immediately on the screen for the agent to see.

Setup for translation

I found the general guides to be alright, but weren’t too clear on a few items. I’m therefore sharing below how I went about it, in order to get things working properly. Please be aware that this isn’t in the order specified in the documentation, but in retrospect means less switching between screens:

  1. Ensure that you have the latest updates to your Omnichannel environment (this is always a good idea, regardless of anything else!)
  1. Go to https://github.com/microsoft/Dynamics365-Apps-Samples/tree/master/customer-service/omnichannel/real-time-translation & download the ‘webResourceV2.js’ file there (if you’re unfamiliar with how to do this, click to open the file, click the ‘Raw’ button, and then save the page (ensure it’s got the ‘.js’ extension when you save it!).
  1. Ensure you have an API key to enter into the web resource file! This is what tripped me up at first. You can use any text editor (I use Notepad++) to open it up. How you get the API key will depend on the provider. For example, to set up a free account in Azure, take a look at https://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-how-to-signup. There are also some additional things that you can configure in the web resource file, but I’m not going to go into that here
  1. Go to your solutions (this can either be through the Classic interface, or through http://make.powerapps.com). You can either create a new solution to hold the web resource file, or alternatively if you have existing solutions that you’d deploy, you can add the web resource file to that. Either:
    1. In the classic interface, navigate to Web Resources, click to create a new web resource, and upload the file (ensure you select the type to be ‘Script (JScript)’, or
    2. In the modern interface, click the ‘New’ button, select ‘Web Resource’ from the ‘Other’ section, and then follow the steps above

Once it’s saved, it’ll give you a URL. Copy that, and publish the solution.

  1. Go to the Omnichannel Administration Hub, find ‘Real Time Translation’ under Settings, and set this to Yes. You can also select a default input language from the selection. Also enter the URL that you copied above. Save it
  1. You’re all done!

Agent Experience

Depending on how you’ve configured your web resource, auto translation will either by on by default, or be off. If it’s not on by default, the agent can simply click within their chat window to select it to be active:

Once active, it’ll then start to translate everything, in both directions. Below are side by side screens of the customer & agent experiences. You’ll note that the customer is seeing the initial agent response in English, as the agent was the first in the conversation

From the agent side of things, both the original language, as well as the translated language, are shown. The customer is only shown the language that they’re actually using

If the agent isn’t sure what language the customer is using (as it’s being auto-translated for them), they can hover over the text, and it’ll show the details for it:

If the agent will consult, or transfer the session to another agent, the second agent will see the conversation in the language that they are themselves using (with the original text as well). This allows for the possibility to pass a customer to a specialist to assist them, even if they don’t speak the same language! It’s really cool to see this in action.

Even more wonderfully, this is even stored down to the transcript level:

This is really opening up major new concepts that Omnichannel can be used for, which will be supported entirely by this feature. As I said at the beginning of this post, I’m absolutely excited for it, and we’re already envisioning how this will be able to empower our clients even more.

Do you have any questions around this? Can you think of any scenarios that this could solve for you? Drop a comment below – I’d love to hear!