/// <summary> /// Ends the engagement where the given party is the conversation owner /// (e.g. a customer service agent). /// </summary> /// <param name="conversationOwnerParty">The owner of the engagement (conversation).</param> /// <returns>The results. If the number of results is more than 0, the operation was successful.</returns> public List <MessageRouterResult> EndEngagement(Party conversationOwnerParty) { List <MessageRouterResult> messageRouterResults = new List <MessageRouterResult>(); Party ownerInConversation = RoutingDataManager.FindEngagedPartyByChannel( conversationOwnerParty.ChannelId, conversationOwnerParty.ChannelAccount); if (ownerInConversation != null && RoutingDataManager.IsEngaged(ownerInConversation, EngagementProfile.Owner)) { Party otherParty = RoutingDataManager.GetEngagedCounterpart(ownerInConversation); messageRouterResults.AddRange( RoutingDataManager.RemoveEngagement(ownerInConversation, EngagementProfile.Owner)); } else { messageRouterResults.Add(new MessageRouterResult() { Type = MessageRouterResultType.Error, ConversationOwnerParty = conversationOwnerParty, ErrorMessage = "No conversation to close found" }); } return(messageRouterResults); }