This is the documentation of the generic JSON representation of innovaphone signaling messages. These messages are defined transport independent and are used inside different protocols implemented in the PBX, the Gateway or different Apps. These signaling messages can be mapped to SIP or H.323/EFC signaling.
{
"type": "Signaling message type",
"...": "more properties"
}
A property type identifies the signaling message. The names used here are based on the names defined in Q.931 ISDN signaling:
{
"type": "setup",
"bc": BearerCapability
"cg": EP,
"cd": EP,
"complete": DialingComplete,
"channel": Channel,
"fty": [Fty,Fty, ...],
"channels_cmd": ChannelsCmd,
"channels":Channels,
"faststart":Faststart,
"uui":UserUserInformation,
"llc":LowerLayerCompatibility,
"hlc":HigherLayerCompatibility,
"pi":ProgressIndicator,
"confId":ConferenceId,
"callId":CallId,
"dsp":Display
}
The setup message is used to start a call
{
"type": "accept"
"fty": [Fty,Fty, ...]
}
Used only together with some special supplementary services. See description there.
{
"type": "accept"
"cg": EP,
"cd": EP,
"complete": DialingComplete,
"dsp":Display
}
The info message is used for additional dialing information after a setup_ack message is received or for additional information like charging display information when the call is connected.
{
"type": "progress",
"inband_info": InbandInfo,
"cau":Cause
"pi":ProgressIndicator,
"channels_cmd": ChannelsCmd,
"channels":Channels,
"faststart":Faststart,
}
Maps to the ISDN PROGRESS message. It is used to report, that in-band information is# available in the call. Together with a cau property present it indicates that the call was disconnected.
{
"type": "call_proc",
"inband_info": InbandInfo,
"channel": Channel,
"channels_cmd": ChannelsCmd,
"channels":Channels,
"faststart":Faststart,
}
Maps to the ISDN PROGRESS message. It is used to report, that in-band information is# available in the call. Together with a cau property present it indicates that the call was disconnected.
{
"type": "alert",
"inband_info": InbandInfo,
"pi":ProgressIndicator,
"fty": [Fty,Fty, ...],
"channel": Channel,
"channels_cmd": ChannelsCmd,
"channels":Channels,
"faststart":Faststart,
}
Indicates that the called endpoint is alerting.
{
"type": "conn",
"uui":UserUserInformation,
"dsp":Display
"fty": [Fty,Fty, ...],
"channel": Channel,
"channels_cmd": ChannelsCmd,
"channels":Channels,
"faststart":Faststart,
}
Indicates that the called endpoint has connected the call.
{
"type": "disc",
"inband_info": InbandInfo,
"cau":Cause
"pi":ProgressIndicator,
"uui":UserUserInformation,
"dsp":Display
"fty": [Fty,Fty, ...],
}
Sent by a network component to indicate that the remote endpoint has disconnected the call, but still inband information may be available
{
"type": "rel",
"cau":Cause
"uui":UserUserInformation,
"dsp":Display
"fty": [Fty,Fty, ...],
}
Releases the call.
{
"type": "channels",
"channel": Channel,
"channels_cmd": ChannelsCmd,
"channels":Channels,
"faststart":Faststart,
}
Message used for media negotiation, if the information cannot be transported with another signaling message
{
"type": "facility",
"fty": [Fty,Fty, ...],
}
Used for facility objects if no other signaling message can be used.
{
"type": "user_info",
"uui":UserUserInformation,
}
Used for transparent user user information when a call is connected.
The ISDN Bearer Compatibility Information element as hex string. If not set an appropriate value has to be chosen for the Bearer Capability when sending the call to ISDN, based on channel. For calls without media channel (channel=0), a value of "a880" for calls with media channel a value of "8090a2" is recommended.
The H.323 callIdentifier. This identifies a single leg of a call.
{
"loc": "Location",
"num": "Cause"
}
The ISDN Cause information element. Used to report error conditions or the reason why a call was disconnected.
Integer value indicating the channel used for a call. For calls without media a value of 0 is used. For VOIP calls with media a value of -1 is used.
A boolean value, indicating that no more dialing information will be sent.
The H.323 conferenceID. This id is the same for all legs of a call.
{
"procedure": Diversion Procedure,
"remote_enabled": boolean
"served": EP
"diverted_to": EP
}
A string value identifying a call diversion procedure
ALWAYS | Call forward unconditional (CFU) |
BUSY | Call on busy (CFB) |
NO_ANSWER | Call forward on no response (CFNR) |
{
"num": "phone number",
"sip": "sip uri"
}
The EP object is used in general to address the endpoint of a call. The endpoint may be addressed by a phone number or by a sip uri.
R | Presentation Restricted number, which means this number should not be forward out of the system |
S | Subscriber number |
N | National number |
I | International number |
An array of FacilityObjects.
The ISDN Higher Layer Compatibility Information element as hex string. Only used together with ISDN signaling.
Boolean value, which indicates that inband info is availabe in the call.
The ISDN Lower Layer Compatibility Information element as hex string. Only used together with ISDN signaling.
Array of hex strings of ISDN Progress Indicator information elements. The hexstrings do not include the type and length field of the information elements. Only used together with ISDN signaling.
Defines the current activity. Allowed values are:
busy | The user is busy |
The contact URI defines where this presence information originates from. New presence information only overwrites the presence from the same contact URI. The following contact URIs are used by innovaphone
tel: | The presence is set on the phone |
im: | The presence is set on the client |
cal: | The presence is set by the calendar |
A note entered by the user
The status of the user in respect to the contact URI. This indicates if the device of the user with this contact URI is active. Allowed values are "open", "closed".
A string value defining a remote control operation. The following values are defined:
CONNECT | |
MULTICAST | |
ANNOUNCE | |
3PTY_TOGGLE | |
ACCEPT | |
CC_ON | |
CC_OFF | |
REC_ON | |
REC_OFF | |
3PTY_ON | |
3PTY_OFF | |
DTMF_DIGIT | |
ON_HOLD | |
MIC_ON | |
MIC_OFF | |
HANDSET | |
HEADSET | |
HANDSFREE | |
MONITOR_ON | |
MONITOR_OFF | |
INTRUDE_MONITOR | |
INTRUDE_CONFERENCE | |
RECEIVE_ON | |
RECEIVE_OFF | |
CONFERENCE_EXCLUSIVE_ON | |
CONFERENCE_EXCLUSIVE_OFF | |
KNOCK_ON | |
KNOCK_OFF | |
ACTIVATE_APP_HOME | |
ACTIVATE_APP_PHONE | |
ACTIVATE_APP_FAVS | |
ACTIVATE_APP_LIST | |
ACTIVATE_APP_DIR | |
ACTIVATE_APP_CONFIG | |
ACTIVATE_APP_CAMERA | |
HOLD | |
RETRIEVE |
The ISDN/H.323 User User Information as string. The protocol discriminator is not included and is assumed as hex 50. A maximimum length of 128 bytes is allowed.
{
"type": "Type of Facility element",
"...": "more properties"
}
Depending on the value of the type property, different objects are defined. The following types are defined:
{
"type": "ct_identify"
}
For a call transfer of two active calls, with this facility an id is requested from one active calls, which is sent to with ct_initiate to the other call.
{
"type": "ct_identify_result",
"id": unsigned id
"dst": EP
}
return the id requested by ct_identify
{
"type": "ct_initiate",
"id": unsigned id
"dst": EP
}
Initiate a call transfer, either to the other active call, which is identified by id, or if id is not found to a new call to dst
{
"type": "ct_initiate_result",
"error": unsigned error code
"cause": isdn cause code
}
Send when the call transfer is complete. This is either when it failed, then error is set and if available cause, or when it succeeded. For a blind transfer (no id), the transfer succeeded, when a call_proc, alert or conn from the new call is received
{
"type": "ct_setup",
"id": unsigned id
"dst": EP
}
Send with a new call created by a call transfer. id is the id sent with ct_initiate. dst identifies the endpoint which sent the ct_initiate
ct_setup_result{
"type": "ct_setup_result",
}
May be sent in response to ct_setup. No real meaning.
{
"type": "ct_complete",
"remote": EP
"remote_name": Remote Name Id,
"call_status": State of call,
"end":
}
Send to transferd endpoints to announce the new endpoint to which they are connected. call_status and end are not used.
{
"type": "diversion_interrogate",
"procedure": Diversion Procedure
"served": EP
"interrogating": EP
}
Used to interrogate the PBX for set call diversions.
{
"type": "diversion_interrogate_result",
"procedure": Diversion Procedure,
"error": error code if interrogate failed
"num": number of entries
"list": [Diversion Entry]
}
Returns a list of diversions
{
"type": "diversion_callreroute",
"last_rerouting": EP,
"called": EP,
"calling": EP,
"served": EP,
"reason": Diversion Procedure
}
Request the rerouting of the call
{
"type": "diversion_calldeflection"
}
Not implemented
{
"type": "diverting_leg1",
"reason": Diversion Procedure
"nominated": EP,
"redirecting": EP,
}
Send to the caller of an diverted call, when a diversion is performed
{
"type": "diverting_leg2",
"diverting": EP,
"original_called": EP,
"diverting_name": String,
"original_called_name": String
}
Send with the call to the new destination of the diversion
{
"type": "diverting_leg3",
"redirection": EP,
}
Sent to the caller of the diverted call, with the conn message
{
"type": "diverting_leg4",
"reason": Diversion Procedure,
"nominated": EP,
"redirecting": EP
}
On innovaphone PBX this message is only used to inform an endpoint about update of configured diversions, by sending this message without reason, nominated or redirecting property.
{
"type": "hold_notify"
}
Informs the endpoint that the peer endpoint of the call has initiated a hold
{
"type": "retrieve_notify"
}
Informs the endpoint that the peer endpoint of the call has initiated a retrieve
{
"type": "remote_hold",
}
Request the call to be held
{
"type": "remote_hold_result"
}
No real meaning, hold does not fail
{
"type": "remote_retrieve"
}
Request a held call to be retrieved
{
"type": "remote_retrieve_result"
}
No real meaning, retrieve does not fail
{
"type": "cp_park",
"parking": EP,
"parked": EP,
"parked_to": EP,
"park_position": unsigned
}
Used to park a call at a new destination. If initiated by an endpoint only parked_to is used to address the new endpoint
{
"type": "cp_group_indication_on",
"callId": CallId
"member": EP,
"parked_calling": EP,
"parked_to_alerting": EP,
"parked_to_alerting_ext": EP,
"park_position": unsigned,
"inbound_call": bool,
"duration": unsigned,
"name_id_calling": string,
"name_id_alerting": string,
"sig_call_state": unsigned
}
This object is used on configured group indication to announce a call that may be picked. This can either be a parked or an alerting call. On dialog sibscription calls, this object is used for any active calls at the monitored destination
{
"type": "cp_group_indication_off",
"callId": CallId,
"member": EP,
"clear_all": bool
}
On configured group indications, this message indicates, that the call is not in a state anymore in which it can be picked. For dialog subscriptions this message is sent, when the call was released.
{
"type": "cp_pick_req",
"callId": CallId,
"picking": EP,
"parked_calling": EP,
"parked_to_alerting": EP,
"park_position": unsigned
}
Send in a setup message of a no media call to request to pick a call. If successful the picked call will be sent with the facility pick_exe to the picking endpoint
{
"type": "cp_pick_exe",
"callId": CallId,
"picking": EP,
"parked_calling": EP
}
Sent with the setup of a picked call
{
"type": "call_waiting"
}
Included in a alert message if the call is waiting, which means another call is currently active at the called endpoint
{
"type": "mwi_activate",
"served_user": EP,
"message_center": EP,
"originating_user": EP,
"time": string,
"service": unsigned,
"number": unsigned,
"priority"
}
Send in a setup of a no media call to activate message waiting indication
{
"type": "mwi_deactivate",
"served_user": EP,
"message_center": EP,
"service": unsigned,
"call_back": unsigned
}
Send in a setup of a no media call to deactivate a message waiting indication
{
"type": "mwi_interrogate",
"served_user": EP,
"message_center": EP,
"service": unsigned,
"call_back": unsigned
}
Send in a setup of a no media call to interrogate active message waiting indications.
{
"type": "mwi_interrogate_result",
"sub": mwi_activate
}
Returns last mwi_activate
{
"type": "name_identification",
"name": string
}
Included in setup, alert or conn messages to indicate the display name of the sender
{
"type": "co_alerting"
}
?
{
"type": "presence_publish",
"status": Presence Status,
"activity": Presence Activity,
"note": Presence Note,
"contact": Presence Contact
}
This object is sent in a setup message of a no media call to publish a presence item
{
"type": "presence_subscribe"
}
This object is included in the setup message of a no media call to indicate, that this is a presence subscription
{
"type": "presence_notify",
"status": Presence Status,
"activity": Presence Activity,
"note": Presence Note,
"contact": Presence Contact
}
This object is sent in a facility message of a presence subscription call to indicate the current presence status.
{
"type": "dialog_info_subscribe"
}
This object is included in the setup message of a no media call to indicate, that this is a dialog info subscription. The dialog information is then sent with cp_group_indication objects in facility messages.
{
"type": "im_setup"
}
This object is included in the setup message of a no media call to indicate, that this is a instant messaging (chat) call.
{
"type": "im_message",
"sender": string,
"sender_dn": string,
"subject": string,
"participants": string,
"data"; string,
"attach": string,
"time": unsigned,
"typing": bool,
"mime": string,
"more": bool
}
This object is sent with a facility message within a instant messging call to transmit chat messages
{
"type": "cli_override"
}
If present in a call the PBX uses the calling line identification from the setup instead of replacing it by what is defined for the endpoint.
{
"type": "innovaphone_remote_control",
"control": Remote Control,
"digit": string
}
Maybe sent in signaling messages to perform remote control operations at the phone. Some operations may use digit as argument.
The channels_cmd property implements the SIP offer/answer as the H.323EFC Proposal/Select procedure. The basic idea is, that one side sends an offer for media descriptions (proposal) and the other side chooses supported media descriptions and sends these back as answer (select).
In addition to this basic procedure, media can be closed or one side can request an new offer from the other side.
This result in the following string values for the channels_cmd property:
NONE | No media negotiation is associated with this message |
SELECT | Select a media channels. The accompanied channels property must contain the answer |
PROPOSAL | Send a media offer (proposal), the accompanied channels property must contain the offer |
REQUEST | Request a new offer (proposal) |
CLOSE | Close all media channels |
{
"source": Source,
"id": Id,
"guid": GUID,
"key":Key,
"audio_rtcp_mux":Audio RTCP multiplxing,
"t38_rtcp_mux":T.38 RTCP multiplxing,
"video_rtcp_mux":Video RTCP multiplxing,
"collab_rtcp_mux":Collab RTCP multiplxing,
"audio_setup_role":Audio Setup Role,
"t38_setup_role":T.38 Setup Role,
"video_setup_role":Video Setup Role,
"collab_setup_role":Collab Setup Role,
"audio_ice":Audio ICE,
"t38_ice":T.38 ICE,
"video_ice":Video ICE,
"collab_ice":Collab ICE,
"ch":[Channel,...]
}
The Channels object is a complete media description for the call. Together with a channels_cmd of "PROPOSAL", it is a media offer (proposal) and together with a channels_cmd of "SELECT" it is a media answer (select).
This is a string defining the source of the media channels. Based on the source different modes of operations may be used in signaling entities. The following values are defined:
LOCAL | The channels are originating from a local physical interface like a ISDN or Conference channel. This is only used on an interface, where these channels are sent back to the same system (e.g. EpSignal). On a remote system the channels are useless, because no RTP entities are associated with these. |
REMOTE | Generic remote channels, from any kind of VOIP signaling. The remote side has RTP entities associated with these, so the channels can be terminated. |
RELAY | Used on interfaces where the channels are sent back to the same system (e.g. EpSignal) to switch both ends of the signaling in a Media Relay (RTP Proxy) mode. |
H323 | Same es REMOTE, but from a H.323 non EFC entity. This means that media re-negotiation is not possible. |
H323EFC | Same as REMOTE, but from a H.323EFC entity. Full media negotiation support. |
SKINNY | Obsolete. Reserved for the Cisco Skinny protocol. |
SIP | Same as REMOTE, but from a SIP entity. Full media negotiation support. |
An unsigned integer, as id of the channels (???/tac)
A hex string for a 16 bytes GUID, which identifies the system from which these channels originate. If this is forwared to the other end of the call it is used to detect if the call is terminated on the same system again, so that a local PCM connection may be switched.
{
"tag": SRTP tag as unsigned integer,
"mode": SRTP Mode,
"mki": MKI,
"mki_len": MKI length,
"b": hexstring of SRTP key,
}
The SRTP key used for the audio channel, in case no DTLS can be done.
Boolean value indicating the RTCP multiplexing can be done, meaning that RTP and RTCP is sent on the same UDP port. The side sending the offer can set this value to true if it supports RTCP multiplexing. The side sending the answer may send back a value of true in this case to turn on RTCP multiplexing.
This string property may be added, if not the default ICE setup role shall be used, which is defined by who is sending the offer and who the answer.
The following values are defined:
active | ???/tac/msc |
passive | ???/tac/msc |
actpass | ???/tac/msc |
holdconn | ???/tac/msc |
{
"lite": Only ICE lite support,
"fingerprint": ICE fingerprint as hexstring,
"usr": ICE authentication user,
"pwd": ICE authentication password,
"candidate": [Candidate, ...],
}
The ICE parameters for the respective channel
{
"addr": address,
"r_addr": ???/msc,
"rtp": ?,
"rtcp": ?,
"r_rtp": ?,
"r_rtcp": ?,
"rtp_prio": ?,
"rtcp_prio": ?,
"type": ?,
"foundation": ?
}
The ICE candiates, which where locally found and transmitted to the other side, so that ICE testing can find a matching pair.
{
"coder": Coder,
"number": Number ???/tac,
"xmit": xmit,
"rate": recv,
"addr": Media address,
"port": Media Port,
"mc_addr": Multicast address,
"mc_port": Multicast port,
"pt": Payload type,
"flags": Flags
}
G711A | G.711 A-Law |
G711u | G.711 u-Law |
G723-53 | G.723 using low bitrate |
G723-63 | G.723 using high bitrate |
G729 | G.729 |
G729A | G.729 reduced complexity |
G729B | G.729 including comfort noice updates |
G729AB | G.729 reduced complexity, with comfort noice upüdates |
T38UDP | T.38 Fax |
G722 | G.722 |
XPARENT | Bit transparent coder |
H264 | H.264 Video |
JRFB | Innovaphone Json Remote Frame Buffer protocol for application sharing |
OPUS-NB | Opus narrow band |
OPUS-WB | Opus wide band |
VPB | VP8 Video |
Array of H.323 faststart elements, coded as hex strings.