/// <summary>
 /// Initializes a new instance of the <see cref="QueueConversationVideoEventTopicChat" /> class.
 /// </summary>
 /// <param name="State">State.</param>
 /// <param name="InitialState">InitialState.</param>
 /// <param name="Id">A globally unique identifier for this communication..</param>
 /// <param name="Provider">The source provider of the chat..</param>
 /// <param name="ScriptId">The UUID of the script to use..</param>
 /// <param name="PeerId">The id of the peer communication corresponding to a matching leg for this communication..</param>
 /// <param name="RoomId">The room id for the chat..</param>
 /// <param name="AvatarImageUrl">The avatar for the chat (if available)..</param>
 /// <param name="Held">True if this call is held and the person on this side hears silence..</param>
 /// <param name="DisconnectType">System defined string indicating what caused the communication to disconnect. Will be null until the communication disconnects..</param>
 /// <param name="StartHoldTime">The timestamp the chat was placed on hold in the cloud clock if the chat is currently on hold..</param>
 /// <param name="ConnectedTime">The timestamp when this communication was connected in the cloud clock..</param>
 /// <param name="DisconnectedTime">The timestamp when this communication disconnected from the conversation in the provider clock..</param>
 /// <param name="JourneyContext">JourneyContext.</param>
 /// <param name="Wrapup">Call wrap up or disposition data..</param>
 /// <param name="AfterCallWork">A communication's after-call work data..</param>
 /// <param name="AfterCallWorkRequired">Indicates if after-call is required for a communication. Only used when the ACW Setting is Agent Requested..</param>
 public QueueConversationVideoEventTopicChat(StateEnum?State = null, InitialStateEnum?InitialState = null, string Id = null, string Provider = null, string ScriptId = null, string PeerId = null, string RoomId = null, string AvatarImageUrl = null, bool?Held = null, DisconnectTypeEnum?DisconnectType = null, DateTime?StartHoldTime = null, DateTime?ConnectedTime = null, DateTime?DisconnectedTime = null, QueueConversationVideoEventTopicJourneyContext JourneyContext = null, QueueConversationVideoEventTopicWrapup Wrapup = null, QueueConversationVideoEventTopicAfterCallWork AfterCallWork = null, bool?AfterCallWorkRequired = null)
 {
     this.State                 = State;
     this.InitialState          = InitialState;
     this.Id                    = Id;
     this.Provider              = Provider;
     this.ScriptId              = ScriptId;
     this.PeerId                = PeerId;
     this.RoomId                = RoomId;
     this.AvatarImageUrl        = AvatarImageUrl;
     this.Held                  = Held;
     this.DisconnectType        = DisconnectType;
     this.StartHoldTime         = StartHoldTime;
     this.ConnectedTime         = ConnectedTime;
     this.DisconnectedTime      = DisconnectedTime;
     this.JourneyContext        = JourneyContext;
     this.Wrapup                = Wrapup;
     this.AfterCallWork         = AfterCallWork;
     this.AfterCallWorkRequired = AfterCallWorkRequired;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="QueueConversationVideoEventTopicMessage" /> class.
 /// </summary>
 /// <param name="Id">A globally unique identifier for this communication..</param>
 /// <param name="State">State.</param>
 /// <param name="InitialState">InitialState.</param>
 /// <param name="Held">True if this call is held and the person on this side hears silence..</param>
 /// <param name="ErrorInfo">Detailed information about an error response..</param>
 /// <param name="Provider">The source provider of the email..</param>
 /// <param name="ScriptId">The UUID of the script to use..</param>
 /// <param name="PeerId">The id of the peer communication corresponding to a matching leg for this communication..</param>
 /// <param name="DisconnectType">System defined string indicating what caused the communication to disconnect. Will be null until the communication disconnects..</param>
 /// <param name="StartHoldTime">The timestamp the email was placed on hold in the cloud clock if the email is currently on hold..</param>
 /// <param name="ConnectedTime">The timestamp when this communication was connected in the cloud clock..</param>
 /// <param name="DisconnectedTime">The timestamp when this communication disconnected from the conversation in the provider clock..</param>
 /// <param name="ToAddress">Address and name data for a call endpoint..</param>
 /// <param name="FromAddress">Address and name data for a call endpoint..</param>
 /// <param name="Messages">The messages sent on this communication channel..</param>
 /// <param name="MessagesTranscriptUri">the messages transcript file uri..</param>
 /// <param name="Type">Indicates the type of message platform from which the message originated..</param>
 /// <param name="RecipientCountry">Indicates the country where the recipient is associated in ISO 3166-1 alpha-2 format..</param>
 /// <param name="RecipientType">The type of the recipient. Eg: Provisioned phoneNumber is the recipient for sms message type..</param>
 /// <param name="JourneyContext">A subset of the Journey System's data relevant to a part of a conversation (for external linkage and internal usage/context)..</param>
 /// <param name="Wrapup">Call wrap up or disposition data..</param>
 /// <param name="AfterCallWork">A communication's after-call work data..</param>
 /// <param name="AfterCallWorkRequired">Indicates if after-call is required for a communication. Only used when the ACW Setting is Agent Requested..</param>
 /// <param name="AgentAssistantId">UUID of virtual agent assistant that provide suggestions to the agent participant during the conversation..</param>
 public QueueConversationVideoEventTopicMessage(string Id = null, StateEnum?State = null, InitialStateEnum?InitialState = null, bool?Held = null, QueueConversationVideoEventTopicErrorDetails ErrorInfo = null, string Provider = null, string ScriptId = null, string PeerId = null, DisconnectTypeEnum?DisconnectType = null, DateTime?StartHoldTime = null, DateTime?ConnectedTime = null, DateTime?DisconnectedTime = null, QueueConversationVideoEventTopicAddress ToAddress = null, QueueConversationVideoEventTopicAddress FromAddress = null, List <QueueConversationVideoEventTopicMessageDetails> Messages = null, string MessagesTranscriptUri = null, TypeEnum?Type = null, string RecipientCountry = null, string RecipientType = null, QueueConversationVideoEventTopicJourneyContext JourneyContext = null, QueueConversationVideoEventTopicWrapup Wrapup = null, QueueConversationVideoEventTopicAfterCallWork AfterCallWork = null, bool?AfterCallWorkRequired = null, string AgentAssistantId = null)
 {
     this.Id                    = Id;
     this.State                 = State;
     this.InitialState          = InitialState;
     this.Held                  = Held;
     this.ErrorInfo             = ErrorInfo;
     this.Provider              = Provider;
     this.ScriptId              = ScriptId;
     this.PeerId                = PeerId;
     this.DisconnectType        = DisconnectType;
     this.StartHoldTime         = StartHoldTime;
     this.ConnectedTime         = ConnectedTime;
     this.DisconnectedTime      = DisconnectedTime;
     this.ToAddress             = ToAddress;
     this.FromAddress           = FromAddress;
     this.Messages              = Messages;
     this.MessagesTranscriptUri = MessagesTranscriptUri;
     this.Type                  = Type;
     this.RecipientCountry      = RecipientCountry;
     this.RecipientType         = RecipientType;
     this.JourneyContext        = JourneyContext;
     this.Wrapup                = Wrapup;
     this.AfterCallWork         = AfterCallWork;
     this.AfterCallWorkRequired = AfterCallWorkRequired;
     this.AgentAssistantId      = AgentAssistantId;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="QueueConversationVideoEventTopicChat" /> class.
 /// </summary>
 /// <param name="State">State.</param>
 /// <param name="Id">Id.</param>
 /// <param name="Provider">Provider.</param>
 /// <param name="ScriptId">ScriptId.</param>
 /// <param name="PeerId">PeerId.</param>
 /// <param name="RoomId">RoomId.</param>
 /// <param name="Held">Held.</param>
 /// <param name="DisconnectType">DisconnectType.</param>
 /// <param name="StartHoldTime">StartHoldTime.</param>
 /// <param name="ConnectedTime">ConnectedTime.</param>
 /// <param name="DisconnectedTime">DisconnectedTime.</param>
 /// <param name="JourneyContext">JourneyContext.</param>
 /// <param name="AdditionalProperties">AdditionalProperties.</param>
 public QueueConversationVideoEventTopicChat(StateEnum?State = null, string Id = null, string Provider = null, string ScriptId = null, string PeerId = null, string RoomId = null, bool?Held = null, DisconnectTypeEnum?DisconnectType = null, DateTime?StartHoldTime = null, DateTime?ConnectedTime = null, DateTime?DisconnectedTime = null, QueueConversationVideoEventTopicJourneyContext JourneyContext = null, Object AdditionalProperties = null)
 {
     this.State                = State;
     this.Id                   = Id;
     this.Provider             = Provider;
     this.ScriptId             = ScriptId;
     this.PeerId               = PeerId;
     this.RoomId               = RoomId;
     this.Held                 = Held;
     this.DisconnectType       = DisconnectType;
     this.StartHoldTime        = StartHoldTime;
     this.ConnectedTime        = ConnectedTime;
     this.DisconnectedTime     = DisconnectedTime;
     this.JourneyContext       = JourneyContext;
     this.AdditionalProperties = AdditionalProperties;
 }