EpSignal

The EpSignal protocol is available on AppWebsocket connections to innovaphone PBX objects, if the object is enabled for the EpSignal api. It allows an application to insert itself into the signaling path of this device. All signaling messages to or from the device are then sent on this protocol. Signaling messages may be sent to the device or to the PBX.

This way the application may monitor any signaling done by the device, by forwarding the messages in both directions, or it may start signaling to the device or to the PBX on behalf of the device.

General structure

{
    "api": "EpSignal",
    "src": string,
    "mt": string,
}

api
To address this interface the value "EpSignal" has tp be used for the api property
src
The AppWebsocket src mechanism is supported on the interface. So a src property may be used
mt
The message type identifies the requested operation
Messages to the PBX Messages from the PBX
Objects - recurring definitions

Attach

{
    "api": "Api",
    "mt": "Attach",
    "hw": HardwareId
}

With this message the application attaches itself to a device addressed by hw

hw
Hardware Id used to address the device. This is the name also used for the VOIP registration of a device. Typically the MAC address of the device.

AttachResult

{
    "api": "EpSignal",
    "mt": "AttachResult",
    "err": Error,
    "stun": string,
    "turn": string,
    "turnUsr": string,
    "turnPwd": string,
    "prefixIntl":string,
    "prefixNtl":string,
    "prefixSubs":string,
    "area":string,
    "country":string,
    "maxIntern":integer,
    "tones":integer
}

Result of the Attach operation

err
If this property is present the Attach operation failed.
stun
A list of STUN servers as IP addresses or host names, seperated by semicolon
turn
A list of TURN servers as IP addresses or host names, seperated by semicolon
turnUsr
The user name to be used with TURN
turnPwd
The password to be used with TURN
prefixIntl
Prefix to be used to dial an international number from this node, including any trunk prefix
prefixNtl
Prefix to be used to dial a national number from this node, including any trunk prefix
prefixSubs
Prefix to be used to dial a subscriber number from this node, including any trunk prefix
area
Area code to be assumed for the user
country
Country code to be assumed for the user
maxIntern:integer
Maximum length of internal number
tones:integer
The tones scheme to be used for dialtones

Attached

{
    "api": "EpSignal",
    "mt": "Attached",
}

Indicates that the interface attached itself to a device. This may be delayed if no device was registered to the PBX at the time of the Attach. As soon as a device registers the interface attaches to it.

Detached

{
    "api": "EpSignal",
    "mt": "Detached",
}

Indicates that the interface detached itself from a device. This happens when the device unregisters from the PBX.

Sync

{
    "api": "EpSignal",
    "mt": "Sync",
    "call": CallId,
    "info": Info
}

Information about an existing call at at the time of the attach.

call
The call Id, which may be used for signaling messages related to this call.
info
More information about the call.

Signaling

{
    "api": "EpSignal",
    "mt": "Signaling",
    "to": Direction,
    "call": CallId,
    "sig": Signal
}

This message is used to transfer Signaling messages coded according to the innovaphone Json signaling protocol.

to
Boolean property, which if present and true indicates that the message is in the direction to the endpoint. For messages received by the application this means the message is from the PBX. For messages sent by the application the message is sent toward the device.
call
Integer which identifies the call. To avoid conflicts a negativ number should be chosen for any call originating from the application. For messages received by the application the number received can be used when forwarding the message.
sig
The signaling message as innovaphone Signaling object.

Objects

Signal

For the signaling messages the standard innovaphone Json Signaling objects are used

Info

More information about the call

{
    "channel": Channel,
    "in": Direction,
    "state": CallState,
    "remote": Remote
}
channel
Integer indicating the channel number. If this is a call without media, channel is 0. For VOIP endpoints a channel with media is always signaled with a channel of -1.
in
Boolean value indicating the direction of the call as seen from the device. A value of true means an incoming call, this means a call to the device.
state
A string indicating the state of the call. The following values are used:
nullIdle call, should not happen
setupA call was initiated
setup-ackA call was initiated, but more dialing information may be needed
call-procDialing information is complete
alertThe called party alerted
connectedThe call is connected
disconnectedThe remote party disconnected the call
disconnectingThe local device disconnected the call
parkedThe call was parked
remote
The remote party of the call
Remote

Information about the remote party of a call

{
    "num": Number,
    "sip": SipUri,
    "dn": DisplayName,
}
num
The Number as dialed to the remote party, or received as calling party
sip
SIP URI of the remote party. May be only the user part if on local domain
dn
Display name of the remote party, as received with a Name Identification facility