public Task Initialize() { m_HelpTemplate = m_TemplateProvider.BuildTemplate("teleconference.help"); m_PromptTemplate = m_TemplateProvider.BuildTemplate("teleconference.prompt"); m_LeaveChannelTemplate = m_TemplateProvider.BuildTemplate("teleconference.leftchannel"); m_ChatMessageTemplate = m_TemplateProvider.BuildTemplate("teleconference.chatmessage"); m_EnterRoomTemplate = m_TemplateProvider.BuildTemplate("teleconference.enterroom"); m_HangUpTemplate = m_TemplateProvider.BuildTemplate("teleconference.hangup"); return(Task.FromResult(0)); }
public async Task Activate(ISessionContext context) { Guid? userRoomId = null; string userRoom = null; // TODO: = GetDatabaseCallToAccessUsersLastRoom if (string.IsNullOrWhiteSpace(userRoom)) { userRoomId = Guid.Empty; userRoom = "MAIN"; } var room = m_Rooms.Get(userRoom); if (room == null) { room = new ChatRoom(userRoomId.Value); m_Rooms.Add(userRoom, room); } room.Users.Add(context.Session.ClientId); var userCount = room.Users.Count; var templateName = "template.teleconference.welcome"; var template = m_TemplateProvider.BuildTemplate(templateName); try { var templateBody = template.Render(new { username = context.Session.Username, room = userRoom, count = userCount - 1, // Exclude Self isEmpty = userCount == 1, // 1 = only you isFull = userCount > 2 // > 2 = More than 1 }); await Broadcast(AnsiBuilder.Parse($"[[attr.bold]][[fg.yellow]]{context.Session.Username} has entered the room.\r\n"), "MAIN", context.Session.ClientId); await context.Response.Append(templateBody); } catch (KeyNotFoundException ex) { Console.WriteLine($"Template {templateName} is invalid : {ex.Message}"); } await ShowPrompt(context); }