Show / Hide Table of Contents

Class SIPDialogue

See "Chapter 12 Dialogs" in RFC3261.

Inheritance
System.Object
SIPDialogue
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: SIPSorcery.SIP
Assembly: SIPSorcery.dll
Syntax
public class SIPDialogue
Remarks

The standard states that there are two independent CSeq's for a dialogue: one for requests from the UAC and for requests from the UAS. In practice it's been noted that if a UAS (initial UAS) sends an in-dialogue request with a CSeq less than the UAC's CSeq it can cause problems. To avoid this issue when generating requests the remote CSeq is always used.

Constructors

| Improve this Doc View Source

SIPDialogue()

Declaration
public SIPDialogue()
| Improve this Doc View Source

SIPDialogue(SIPRequest, String)

This constructor is used to create non-INVITE dialogues for example the dialogues used in SIP event interactions where the dialogue is created based on a SUBSCRIBE request.

Declaration
public SIPDialogue(SIPRequest nonInviteRequest, string toTag)
Parameters
Type Name Description
SIPRequest nonInviteRequest
System.String toTag
| Improve this Doc View Source

SIPDialogue(UACInviteTransaction)

This constructor is used by client user agents or SIP elements acting in a client user agent role. When acting as a client user agent the local fields are contained in the From header and the remote fields are in the To header.

Declaration
public SIPDialogue(UACInviteTransaction uacInviteTransaction)
Parameters
Type Name Description
UACInviteTransaction uacInviteTransaction
| Improve this Doc View Source

SIPDialogue(UASInviteTransaction)

This constructor is used by server user agents or SIP elements acting in a server user agent role. When acting as a server user agent the local fields are contained in the To header and the remote fields are in the From header.

Declaration
public SIPDialogue(UASInviteTransaction uasInviteTransaction)
Parameters
Type Name Description
UASInviteTransaction uasInviteTransaction
| Improve this Doc View Source

SIPDialogue(String, SIPRouteSet, SIPUserField, SIPUserField, Int32, SIPURI, String, String, Guid, String, String, SIPEndPoint)

Declaration
public SIPDialogue(string callId, SIPRouteSet routeSet, SIPUserField localUser, SIPUserField remoteUser, int cseq, SIPURI remoteTarget, string localTag, string remoteTag, Guid cdrId, string sdp, string remoteSDP, SIPEndPoint remoteEndPoint)
Parameters
Type Name Description
System.String callId
SIPRouteSet routeSet
SIPUserField localUser
SIPUserField remoteUser
System.Int32 cseq
SIPURI remoteTarget
System.String localTag
System.String remoteTag
System.Guid cdrId
System.String sdp
System.String remoteSDP
SIPEndPoint remoteEndPoint

Fields

| Improve this Doc View Source

DialogueState

Declaration
public SIPDialogueStateEnum DialogueState
Field Value
Type Description
SIPDialogueStateEnum
| Improve this Doc View Source

logger

Declaration
protected static ILogger logger
Field Value
Type Description
Microsoft.Extensions.Logging.ILogger
| Improve this Doc View Source

ReinviteDelay

Used as a flag to indicate whether to send an immediate or slightly delayed re-INVITE request when a call is answered as an attempt to help solve audio issues.

Declaration
public int ReinviteDelay
Field Value
Type Description
System.Int32

Properties

| Improve this Doc View Source

BridgeId

Declaration
public Guid BridgeId { get; set; }
Property Value
Type Description
System.Guid
| Improve this Doc View Source

CallDurationLimit

Declaration
public int CallDurationLimit { get; set; }
Property Value
Type Description
System.Int32
| Improve this Doc View Source

CallId

Declaration
public string CallId { get; set; }
Property Value
Type Description
System.String
| Improve this Doc View Source

CDRId

Declaration
public Guid CDRId { get; set; }
Property Value
Type Description
System.Guid
| Improve this Doc View Source

ContentType

Declaration
public string ContentType { get; }
Property Value
Type Description
System.String
| Improve this Doc View Source

CSeq

Declaration
public int CSeq { get; set; }
Property Value
Type Description
System.Int32
| Improve this Doc View Source

DialogueName

Declaration
public string DialogueName { get; }
Property Value
Type Description
System.String
| Improve this Doc View Source

Direction

Indicates whether the dialogue was created by a ingress or egress call.

Declaration
public SIPCallDirection Direction { get; set; }
Property Value
Type Description
SIPCallDirection
| Improve this Doc View Source

Id

Declaration
public Guid Id { get; set; }
Property Value
Type Description
System.Guid
| Improve this Doc View Source

Inserted

Declaration
public DateTime Inserted { get; set; }
Property Value
Type Description
System.DateTime
| Improve this Doc View Source

LocalTag

Declaration
public string LocalTag { get; set; }
Property Value
Type Description
System.String
| Improve this Doc View Source

LocalUserField

Declaration
public SIPUserField LocalUserField { get; set; }
Property Value
Type Description
SIPUserField
| Improve this Doc View Source

ProxySendFrom

Declaration
public string ProxySendFrom { get; set; }
Property Value
Type Description
System.String
| Improve this Doc View Source

RemoteCSeq

Declaration
public int RemoteCSeq { get; set; }
Property Value
Type Description
System.Int32
| Improve this Doc View Source

RemoteSDP

Declaration
public string RemoteSDP { get; set; }
Property Value
Type Description
System.String
| Improve this Doc View Source

RemoteSIPEndPoint

Declaration
public SIPEndPoint RemoteSIPEndPoint { get; set; }
Property Value
Type Description
SIPEndPoint
| Improve this Doc View Source

RemoteTag

Declaration
public string RemoteTag { get; set; }
Property Value
Type Description
System.String
| Improve this Doc View Source

RemoteTarget

Declaration
public SIPURI RemoteTarget { get; set; }
Property Value
Type Description
SIPURI
| Improve this Doc View Source

RemoteUserField

Declaration
public SIPUserField RemoteUserField { get; set; }
Property Value
Type Description
SIPUserField
| Improve this Doc View Source

RouteSet

Declaration
public SIPRouteSet RouteSet { get; set; }
Property Value
Type Description
SIPRouteSet
| Improve this Doc View Source

SDP

Declaration
public string SDP { get; set; }
Property Value
Type Description
System.String
| Improve this Doc View Source

TransferMode

Declaration
public SIPDialogueTransferModesEnum TransferMode { get; set; }
Property Value
Type Description
SIPDialogueTransferModesEnum

Methods

| Improve this Doc View Source

GetInDialogRequest(SIPMethodsEnum, SIPURI)

Builds a basic SIP request with the header fields set to correctly identify it as an in dialog request. Calling this method also increments the dialog's local CSeq counter. This is safe to do even if the request does not end up being sent.

Declaration
public SIPRequest GetInDialogRequest(SIPMethodsEnum method, SIPURI target = null)
Parameters
Type Name Description
SIPMethodsEnum method

The method of the SIP request to create.

SIPURI target

Optional. If set this will be set as the in-dialog request URI instead of the dialogue's remote target field. The primary purpose of setting a custom target is to allow an application to attempt to deal with IPv4 NATs.

Returns
Type Description
SIPRequest

An in dialog SIP request.

| Improve this Doc View Source

Hangup(SIPTransport, SIPEndPoint, SIPURI)

Generates a BYE request for this dialog and forwards it to the remote call party. This has the effect of hanging up the call.

Declaration
public void Hangup(SIPTransport sipTransport, SIPEndPoint outboundProxy, SIPURI target = null)
Parameters
Type Name Description
SIPTransport sipTransport

The transport layer to use for sending the request.

SIPEndPoint outboundProxy

Optional. If set an end point that the BYE request will be directly forwarded to.

SIPURI target

Optional. If set this will be set as the in-dialog request URI instead of the dialogue's remote target field. The primary purpose of setting a custom target is to allow an application to attempt to deal with IPv4 NATs.

Extension Methods

JSONWriter.ToJson(Object)
  • Improve this Doc
  • View Source
In This Article
Back to top Generated by DocFX