private void WriteMessageToTranscript(Message message)
        {
            //adds a line for the received or sent message
            TranscriptItem lineItem = new TranscriptItem(message.TimeStamp, message.SenderDisplayName, message.SenderUri, message.Modality.ToString(), message.Content);
            _viewModel.MessageHistory.Add(lineItem);

            //manually scrows down to the last added message
            listBoxHistory.UpdateLayout();
            scrollViewerMessageLog.ScrollToVerticalOffset(listBoxHistory.ActualHeight);
        }
 // TODO: Make private later and use ConversationContext channel to write data
 void ShowIncomingTranscriptMessage(Message message)
 {
     WriteMessageToTranscript(message);
 }
        /// <summary>
        /// Parses context data into List of Messages based on format:
        /// [SenderDisplayName ([email protected])(sip:[email protected])][ConversationId:12345678][ConferenceUri:[email protected];conf][TimeStamp][MessageType][MessageDirection][MessageContent];;
        /// </summary>
        /// <param name="contextData"></param>
        /// <returns></returns>
        private List<Message> ParseMessagesFromContextData(string contextData)
        {
            List<Message> transcriptMessages = new List<Message>();

            // Split messages
            char[] transcriptMessagesDelimiter = { ';', ';' };
            string[] transcriptMessageData = contextData.Split(transcriptMessagesDelimiter);

            char[] messagePropertyDelimiter = { ']', '[' };
            char[] messageSenderInfoDelimiter = { '(' };
            foreach (string s in transcriptMessageData)
            {
                // Split message content
                string senderInfo = "null";
                string senderDisplayName = "null";
                string senderAlias = "null";
                string senderUri = "null";
                string conversationId = "null";
                string conferenceUri = "null";
                string timeStamp = DateTime.Now.ToString();
                string messageType = "Info";
                string messageDirection = "Incoming";
                string messageContent = "null";

                string[] messageProperties = s.Split(messagePropertyDelimiter);
                // Verify 7 items in messageProperties
                if (messageProperties.Length == 7)
                {
                    senderInfo = messageProperties[0].Substring(1);
                    conversationId = messageProperties[1].Substring(1);
                    conferenceUri = messageProperties[2].Substring(1);
                    timeStamp = messageProperties[3].Substring(1);
                    messageType = messageProperties[4].Substring(1);
                    messageDirection = messageProperties[5].Substring(1);
                    messageContent = messageProperties[6].Substring(1);

                    if (senderInfo.Contains('('))
                    {
                        string[] senderInfoItems = senderInfo.Split(messageSenderInfoDelimiter);
                        senderDisplayName = senderInfoItems[0].Trim();
                        senderAlias = senderInfoItems[1].Substring(0, senderInfoItems[1].Length - 1).Trim();
                        senderAlias = senderInfoItems[2].Substring(0, senderInfoItems[2].Length - 1).Trim();
                    }
                    else
                    {
                        senderDisplayName = senderInfo.Trim();
                    }
                }
                else
                {
                    // TODO: Error
                    continue;
                }

                MessageModality modality = MessageModality.Info;
                Enum.TryParse<MessageModality>(messageType, true, out modality);
                MessageDirection direction = MessageDirection.Incoming;
                Enum.TryParse<MessageDirection>(messageDirection, true, out direction);
                Message m = new Message(messageContent, senderDisplayName, senderAlias, senderUri, DateTime.Parse(timeStamp), conversationId, conferenceUri, modality, direction);
                transcriptMessages.Add(m);
            } // loop

            return transcriptMessages;
        }