public async Task <ImprovedInstantMessageMessage> SendInstantMessage(bool isFromGroup, Guid toAgentId, UInt32 parentEstateId, DialogType dialogType, Guid id, string message, byte[] binaryBucket) { Guid agentId = Session.Instance.AgentId; Guid sessionId = Session.Instance.SessionId; Guid regionId = Guid.Empty; // TODO: Should I ever specify this? Vector3 position = Vector3.zero; // TODO: Should I ever specify this? OnlineMode onlineMode = OnlineMode.Online; UInt32 timestamp = 0; // TODO: Tests show this as 0 string fromAgentName = Agent.CurrentPlayer.DisplayName; ImprovedInstantMessageMessage msg = new ImprovedInstantMessageMessage(agentId, sessionId, isFromGroup, toAgentId, parentEstateId, regionId, position, onlineMode, dialogType, id, timestamp, fromAgentName, message, binaryBucket); await SendReliable(msg); return(msg); }
public InstantMessage(ImprovedInstantMessageMessage message) { AgentId = message.AgentId; SessionId = message.SessionId; IsFromGroup = message.IsFromGroup; ToAgentId = message.ToAgentId; ParentEstateId = message.ParentEstateId; RegionId = message.RegionId; Position = message.Position; OnlineMode = message.OnlineMode; DialogType = message.DialogType; Id = message.Id; MessageText = message.MessageText; SenderName = message.FromAgentName; BinaryBucket = message.BinaryBucket; Timestamp = DateTimeOffset.Now; }
protected void OnImprovedInstantMessageMessage(ImprovedInstantMessageMessage message) { Guid dialogId = message.Id; if (InstantMessageLogs.ContainsKey(dialogId) == false) { Logger.LogInfo("LogManager.OnImprovedInstantMessageMessage", $"Adding message log for {message.FromAgentName}. Dialog Id={dialogId}"); InstantMessageLogs.Add(dialogId, new MessageLog( message.FromAgentName, async s => { if (Agent.CurrentPlayer?.Region?.Circuit == null) { return; } ImprovedInstantMessageMessage msg = await Agent.CurrentPlayer.Region.Circuit.SendInstantMessage( false, message.AgentId, message.ParentEstateId, // TODO: Do I ever need to specify this? DialogType.NothingSpecial, message.Id, s, null); // Pretend that we received this message to get it into the log: OnImprovedInstantMessageMessage(msg); }) ); OnNewInstantMessageSession?.Invoke(dialogId, message.FromAgentName, InstantMessageLogs[dialogId]); } MessageLog log = InstantMessageLogs[dialogId]; Logger.LogDebug("LogManager.OnImprovedInstantMessageMessage", $"{message.DialogType}: \"{message.MessageText}\""); log.AddMessage(new InstantMessage(message)); }