public void StartMeeting(VideoChatConfiguration chatConfiguration)
 {
     ChatConfig = chatConfiguration;
 }
        public async Task<VideoChatConfiguration> StartMeeting(Guid meetingId)
        {
            var meeting = MeetingInfoRepository.GetMeetingInfo(meetingId);
            if (meeting == null) return null;
            if (meeting.HasAgent) return null;
            if (meeting.HasMeetingStarted) return null;


            var room = meetingId.ToString();
            Debug.WriteLine("Starting meeting {0} by agent {1}", new object[] {room, Context.ConnectionId});
            var config = new VideoChatConfiguration
            {
                AppId = 416,
                ApiKey = "<insert ADL key here>",
                ScopeId = room,
                MaxWidth = 240,
                MaxHeight = 320,
                MaxFramesPerSecond = 15,
                MaxBitRate = 1024,
                Expires = VideoChatConfiguration.CurrentTimeMillis() + (5*60),
                MeetingId = meetingId
            };
            config.Salt = config.ScopeId;

            meeting.ConnectAgent(Context.ConnectionId);
            meeting.StartMeeting(config);

            // add caller to meeting room
            await GroupManager.AddToGroup(Groups, room, Context.ConnectionId);
            if (meeting.HasClient)
            {
                // fire off the joined message to the agent as the client is already waiting in the room
                try
                {
                    Debug.WriteLine("Meeting {0} has client, sending client joined to agent", new object[] { room });

                    Clients.Caller.clientJoined();
                }
                catch (Exception)
                {
                    Debug.WriteLine("Error calling clientJoined");
                }
                // Tell the client to start with the following config
                try
                {
                    Debug.WriteLine("Meeting {0} has client, sending start meeting to client {1}", new object[] { room, meeting.ClientConnectionId });
                    Clients.Group(room, Context.ConnectionId).startMeeting(config);
                }
                catch (Exception)
                {
                    Debug.WriteLine("Error calling startMeeting");
                }
            }

            UpdateMeetingStatusToClients(this);
            return config;
        }