Live Assist for Microsoft Dynamics 365 can integrate with Unified Service Desk (USD). When it is installed most of the configuration you’ll require is automatically added to your USD config. But in production environments you’ll want to tweak this config. I haven’t found any detailed technical documentation (yet!), so I have created this guide to provide additional detail.
Background
To create this post, I have reviewed the changes that were applied to my USD environment as a result of installing Live Assist. It is worth noting that this information was created in April 2017. I am currently unsure on the frequency of future updates, we have to assume that future updates to Live Assist could add to or change these details.
I am sorry but if this documentation is technical or long. It aimed at a USD expert! I will create future blog posts that give worked examples for specific use cases that maybe more appropriate for someone newer to USD.
I am also sorry for any omissions from this information! This post is a result of me reviewing the configuration in an attempt to improve my own understanding. I am therefore simply sharing what I have found so far. (As my knowledge improves I will obviously update with additional detail.)
How Live Assist Adds to Your USD Configuration
Another observation I have is the way Live Assist seems to apply changes into your USD environment! Associated Contact and KB Search might be good examples. In my USD application, I already had a hosted control “KB Search”, meaning an additional one wasn’t added. However, I hadn’t got a hosted control called “Associated Contact”, so one was created. This behaviour is “interesting”! As it means if you import Live Assist into a USD environment other than the Microsoft sample package you may need to review everything that has been created. Which is what I have just done, hence this blog post!
Examples of what I mean include ….
-
I already had a panel layout called “Main Layout”, Live Assist adds a panel layout called “Custom Panel”. I therefore altered all of the actions that used “Custom Panel” to use my existing “Main Layout” instead.
-
I have a hosted control to show an associated view of contacts already, except mine was called “Associated Contacts“. Again, I will need to alter any actions / navigation created by Live Assist to use my control rather than the one it created.
-
“KB Search” was not added as a hosted control but the import of Live Assist did seem to add a couple of UII Actions. In my case these were “Search” and “default”. This process actually created duplicate actions. To resolve this I had to remove these UII Actions from “KB Search”.
- My KB Search toolbar had a couple of buttons that had no actions. I had to manually create those actions.
If your USD application is based on the Microsoft sample package supplied with USD you will probably have no issues. If your USD package (like mine) is bespoke but follows similar lines you may also be fine, with some “tweaks”. But I’ve seen several implementations that are very custom, maybe only using custom entities or maybe with a completely custom panel layout. In these you may need to review of the hosted controls, actions, window navigation rules (etc) and build a variation that will work in your environment from scratch. (A task that would involve significant effort!)
Additions made to my USD configuration included;
- Hosted Controls
- Actions
- Customizations File
- Session Lines
- Scriptlets
- Toolbars (And toolbar buttons)
- Window Navigation Rules
The logic I have mentioned above means that the hosted controls added into your environment may differ slightly from mine! The hosted controls that were added into my USD solution included;
- Associated Contact
- Chat Activity
- Chat Context
- Chat Control
- Chat Search Page
- Cobrowse Control
- Custom Panel
- LeftPanelActivities
- Presence Control
- Transcript Control for CHat Activity
Note:
Many hosted controls will have standard actions such as MoveToPanel etc. I will not document these as they are common to all USD controls. Instead I will try to highlight all of the “custom” actions and events.
The following actions were added into my USD configuration. Notice the items in read! When I did the advanced find to produce this list I spotted that these values were incorrectly blank and therefore needed to be added.
Hosted Control | Action | Action Name |
Agent Scripting | GotoTask | Load Contact Session Agent Script |
Associated Cases | Navigate | Action Call for Associated Cases Button Click on Contact Toolbar |
Associated Cases | Navigate | Action Call to View Associated Cases for Contact |
Chat Activity | Open_CRM_Page | Open Chat Activity |
Chat Activity | Refresh | RefreshChatActivity |
Chat Context | Navigate | Open Chat Context |
Chat Control | FocusApplication | Action Call to Focus on Case when Create Case for Authenticated |
Chat Control | FocusApplication | Action Call to Focus on Case when Create Case for Unauthenticated |
Chat Control | FocusApplication | Action Call to Focus on Chat Activity |
Chat Control | FocusApplication | Action Call to Focus on Chat Search Page |
Chat Control | FocusApplication | Action Call to Focus on Contact |
Chat Control | FocusApplication | Action Call to Focus on Contact when Create Contact |
Chat Control | FocusApplication | Action Call to Focus on KB Search |
Chat Control | ShowOutside | Action Call to Show Outside for Chat Control |
Chat Control | SwitchOrCreateSession | Action Call to Switch Session |
Chat Control | SwitchOrCreateSession | Action Call to Switch Session on Chat Session Switch |
Chat Control | UpdateContext | Action Call to Update Context |
Chat Control | AttachCasetoChatActivity | AttachCasetoChatActivity |
Chat Control | AttachChatToSession | AttachChatToSession |
Chat Control | default | Chat Control Load |
Chat Control | InvokeChatAction | InvokeChatActionCall |
Chat Control | RealignWindow | Move Chat Control to Screen 2 |
Chat Control | MoveToPanel | Popin Chat |
Chat Control | MoveToPanel | Popout Chat |
Chat Control | ReadChatContext | Read Chat Context |
Chat Control | ReadLastMessage | Search KB with Last Chat Message |
Chat Control | WriteMessage | Send Article PublicUrl |
Chat Control | WriteMessage | Send KBpublicUrl |
Chat Search Page | Navigate | Navigate to chat search page |
Chat Search Page | Navigate | Search Call for Chat |
Chat Search Page | Navigate | Search For MultiChat |
Cobrowse Control | Close | Close Cobrowse |
Cobrowse Control | Navigate | Initiate Cobrowse |
Contact | Navigate | Navigate to chat contact |
CRM Global Manager | ShowTab | Focus Multi Search Page |
CRM Global Manager | ShowTab | Show Tab for Associated Cases |
CRM Global Manager | ShowTab | Show Tab for Chat Context |
KB Article | Navigate | Open KM Article |
KB Search | default | Open KM |
KB Search | Search | Search KB with Last Chat Message Received |
Main Layout | SetVisualProperty | Collapse Right Panel on PopOut |
Main Layout | SetVisualProperty | Expand Left Panel Expander |
Main Layout | SetVisualProperty | Expand Right Panel Expander |
Main Layout | SetVisualProperty | Expander Right Panel Collapse |
Presence Control | default | Presence Control Load |
Additions – Customization File
Any additions such a custom hosted control will need to be added to a customization file that can in turn be cached to the local desktop. Live Assist handles this by the addition of a customizations file called “UnifiedServiceDesk.ChatControl”.
Two session lines were added to my organisation. One the chat session overview and one for the session name.
It might be worth noting that this was another area of conflict! The session lines are not associated with an entity. I already had a session line that wasn’t linked to an entity, so initially I was seeing that session name not the intended name.
Four scriptlets were added;
Generate New Chat Session Name – This scriptlet returns a session name. Either as “New Session” or with the customer name.
Generate Chat Contact Session Name – This scriptlet returns the name to be sued for the contact sessions.
Get Chat Contact Full Name – Returns the concatenation of first name and last name for the chat customer.
Generate Title for Case – Returns the first 12 characters of the case title
Three toolbars were added to my configuration.
KM Article Toolbar, associated with the KB Article hosted control. It has one button;
- Send Link to Chat – This triggers one action called “Send Article PublicUrl”. Which in turn uses a “WriteMessage” action on the chat control to send the public url for the knowledge article to the customer.
KM Search Toolbar, associated with the KB Search hosted control and has four buttons.
- Send Link to Chat – This trigger one action called “Send Article PublicUrl”. Which in turn uses a “WriteMessage” action on the chat control to send the public url for the knowledge article to the customer.
- Read Last Message – This triggers an action to search the knowledge base using the last chat message as an input.
- Link Article – This called one action which associates the article with the current incident.
- Copy Link – This called an action that copies the current article to the clipboard.
Note: I actually found that my “Link Article” and “Copy Link” toolbar buttons did not call any action. To resolve this I viewed the action as defined in the sample packaged from Microsoft and replicated in my environment.
Chat Activity Toolbar, associated with the chat activity hosted control and has two buttons.
- Associate to Case – This button triggers two actions. “AttachCasetoChatActivity” and “RefreshChatActivity”.
- Refresh Chat Activity – This button just triggers the “RefreshChatActivity” action.
Additions – Window Navigation Rules
Just four window navigation rules were added into my organisation.
Additional Hosted Control Detail
In the remainder of this document I will describe additional details about each of the hosted controls added to my solution.
- Associated Contact
- Chat Activity
- Chat Context
- Chat Control
- Chat Search Page
- Cobrowse Control
- Custom Panel
- LeftPanelActivities
- Presence Control
- Transcript Control for CHat Activity
The “Associated Contact” hosted control is a CRM Web Page. As I described in my introduction this control seems to have been added as I didn’t already have a hosted control called “Associated Contact”. I had however got one called “Associated Contacts“. This means I may need to revise later.
Description | |
Name | Associated Contact |
USD Component Type | CRM Page |
Application is Global | No |
Display Group | MainPanel |
Adapter | None |
UII Actions
In my USD system, this control had no UII Actions! (But this wouldn’t be the case if added into the Microsoft sample package.)
Events
In my USD system, this control no Events! (But this wouldn’t be the case if added into the Microsoft sample package.)
The “Chat Activity” hosted control is a CRM Page ….
Description | |
Name | Chat Activity |
USD Component Type | CRM Page |
Application is Global | No |
Display Group | MainPanel |
Adapter | None |
UII Actions
Only standard UII actions existed.
Events
Only standard Events existed.
The chat context hosted control is a standard web application ….
Description | |
Name | Chat Context |
USD Component Type | Standard Web Application |
Application is Global | Yes |
Display Group | MainPanel |
Adapter | None |
UII Actions
Only standard UII actions existed.
Events
Only standard Events existed.
The “Chat Control” hosted control is a custom USD hosted control. This fact is interesting! As any custom code will need to be copied to the USD client. Therefore, we also have a customization file that is associated with the chat control. See screen shot below!
Description | |
Name | Chat Control |
USD Component Type | USD Hosted Control |
Application is Global | Yes |
Display Group | RightPanel |
Adapter | Assembly URI: UnifiedServiceDesk.ChatControl
Assembly Type: ChatControl.ChatControl |
UII Actions
32 UII Actions existed after importing Live Assist, Including;
Description | |
AttachCasetoChatActivity | |
AttachChatToSession | |
Close | Standard! |
CobrowseClosed | |
default | |
FireEvent | Standard! |
FocusApplication | |
GetActiveChatId | |
GetAllPresenceStates | |
GetChatContextUrl | |
GetChatState | |
GetCurrentActiveChatCount | |
GetCurrentState | |
GetMaxNumberOfChatsAllowed | |
InvokeChatAction | |
MoveToPanel | Standard! |
New_CRM_Page | Standard! |
Open_CRM_Page | Standard! |
Popup | Standard! |
ReadChatContext | |
ReadLastMessage | |
RealignWindow | Standard! |
SendInternalMessage | |
SendMessage | |
SetPresenceState | |
SetSize | Standard! |
SetUserCanClose | Standard! |
ShowOutside | |
SwitchChat | |
SwitchOrCreateSession | |
UpdateContext | |
WriteMessage |
Events
14 Events existed after importing Live Assist, Including;
Description | |
ChatSessionCreated | Event triggered when a chat starts.
Contains two actions;
|
ChatSessionSwitch | Contains one action;
|
CloseCobrowse | Contains one action;
|
CobrowseInitiated | Contains one action;
|
CreateCase | Event triggered when create case button is clicked on the chat control.
Contains three actions;
|
CreateContact | Contains two actions;
|
OpenChatActivity | Contains two actions;
|
OpenContact | Contains three actions;
|
OpenContextPage | Contains one action;
|
OpeningNewChat | Contains one action;
|
OpenKnowledgeBase | Contains three actions;
|
PopIn | Contains two actions;
|
PopOut | Contains three actions;
|
PopupRouted |
No actions |
The “Chat Search Page” is a CRM Page that is placed into a session when a chat is opened. It holds a multi-entity search that contains the name of the contact.
Description | |
Name | Chat Search Page |
USD Component Type | CRM Page |
Application is Global | No |
Display Group | MainPanel |
Adapter | None |
UII Actions
Only standard UII actions existed.
Events
Only standard Events existed.
The cobrowse hosted control is a standard web application ….
Description | |
Name | Cobrowse Control |
USD Component Type | Standard Web Application |
Application is Global | Yes |
Display Group | FloatingPanel |
Adapter | None |
UII Actions
Only standard UII actions existed.
Events
Only standard Events existed.
The “Custom Panel” hosted control is the panel layout used by Live Assist. As explained in my introduction I altered any actions that used this hosted control to use my existing panel layout instead. This included roughly 6 actions that use the SetVisualProperty action.
Description | |
Name | Custom Panel |
USD Component Type | Panel Layout |
Panel Type | XAML
Note: In my solution, I changed the actions to use my panel layout. Which had a panel type of “Standard Main Panel”. |
XAML | “Some XAML” |
Display Group | MainWorkArea |
UII Actions
Only standard UII actions existed.
Events
Only standard Events existed.
The LeftPanelActivities hosted control is a CRM Page ….
Description | |
Name | LeftPanelActivities |
USD Component Type | CRM Page |
Application is Global | No |
Display Group | MainPanel |
Adapter | None |
UII Actions
In my USD system, this control had no UII Actions! (But this wouldn’t be the case if added into the Microsoft sample package.)
Events
In my USD system, this control no Events! (But this wouldn’t be the case if added into the Microsoft sample package.)
The “Presence Control” is another significant hosted control, as like the chat control it is a custom control. (And will therefore also be include in the customization file added when Live Assist is installed.
Description | |
Name | Presence Control |
USD Component Type | USD Hosted Control |
Application is Global | Yes |
Display Group | AboutPanel |
Adapter | Assembly URI: Microsoft.Crm.UnifiedServiceDesk.Dynamics
Assembly Type: Microsoft.Crm.UnifiedServiceDesk.Dynamics.PresenceControl |
UII Actions
10 UII Actions existed after importing Live Assist, Including;
Description | |
Close | Standard! |
default | Standard! |
FireEvent | Standard! |
MoveToPanel | Standard! |
New_CRM_Page | Standard! |
Open_CRM_Page | Standard! |
Popup | Standard! |
RealignWindow | Standard! |
SetSize | Standard! |
SetUserCanClose | Standard! |
Events
1 Events existed after importing Live Assist, Including;
Description | |
PopupRouted |
No actions |
Transcript Control for Chat Activity
The “Transcript Control for Chat Activity” hosted control is a standard web page ….
Description | |
Name | Transcript Control for Chat Activity |
USD Component Type | Standard Web Application |
Application is Global | No |
Display Group | MainPanel |
Adapter | None |
UII Actions
Only standard UII actions existed.
Events
Only standard Events existed.
Top
Pingback: USD – The Book | Microsoft Dynamics CRM and Unified Service Desk