public XElement ToXML()
{
XNamespace ns = m_dialogXMLNS;
XNamespace ss = m_sipsorceryXMLNS;
XElement eventDialogElement = new XElement(ns + "dialog",
new XAttribute("id", ID),
new XElement(ns + "state", State)
);
// Add the optional information if available.
if (!CallID.IsNullOrBlank())
{
eventDialogElement.Add(new XAttribute("call-id", CallID));
}
if (!LocalTag.IsNullOrBlank())
{
eventDialogElement.Add(new XAttribute("local-tag", LocalTag));
}
if (!RemoteTag.IsNullOrBlank())
{
eventDialogElement.Add(new XAttribute("remote-tag", RemoteTag));
}
if (Direction != SIPEventDialogDirectionEnum.none)
{
eventDialogElement.Add(new XAttribute("direction", Direction));
}
if (StateCode != 0)
{
eventDialogElement.Element(ns + "state").Add(new XAttribute("code", StateCode));
}
if (StateEvent != SIPEventDialogStateEvent.None)
{
eventDialogElement.Element(ns + "state").Add(new XAttribute("event", StateEvent.ToString()));
}
if (Duration != 0)
{
eventDialogElement.Add(new XElement(ns + "duration", Duration));
}
if (BridgeID != null)
{
eventDialogElement.Add(new XElement(ss + "bridgeid", BridgeID));
}
if (SwitchboardOwner != null)
{
eventDialogElement.Add(new XElement(ss + "switchboardowner", SwitchboardOwner));
}
//if (LocalParticipant != null) { eventDialogElement.Add(LocalParticipant.ToXML("local", filter)); }
if (LocalParticipant != null)
{
eventDialogElement.Add(LocalParticipant.ToXML("local"));
}
//if (RemoteParticipant != null) { eventDialogElement.Add(RemoteParticipant.ToXML("remote", filter)); }
if (RemoteParticipant != null)
{
eventDialogElement.Add(RemoteParticipant.ToXML("remote"));
}
return(eventDialogElement);
}