Omnichannel for Customer Service – Entities

Recently I gave a presentation regarding Omnichannel for Customer Service at 365 Saturday in Paris, afterwards I was asked a question about the files customers might send in webchat conversations. In this scenario a large volume of attachments were expected and these would need to be managed. Therefore they wanted to know where the attachments were stored. In this post I hope to answer that question and more!

After the event my flight back to Birmingham was delayed … meaning, thanks to “flybe” I had some unexpected spare time!

Whilst waiting for my plane I experimented with how attachments are stored. In the end my flight was delayed for longer than I expected …. so I also investigated other data relationships connected with Omnichannel for Customer Service. In this post I will answer the original question and give some additional insight into the entities behind Omnichannel for Customer Service.

So lets start with my original question “How are attachments stored from webchat conversations?“.

Within The Omnichannel Administration app we can define if file attachments are required. And if these can be sent by customers and / or agents.

I think the person speaking to me in Paris was right to ask a question about this! As in some scenarios customers might routinely send multiple pictures of issues. This could quickly consume large amounts of disk, so knowing the location of the attachments would allow us to monitor storage and delete the images after a period of time. (or maybe move them into a cheaper storage location.)

Below you can see a screen shot from my Omnichannel Administration app, this shows how I’ve configured the chat to allow file attachments to be sent by the customers and agents.

The simple answer to the original question is that a note is created regarding the conversation with the customer. This note will have an attachment that contains the file sent by the customer or the agent. I guess it would be a pretty simple task to create a bulk deletion job to remove all notes linked to conversations older than “n” weeks or months.

If you don’t know, within Omnichannel for Customer Service we have an entity called “conversation”. Its schema name has the more catchy name of “msdyn_ocworkitem”. After each chat is completed a conversation record will be created and this will link to other information. For example, the files transferred as part of a conversation.

But I also spotted additional notes being created! So whilst waiting for my delayed plane I started to dig a little deeper. Another entity called transcript is also linked to the conversation entity. Each transcript entity will have a note which contains an attachment called “message.txt”. This txt file contains some JSON which in turn holds the content (transcript) from my conversations. Knowing this exists and that you could therefore access the content of the conversations might be very useful.

Incidentally when I looked at the JSON it also contains the GUID of the note containing the attachment from my conversation. Meaning my transcript and any attachments are indirectly linked via this GUID.

Tip: You might also want to consider when to run a bulk delete against the notes containing conversation transcripts. Do you really want to store all the text from all your webchat conversations indefinitely!

With my delay worsening I bought a notepad and pen from a trusty airport stationery shop. I then completed multiple webchats and started to scribble details for any other entities that had been updated. You can see my carefully crafted and completely illegible notes below!

Obviously these scribbles were hard to understand and I’d quickly forget what they meant! So this morning I created a version of them using Visio, as a result I hope the diagram below will make a little more sense.

In addition to looking at how notes are used in connection with conversations I also investigated ongoing conversations, sessions, sentiment analysis and characteristics (skills).

Importantly: I never set out to document all of the entities / fields connected with omnichannel conversations! But I did end up reviewing more than I expected! So this post shouldn’t be considered a complete picture but will still hopefully give you some useful insights into how omnichannel conversations are stored.

Ongoing Conversations
– the ongoing conversations entity (msdyn_liveconversation) holds details for the current active conversations. Including the status of the conversation, when it started, current active agent and sentiment. I believe knowing this could be really useful if you wanted to report on the number of current conversations or maybe trigger alerts when very negative conversations happen.

Sessions
– Each session is linked to one or more conversations. Often you will have just one session record and one conversation. But if the same conversation is opened and closed multiple sessions will exist. Sessions might be really useful as they link to another entity called session participants. The participants being the agents that were involved in that part of the conversation. Sessions could be complex! For example, Agent one might start the conversation, then consult agent two about the issue and finally transfer to agent three. And whilst this is happening a supervisor might monitor the chat. All of this complex process could be reviewed via the sessions entity.

Sentiment Analysis
– We have a conversation sentiment entity but additionally optionsets on other entities also highlight sentiment information. For example, it might be useful to know that the current sentiment of a live conversation is held in the ongoing conversation entity!

Characteristics (aka skills)
– skills based routing has been recently added to Omnichannel for Customer Service. We can define skills for agents and workstreams. This information is then used to match the best agents to the right incoming conversations. We also have a number of entities that record which sessions and conversations involved what skills. You might find this useful for reporting, as you could ask questions like “which conversations have happened that needed agents with xyz skill”.

Below are my rough notes for each entity; (Again this shouldn’t be considered complete documentation, these notes are just some pointers!)

Item Details
Entity Ongoing Conversation
Schema Name msdyn_liveconversation
High level purpose Includes records for all currently active conversations, records get created as incoming chats arrive.
Lookups to other entities Workstream

Queue

Active Agent

Customer

Comments After a conversation ends the live conversation record will be deleted.

Includes an optionset called Customer sentiment (msdyn_customersentimentlabel) which hold current sentiment. (Values include “Very negative”, “Neutral”, “Slightly Positive” etc.

Status reason can be open, active, waiting, closed or wrap-up.

Item Details
Entity Session
Schema Name msdyn_ocsession
High level purpose Holds a history of conversations and links to participants, create on completion of a session
Lookups to other entities Queue

Conversation

Comments Each Session can have multiple Session Participants (See session participants for details)
Item Details
Entity Session Participants
Schema Name msdyn_sessionparticipant
High level purpose Lists the participants in a conversation, shows when agents joined the conversation. (Or supervisors monitored the conversation)
Lookups to other entities Session

Agent

Comments Mode field options include primary, consult and monitor (Shows the “role” the agent took in the conversation)

Date time fields show when agent joined, left or was added into the session

Item Details
Entity Session Characteristics
Schema Name msdyn_sessioncharacteristics
High level purpose Links the session to conversation characteristics (aka skills related to the conversation)
Lookups to other entities Session

Conversation Characteristic

Comments This entity does not contain the skill / rating! Instead it links the session to the conversation characteristic which will have the skills.
Item Details
Entity Conversation
Schema Name msdyn_ocliveworkitem
High level purpose Primary record for the conversation. Each conversation can be related to multiple sessions (As a conversation could be closed and opened again in a new session)
Lookups to other entities Workstream

Queue

Active Agent

Customer

Comments Notes regarding the conversation will exist for any attachments passed between the agent / customer.

Includes an optionset called Customer sentiment (msdyn_customersentimentlabel) which hold current sentiment. (Values include “Very negative”, “Neutral”, “Slightly Positive” etc.

Item Details
Entity Conversation Characteristic
Schema Name msdyn_ocliveworkitemcharacteristic
High level purpose Shows the skills associated with a conversation and the skill rating.
Lookups to other entities Conversation

Characteristic

Rating Value

Comments
Item Details
Entity Conversation Sentiment
Schema Name msdyn_ocliveworkitemsentiment
High level purpose Holds the sentiment details for a conversation.
Lookups to other entities Conversation
Comments Contains sentiment pulse and transition scores.

Contains text field (msdyn_sentimentzone) to state if conversation was negative, positive etc.

Item Details
Entity Transcript
Schema Name msdyn_transcript
High level purpose Links conversation to a transcript of conversation, created at end of webchat conversation.
Lookups to other entities Conversation
Comments Has a note containing an attachment called “message.txt”.

The message.txt contains a JSON with all content from the conversation.

If the conversation included sending / receiving an attachment “message.txt” will include the GUID of a note containing the attachment. However the note for the attachment will actually be regarding the conversation.

In the end my flight left Paris and my “work” was cut short. Hence this post only covers a partial picture of the Omnichannel for Customer Service entities. I guess there will be more I could learn by digging even further …. maybe I’ll use Ryanair next time and “pray” for an even longer delay!!

Note: Other unreliable budget airlines are available!!

Until my next delayed flight I hope this information answers the question I was set and offers a few extra pointers!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s