InvergeDocs
.NETAPI reference

Models

Models in the .NET SDK.

SymbolKindSummary
BroadcastResultclassThe acknowledgement of a multi-room broadcast.
EmitResultclassThe acknowledgement of a realtime emit.
ErrorCaptureResultclassWhat became of a captured error.
FlagEvaluationclassEvery active flag resolved for one person.
IdentifyResultclassThe person created or updated by an identify call.
IvrInstructionclassOne step of an IVR flow, as a directive to act on.
IvrResultclassAn IVR flow's current step.
LiveActivityResultclassHow many devices a Live Activity reached, per platform.
NexusAckclassThe answer from an endpoint that only confirms it did the thing.
NexusEventclassOne analytics event, for a batch send.
NexusLogEntryclassOne log line, for a batch send.
NexusLogLevelenumSeverity of a Nexus log line.
NexusReplayEventclassOne replay event, as produced by a recorder.
NexusResultabstract classBase for the SDK's response types.
NexusStackFrameclassOne stack frame, as the console renders it.
PushSendResultclassThe outcome of a transactional push send.
RemoteConfigPublishResultclassA published Remote Config version.
RemoteConfigSnapshotclassA resolved Remote Config template: typed getters over the values the server evaluated for your context.
RemoteConfigValueclassOne resolved Remote Config parameter, with conversions.
RoomResultclassA registered realtime room.
RoomSchemaResultclassA room's payload schema and whether it is enforced.
SessionResultclassThe session a track call started or refreshed.
SurveyResponseResultclassThe stored survey response.
VoiceAccessTokenclassA short-lived media access token for joining the session's room.
VoiceCallResultclassA created call session.
VoiceDtmfResultclassThe result of sending a DTMF digit.
VoiceJoinBundleclassEverything a WebRTC client needs to join a call.
VoiceLegclassOne participant's leg of a call.
VoiceLegResultclassThe outcome of adding a leg to a call.
VoicePresenceResultclassAn identity's rolled-up presence after a heartbeat.
VoiceSessionclassA call session — the container every leg belongs to.
VoiceTurnCredentialclassShort-lived TURN relay credentials for the device to use.

BroadcastResult

class
class Inverge.Nexus.Models.BroadcastResult

The acknowledgement of a multi-room broadcast.

Count

property
int Count { get; }

How many rooms were emitted to. A message whose room name or event list was empty is skipped server-side, so this can be lower than what you sent.

Ok

property
bool Ok { get; }

Whether the broadcast was accepted.

Results

property
IReadOnlyList<JsonNode> Results { get; }

The per-room acknowledgements.

EmitResult

class
class Inverge.Nexus.Models.EmitResult

The acknowledgement of a realtime emit.

Events

property
IReadOnlyList<string> Events { get; }

The event names emitted.

Ok

property
bool Ok { get; }

Whether the emit was accepted.

Recipients

property
int Recipients { get; }

How many connected sockets received it. Zero is the signature of an environment mismatch — rooms are environment-scoped, so a subscriber using a key from another environment is never in the room you emitted to.

property
IReadOnlyList<string> Related { get; }

Linked rooms the message was also delivered to.

Room

property
string? Room { get; }

The room it went to.

Skipped

property
bool Skipped { get; }

Whether the environment's realtime limit dropped it.

ErrorCaptureResult

class
class Inverge.Nexus.Models.ErrorCaptureResult

What became of a captured error.

Three outcomes all arrive as a 2xx, and they are not the same thing: stored (Id set), dropped because the issue is marked ignored in the console (Ignored), or dropped because the environment hit its error limit (Skipped). An ignored issue is not billed.

GroupId

property
string? GroupId { get; }

The issue group it was folded into.

Id

property
string? Id { get; }

The stored occurrence's id, when it was stored.

Ignored

property
bool Ignored { get; }

Whether the issue is marked ignored, so the occurrence was dropped and not billed.

Skipped

property
bool Skipped { get; }

Whether the environment's error limit dropped it.

Stored

property
bool Stored { get; }

Whether the occurrence was actually stored.

FlagEvaluation

class
class Inverge.Nexus.Models.FlagEvaluation

Every active flag resolved for one person.

One evaluation covers every flag in the environment, so asking the result several questions costs one request. Calling IsEnabledAsync three times costs three.

Flags

property
IReadOnlyDictionary<string, JsonNode?> Flags { get; }

Flag keys mapped to their resolved value: a boolean for an on/off flag, the variant name for a multivariate one.

IsEmpty

property
bool IsEmpty { get; }

Whether any flag came back. An empty result usually means a usage cap.

Payloads

property
IReadOnlyDictionary<string, JsonNode?> Payloads { get; }

Flag keys mapped to their attached JSON payload.

Contains()

method
bool Contains(string key)

Whether the evaluation mentions a flag at all.

Parameters

Prop

Type

Returns bool

IsEnabled()

method
bool IsEnabled(string key)

Whether a flag is on — true for an enabled boolean flag, and for any resolved variant of a multivariate one.

Parameters

Prop

Type

Returns bool

Payload()

method
JsonNode? Payload(string key)

The flag's attached JSON payload, or null.

Parameters

Prop

Type

Returns JsonNode?

Variant()

method
string? Variant(string key)

The resolved variant of a multivariate flag, or null.

Parameters

Prop

Type

Returns string?

IdentifyResult

class
class Inverge.Nexus.Models.IdentifyResult

The person created or updated by an identify call.

DistinctId

property
string? DistinctId { get; }

The distinct id you identified them by.

Subject

property
JsonObject? Subject { get; }

The stored subject record.

SubjectId

property
string? SubjectId { get; }

Nexus's own id for the person.

IvrInstruction

class
class Inverge.Nexus.Models.IvrInstruction

One step of an IVR flow, as a directive to act on.

Transfers and queues are resolved server-side into a connect, so the client never has to know about queues or agent availability — it either gets somebody to call, or no_agents.

Action

property
string? Action { get; }

What to do: play, collect, voicemail, hangup, connect, no_agents or ended.

EndpointType

property
string? EndpointType { get; }

For connect: app, pstn or sip.

HasNoAgents

property
bool HasNoAgents { get; }

Whether a queue resolved to nobody being available.

IsConnect

property
bool IsConnect { get; }

Whether this instruction is telling you to place a call.

IsEnded

property
bool IsEnded { get; }

Whether the flow is over.

Raw

property
JsonObject Raw { get; }

The instruction as sent, including action-specific fields.

Reason

property
string? Reason { get; }

Why the flow ended, when it did.

To

property
string? To { get; }

For connect: the address or identity to call.

IvrResult

class
class Inverge.Nexus.Models.IvrResult

An IVR flow's current step.

Instruction

property
IvrInstruction? Instruction { get; }

What to do next.

SessionId

property
string? SessionId { get; }

The IVR session id, returned when the flow starts.

While the caller is still in the menu this is a synthetic id held in Redis — no call session exists in the database until the flow resolves to a connect, because only then is there a real call.

LiveActivityResult

class
class Inverge.Nexus.Models.LiveActivityResult

How many devices a Live Activity reached, per platform.

Android

property
int Android { get; }

Android devices reached.

Ios

property
int Ios { get; }

iOS devices reached.

IosTargets

property
int IosTargets { get; }

Start only: iOS devices registered for the activity type.

IosWarning

property
string? IosWarning { get; }

Start only: why iOS got fewer deliveries than targets — no registered devices, APNs not configured, or Apple's rejection. Null when all is well.

Total

property
int Total { get; }

Devices reached in total.

NexusAck

class
class Inverge.Nexus.Models.NexusAck

The answer from an endpoint that only confirms it did the thing.

Skipped is the one to watch. Several ingest endpoints answer {"skipped": true} with a 2xx when the environment has hit a usage limit — the call succeeded, and the data was not stored. Treating that as success hides a billing problem as missing data.

Ok

property
bool Ok { get; }

Whether the server acknowledged the call.

Skipped

property
bool Skipped { get; }

Whether the server accepted the call but stored nothing, usually a usage cap.

NexusEvent

class
class Inverge.Nexus.Models.NexusEvent

One analytics event, for a batch send.

NexusEvent

constructor
new NexusEvent(string name, object? properties = null, DateTimeOffset? timestamp = null)

Creates an event.

Parameters

Prop

Type

Name

property
string Name { get; }

The event name.

Properties

property
object? Properties { get; }

The event's properties.

Timestamp

property
DateTimeOffset? Timestamp { get; }

When it happened.

NexusLogEntry

class
class Inverge.Nexus.Models.NexusLogEntry

One log line, for a batch send.

NexusLogEntry

constructor
new NexusLogEntry(NexusLogLevel level, string message, string? source = null, object? context = null, DateTimeOffset? timestamp = null)

Creates a log entry.

Parameters

Prop

Type

Context

property
object? Context { get; }

Structured context attached to the line.

Level

property
NexusLogLevel Level { get; }

The severity.

Message

property
string Message { get; }

The message. Over-long messages are truncated server-side, not rejected.

Source

property
string? Source { get; }

Where it came from — a subsystem, a logger name.

Timestamp

property
DateTimeOffset? Timestamp { get; }

When it was written.

NexusLogLevel

enum
enum Inverge.Nexus.Models.NexusLogLevel

Severity of a Nexus log line.

ConstantDescription
const NexusLogLevel Debug = 1Developer detail.
const NexusLogLevel Error = 4An operation failed.
const NexusLogLevel Fatal = 5The process cannot continue.
const NexusLogLevel Information = 2Normal operation.
const NexusLogLevel Trace = 0Finest-grained detail.
const NexusLogLevel Warning = 3Something unexpected that did not break anything.

NexusReplayEvent

class
class Inverge.Nexus.Models.NexusReplayEvent

One replay event, as produced by a recorder.

NexusReplayEvent

constructor
new NexusReplayEvent(object payload)

Creates a replay event from an already-shaped payload.

Parameters

Prop

Type

FromPayloads()

static method
static IEnumerable<NexusReplayEvent> FromPayloads(IEnumerable<object> payloads)

Wraps a sequence of raw payloads.

Parameters

Prop

Type

Returns IEnumerable<NexusReplayEvent>

Payload

property
object Payload { get; }

The event payload.

NexusResult

abstract class
abstract class Inverge.Nexus.Models.NexusResult

Base for the SDK's response types.

Each result reads the fields the endpoint documents into typed properties and keeps the whole payload in Raw. That combination is deliberate: you get IntelliSense and compile-time names for the contract, and a field the server adds next month is reachable immediately without waiting for an SDK release.

HasPayload

property
bool HasPayload { get; }

Whether a response body arrived at all.

Raw

property
JsonNode? Raw { get; }

The decoded response, exactly as the API sent it. null when the response had no body, or when a silent client swallowed a failure.

NexusStackFrame

class
class Inverge.Nexus.Models.NexusStackFrame

One stack frame, as the console renders it.

NexusStackFrame

constructor
new NexusStackFrame(string? function, string? filename = null, int? lineNumber = null, string? contextLine = null)

Creates a frame.

Parameters

Prop

Type

ContextLine

property
string? ContextLine { get; }

The source line itself, when known.

Filename

property
string? Filename { get; }

The source file, when symbols were available.

Function

property
string? Function { get; }

The method, qualified by its declaring type.

LineNumber

property
int? LineNumber { get; }

The line number, when symbols were available.

PushSendResult

class
class Inverge.Nexus.Models.PushSendResult

The outcome of a transactional push send.

Failed

property
int Failed { get; }

How many were rejected. A steady non-zero count usually means stale tokens or provider credentials that need attention — the send itself still reports success.

Recipients

property
int Recipients { get; }

How many devices the audience resolved to.

Sent

property
int Sent { get; }

How many device deliveries the providers accepted.

RemoteConfigPublishResult

class
class Inverge.Nexus.Models.RemoteConfigPublishResult

A published Remote Config version.

CreatedAt

property
DateTimeOffset? CreatedAt { get; }

When it was published.

ETag

property
string ETag { get; }

The new version's ETag.

VersionNumber

property
int VersionNumber { get; }

The new version number.

RemoteConfigSnapshot

class
class Inverge.Nexus.Models.RemoteConfigSnapshot

A resolved Remote Config template: typed getters over the values the server evaluated for your context.

Conditions — platform, version, country, percentile, custom attributes — are evaluated server-side, so what arrives here is final. Nothing is decided locally except the in-app defaults you registered, which fill a key the template does not define.

Defaults

property
IReadOnlyDictionary<string, object?> Defaults { get; }

The in-app defaults in force for this snapshot.

ETag

property
string ETag { get; }

The ETag of the resolved result. It hashes the evaluated values, not just the template, so a changed context produces a new ETag rather than a false "not modified".

NotModified

property
bool NotModified { get; }

Whether the server said nothing changed since the ETag we sent.

Parameters

property
IReadOnlyDictionary<string, RemoteConfigValue> Parameters { get; }

The resolved parameters, by key.

Throttled

property
bool Throttled { get; }

Whether the environment hit its fetch limit. The values here are the last good ones plus your defaults — the server deliberately served and billed nothing.

Version

property
int Version { get; }

The published template version these values came from.

Contains()

method
bool Contains(string key)

Whether the key is defined by the template or by your defaults.

Parameters

Prop

Type

Returns bool

GetBoolean()

method
bool GetBoolean(string key, bool fallback = false)

A boolean parameter — the shape a kill switch takes.

Parameters

Prop

Type

Returns bool

GetInt32()

method
int GetInt32(string key, int fallback = 0)

An integer parameter.

Parameters

Prop

Type

Returns int

GetJson()

method
JsonNode? GetJson(string key, JsonNode? fallback = null)

A JSON parameter.

Parameters

Prop

Type

Returns JsonNode?

GetNumber()

method
double GetNumber(string key, double fallback = 0)

A numeric parameter.

Parameters

Prop

Type

Returns double

GetString()

method
string GetString(string key, string fallback = "")

A string parameter.

Parameters

Prop

Type

Returns string

SourceOf()

method
string? SourceOf(string key)

Which condition supplied a key's value, or null for the default.

Parameters

Prop

Type

Returns string?

ToDictionary()

method
IReadOnlyDictionary<string, JsonNode?> ToDictionary()

A flat key-to-value map, defaults merged underneath.

Returns IReadOnlyDictionary<string, JsonNode?>

Value()

method
RemoteConfigValue Value(string key)

The parameter, falling back to the in-app default you registered.

Parameters

Prop

Type

Returns RemoteConfigValue

RemoteConfigValue

class
class Inverge.Nexus.Models.RemoteConfigValue

One resolved Remote Config parameter, with conversions.

The conversions are forgiving on purpose: configuration is edited by people, and a parameter typed as a string in the console but read as a number here should still work rather than throwing in production.

HasValue

property
bool HasValue { get; }

Whether a value was resolved at all.

Key

property
string Key { get; }

The parameter key.

Source

property
string? Source { get; }

Which condition supplied the value, or null when it came from the parameter's default. Useful when a rollout is not behaving as expected.

Value

property
JsonNode? Value { get; }

The resolved value, as JSON.

ValueType

property
string? ValueType { get; }

The declared type: STRING, NUMBER, BOOLEAN or JSON.

AsBoolean()

method
bool AsBoolean(bool fallback = false)

The value as a boolean, reading "true", "1", "yes" and friends.

Parameters

Prop

Type

Returns bool

AsInt32()

method
int AsInt32(int fallback = 0)

The value as an int.

Parameters

Prop

Type

Returns int

AsInt64()

method
long AsInt64(long fallback = 0)

The value as a long.

Parameters

Prop

Type

Returns long

AsJson()

method
JsonNode? AsJson(JsonNode? fallback = null)

The value as JSON. A value stored as a JSON string is parsed, so a parameter typed STRING but holding {"a":1} still comes back usable.

Parameters

Prop

Type

Returns JsonNode?

AsNumber()

method
double AsNumber(double fallback = 0)

The value as a double.

Parameters

Prop

Type

Returns double

AsString()

method
string AsString(string fallback = "")

The value as a string.

Parameters

Prop

Type

Returns string

RoomResult

class
class Inverge.Nexus.Models.RoomResult

A registered realtime room.

Id

property
string? Id { get; }

The room's id, as used by the link and schema endpoints.

Name

property
string? Name { get; }

The room name, as joined by subscribers.

Room

property
JsonObject? Room { get; }

The room record.

Type

property
string? Type { get; }

The room type, when one was set.

RoomSchemaResult

class
class Inverge.Nexus.Models.RoomSchemaResult

A room's payload schema and whether it is enforced.

Enabled

property
bool Enabled { get; }

Whether validation is actually enforced. A schema can be attached and switched off, which is why these are two separate things.

Schema

property
JsonNode? Schema { get; }

The JSON Schema payloads must satisfy, when one is set.

SessionResult

class
class Inverge.Nexus.Models.SessionResult

The session a track call started or refreshed.

SessionId

property
string? SessionId { get; }

Nexus's id for the session.

SessionKey

property
string? SessionKey { get; }

The session key correlating this journey.

SubjectId

property
string? SubjectId { get; }

Nexus's id for the person the session belongs to.

SurveyResponseResult

class
class Inverge.Nexus.Models.SurveyResponseResult

The stored survey response.

Completed

property
bool Completed { get; }

Whether the response is marked complete.

Id

property
string? Id { get; }

The response id. Pass it back as responseId to keep appending answers to the same response instead of creating a second one.

Skipped

property
bool Skipped { get; }

Whether the environment's survey limit dropped it.

VoiceAccessToken

class
class Inverge.Nexus.Models.VoiceAccessToken

A short-lived media access token for joining the session's room.

ExpiresAt

property
DateTimeOffset? ExpiresAt { get; }

When the token stops working — minutes, not hours.

Raw

property
JsonObject Raw { get; }

The token record as sent.

Token

property
string? Token { get; }

The signed join token. Scoped to this one leg; do not cache or reuse it.

Url

property
string? Url { get; }

The media server URL to join.

VoiceCallResult

class
class Inverge.Nexus.Models.VoiceCallResult

A created call session.

Session

property
VoiceSession? Session { get; }

The new session.

SessionId

property
string? SessionId { get; }

The new session's id.

VoiceDtmfResult

class
class Inverge.Nexus.Models.VoiceDtmfResult

The result of sending a DTMF digit.

Ivr

property
IvrInstruction? Ivr { get; }

The next IVR step, when the session is inside a flow. null both when there is no IVR and when the flow has just ended.

Ok

property
bool Ok { get; }

Whether the digit was accepted.

VoiceJoinBundle

class
class Inverge.Nexus.Models.VoiceJoinBundle

Everything a WebRTC client needs to join a call.

Access

property
VoiceAccessToken? Access { get; }

The access token to join with.

Raw

property
JsonObject Raw { get; }

The bundle as sent.

Region

property
string? Region { get; }

The media region serving the call.

Room

property
string? Room { get; }

The media room name.

Turn

property
VoiceTurnCredential? Turn { get; }

The TURN configuration to use.

VoiceLeg

class
class Inverge.Nexus.Models.VoiceLeg

One participant's leg of a call.

Address

property
string? Address { get; }

The dialled address, for SIP and PSTN legs.

Direction

property
string? Direction { get; }

The leg's direction.

EndpointType

property
string? EndpointType { get; }

webrtc, sip, pstn or app.

Id

property
string? Id { get; }

The leg id. Every control call — ring, answer, hold, hangup, mute, transfer — is addressed by this.

IdentityId

property
string? IdentityId { get; }

The identity this leg rings, for app legs.

Raw

property
JsonObject Raw { get; }

The leg record as sent.

Role

property
string? Role { get; }

caller, callee, agent, supervisor, and so on.

SessionId

property
string? SessionId { get; }

The session this leg belongs to.

Status

property
string? Status { get; }

The leg's lifecycle status.

VoiceLegResult

class
class Inverge.Nexus.Models.VoiceLegResult

The outcome of adding a leg to a call.

This endpoint reports failure inside a successful response, which is the single most surprising thing about the Voice API. A blocked call, a missing outbound trunk and an unreachable media plane all arrive as 2xx with Error set, so that the SDK can end the call cleanly instead of treating a provisioning problem as a crash.

Check IsSuccess, or call EnsureSuccess to turn the in-body error into an exception.

Dialing

property
JsonObject? Dialing { get; }

For a pstn or sip leg, the room and number being dialled.

Error

property
string? Error { get; }

The in-body error code, when the leg did not come up: call_blocked (fraud policy refused it), no_outbound_trunk (no carrier configured for PSTN), media_unavailable (the media plane is unconfigured or unreachable).

HasNoOutboundTrunk

property
bool HasNoOutboundTrunk { get; }

Whether PSTN has no outbound carrier configured.

IsBlocked

property
bool IsBlocked { get; }

Whether the fraud policy refused the destination.

IsMediaUnavailable

property
bool IsMediaUnavailable { get; }

Whether the media plane could not provision the room.

IsSuccess

property
bool IsSuccess { get; }

Whether the leg is actually usable.

Join

property
VoiceJoinBundle? Join { get; }

The join bundle for a webrtc leg. Hand its token and TURN config to the device SDK.

Leg

property
VoiceLeg? Leg { get; }

The created leg, absent only when the call was blocked outright.

Reason

property
string? Reason { get; }

Why a blocked call was blocked.

RiskScore

property
double? RiskScore { get; }

The fraud risk score behind a call_blocked decision.

EnsureSuccess()

method
VoiceLegResult EnsureSuccess()

Returns this result, or throws if the leg did not come up.

Returns VoiceLegResult

VoicePresenceResult

class
class Inverge.Nexus.Models.VoicePresenceResult

An identity's rolled-up presence after a heartbeat.

Ok

property
bool Ok { get; }

Whether the heartbeat was accepted.

Status

property
string? Status { get; }

The identity's status across all its devices — not just the one that heartbeat. A person on a call on their phone is IN_CALL even while their laptop reports ONLINE.

VoiceSession

class
class Inverge.Nexus.Models.VoiceSession

A call session — the container every leg belongs to.

ApplicationId

property
string? ApplicationId { get; }

The voice application this session belongs to, when one was given.

Direction

property
string? Direction { get; }

inbound, outbound or internal.

Id

property
string? Id { get; }

The session id, which every leg and control call references.

Metadata

property
JsonObject? Metadata { get; }

Whatever metadata you attached at creation.

Raw

property
JsonObject Raw { get; }

The session record as sent.

RecordingMode

property
string? RecordingMode { get; }

disabled, mixed, dual_channel or per_track.

StartedAt

property
DateTimeOffset? StartedAt { get; }

When the session began.

Status

property
string? Status { get; }

The session's lifecycle status.

VoiceTurnCredential

class
class Inverge.Nexus.Models.VoiceTurnCredential

Short-lived TURN relay credentials for the device to use.

Credential

property
string? Credential { get; }

The TURN credential.

ExpiresAt

property
DateTimeOffset? ExpiresAt { get; }

When it expires.

Raw

property
JsonObject Raw { get; }

The credential record as sent.

TtlSeconds

property
int TtlSeconds { get; }

How long it is valid for.

Urls

property
IReadOnlyList<string> Urls { get; }

The relay URLs. An empty list means TURN is not configured on the backend — calls will still connect wherever a direct path exists and fail behind a symmetric NAT, which is a confusing way to learn about it.

Username

property
string? Username { get; }

The TURN username.

On this page

BroadcastResultCountOkResultsEmitResultEventsOkRecipientsRelatedRoomSkippedErrorCaptureResultGroupIdIdIgnoredSkippedStoredFlagEvaluationFlagsIsEmptyPayloadsContains()IsEnabled()Payload()Variant()IdentifyResultDistinctIdSubjectSubjectIdIvrInstructionActionEndpointTypeHasNoAgentsIsConnectIsEndedRawReasonToIvrResultInstructionSessionIdLiveActivityResultAndroidIosIosTargetsIosWarningTotalNexusAckOkSkippedNexusEventNexusEventNamePropertiesTimestampNexusLogEntryNexusLogEntryContextLevelMessageSourceTimestampNexusLogLevelNexusReplayEventNexusReplayEventFromPayloads()PayloadNexusResultHasPayloadRawNexusStackFrameNexusStackFrameContextLineFilenameFunctionLineNumberPushSendResultFailedRecipientsSentRemoteConfigPublishResultCreatedAtETagVersionNumberRemoteConfigSnapshotDefaultsETagNotModifiedParametersThrottledVersionContains()GetBoolean()GetInt32()GetJson()GetNumber()GetString()SourceOf()ToDictionary()Value()RemoteConfigValueHasValueKeySourceValueValueTypeAsBoolean()AsInt32()AsInt64()AsJson()AsNumber()AsString()RoomResultIdNameRoomTypeRoomSchemaResultEnabledSchemaSessionResultSessionIdSessionKeySubjectIdSurveyResponseResultCompletedIdSkippedVoiceAccessTokenExpiresAtRawTokenUrlVoiceCallResultSessionSessionIdVoiceDtmfResultIvrOkVoiceJoinBundleAccessRawRegionRoomTurnVoiceLegAddressDirectionEndpointTypeIdIdentityIdRawRoleSessionIdStatusVoiceLegResultDialingErrorHasNoOutboundTrunkIsBlockedIsMediaUnavailableIsSuccessJoinLegReasonRiskScoreEnsureSuccess()VoicePresenceResultOkStatusVoiceSessionApplicationIdDirectionIdMetadataRawRecordingModeStartedAtStatusVoiceTurnCredentialCredentialExpiresAtRawTtlSecondsUrlsUsername