private async Task <IEnumerable <ConversationReference> > GetHandoffConversation(ITurnContext turnContext,
                                                                                         Activity activity, CommandSendMessageProperties properties, ConversationReference selfConversation)
        {
            //Broadcast to many users
            IEnumerable <ConversationReference> conversations = null;

            if (properties.From.Role == ChatUserRole.Consumer)
            {
                conversations = await _routingDataManager.GetAdminConversations();

                //Send event to event processor... if possible
                if (turnContext.TurnState.TryGetValue(typeof(ChatReportModel).FullName, out object result))
                {
                    await PushMessageToEventProcessorSaga(activity.Text, activity.ChannelId, properties, (ChatReportModel)result);
                }
            }
            //To one user only - Admin only
            else if (properties.From.Role == ChatUserRole.Admin)
            {
                if (properties.UserId == "*")
                {
                    conversations = await _routingDataManager.GetConversations();
                }
                else
                {
                    conversations = await _routingDataManager.GetConversationsFromUser(properties.UserId);

                    IEnumerable <ConversationReference> conversations2 = await _routingDataManager.GetAdminConversations();

                    conversations = conversations2.Union(conversations);
                }
            }
            else
            {
                throw new Exception("Message handoff not handled");
            }
            //Do not send to self
            conversations = _routingDataManager.RemoveSelfConversation(conversations, selfConversation);

            return(conversations);
        }