The RCC protocol is available on AppWebsocket connections to innovaphone PBX objects, if
the object is enabled for the RCC api.
The protocol allows the monitoring of users based on group configuration or based on
explicit configuration, which can be deployed in config templtes. For monitored users
all calls are indicated
For the monitored users call control functions are available, including call initiation,
call connect, forwarding, transfer, hold, retrieve, park and more.
The protocol is designed based on the PBX SOAP API
{
"api": "RCC",
"src": string,
"mt": string,
}
- api
-
To address this interface the value "RCC" 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
Operations are perfored with a message exchange with message sent to the PBX wit a mt identifying
the operation and a result message, with the same mt but "Result" added. For example
Initialize/InitializeResult. The src property from the original message is sent back in the
Result message
There are messages sent assynchronously from the PBX. These messages end on "Info". Such messages
are only sent if requested by a operation initiated by the application. The src property in these
messages is set to the src sent in the requesting message.
This operation is used to monitor which users are visible to the applications. There are two
modes available.
- Users by group
-
This mode is set by sending the boolean property "grp" set tru true in the Initialize message.
All users which are members in groups, in which the object used to connect to the PBX is active
member, are visible.
-
Visible members are automatically sent before the InitializeResult message and update are sent
whenever the users or groups are changed afterwards.
-
This mode is useful for a limited number of users, e.g. 50
- Users by explicit configuration
-
This mode is available, if an App object is used to connect to the PBX. All users which
have configured access to this App are visible.
-
All users are sent before the InitializeResult message. Only a limited number of users
is sent within one timer tick of 20ms. By default this limit is 50. Because of this
updates to users may already sent while the initial list is still transmitted.
Properties
- grp:bool
-
Switches on the users by group mode in case of an App object
- limit:integer
-
Limits the number of users sent with a 20ms timer tick. Maximum is 50.
- calls
-
If set to true, all PBX calls are inicated using the messages "CallAdd", "CallDelete"
and "CallUpdate".
This option is only availabe on AppWebsocket conections to an App Object so that not
any user can read all PBX calls.
Retrieve the list of devices of a given user
Properties
- cn:string
-
common name of the user
Result
- devices:[device]
-
Array of the devices.
Start monitoring of a user
Properties
- cn:string
-
common name of the user
- xfer:bool
-
Monitor transfered calls as well
- disc:bool
-
Clear calls to phone with DISC instead of RELEASE. This way the call remains active as long
as the phone is not onhook.
- hw:string
-
Select a specific device to monitor
Result
- user:integer
-
The handle which can be used for the other User... requests.
- prefixIntl:string
-
Prefix to be used to dial an international number from this node, including any trunk prefix
- prefixNtl:string
-
Prefix to be used to dial a national number from this node, including any trunk prefix
- prefixSubs:string
-
Prefix to be used to dial a subscriber number from this node, including any trunk prefix
- area:string
-
Area code to be assumed for the user
- country:string
-
Country code to be assumed for the user
- mobile:object
-
If hw identifies a mobile endpoint, this is a object with the information about the
mobile endpoint
This message is used to sent updates for calls
- user:integer
-
Handle of the user
- call:integer
-
Handle of the call
- conf:string
-
Conference Id of the call. This is a guid which identifies all call legs belonging to the same call
- state:integer
-
State
- peer:connector
-
Identifies the peer of the call, which may be called or calling party
- no:[connector]
-
More endpoints related to the same call, like diverting, transfering, ...
- msg
-
Name of signaling message related to this update
- dtmf:string
-
received DTMF event
- info:object
-
Additional call information
Example:
{
"mt":"CallInfo",
"api":"RCC",
"user":1,
"call":2,
"state":6,
"peer":{"e164":"444","h323":""},
"msg":"r-disc",
"info":[
{"type":"cause","vali":1,"vals":"Unallocated (unassigned) number"}
]
}
End the monitoring of a user
Properties
- user:integer
- Handle of the user
Initiate an outgoing call
Properties
- user:integer
- Handle of the user
- ftyNoCF:bool
-
Send the call with a innovaphone proprietary facility to override any configured call diversion
- audio:bool
-
Initiate an audio call instead of a voice call. On ISDN networks this prohibits the use of speech
compression, which would affect modem protocols.
- rc:integer
- e164:string
- cn:string
- h323:string
- srce164:string
Result
- call:integer
-
Handle of the call, which can be used with the other requests to control calls.
Clear a call
Properties
- call:integer
- cause:integer
Connect a call present at the phone
Properties
- call:integer
Send a remote control code to the phone
Properties
- call:integer
- rc:integer
Send overlap dialing info
Properties
- call:integer
- cdpn:string
- key:string
- dsp:string
Send DTMF digits
Properties
- call:integer
- recv:bool
- dtmf:string
Send User User Info
Properties
- call:integer
- recv:bool
- uui:string
Transfer to call legs
Properties
- a:integer
- b:integer
Properties
- a:integer
- b:integer
- user:bool
- peer:bool
Properties
- user:integer
- call:integer
- cn:string
Properties
- call:interger
-
The handle of the new resulting call
Properties
- call:integer
- rc:integer
- cn:string
- h323:string
- e164:string
Result
- error:string
-
Indicating an error if the operation failed
Properties
- call:integer
- cn:string
- h323:string
- e164:string
Result
- error:string
-
Indicating an error if the operation failed
Properties
- call:integer
- info
Properties
- call:integer
- e164:string
- h323:string
Properties
- call:integer
- remote:bool
-
If added with value true, no MOH is played to local endpoint. Otherwise MOH is played to both endpoints (local and remote).
Properties
- call:integer
Result
- call:integer
-
The call handle of the parked call
Properties
- call:integer
- cn:string
- position:integer
This message is used to send update to users
- update:string
-
Present if not the initial transmition. A value of "del" indicates a deleted user.
- guid:string
-
Hexstring of the users guid
- cn:string
-
common name
- dn:string
-
display name
- h323:string
-
H.323 Id/SIP URI
- e164:string
-
Extension number
- node:string
-
Numbering Node
- pbx:string
-
PBX
- pseudo:string
-
Type of user
- regs[regInfo]
{
"api": "RCC",
"src": string,
"mt": "CallAdd",
"guid": hexstring,
"cn": string,
"call": unsigned,
"state": unsigned,
"conf-id": hexstring,
"call-id": hexstring
}
Indicates that a call was added on the PBX
- src
- The src value from the Initialize
- guid
- The guid of the user
- cn
- The cn of the user
- state
-
The call state 0 - init, 1 - setup, 2 - setup-ack, 3 - call-proc, 4 - alert, 5 - conn,
6 - disc-sent, 7 - disc-received, 8 -parked
-
Add 128 for outgoing, add 256 for hold, add 512 for held, add 1024 for waiting
- conf-id
- The conference ID
- call-id
- The call ID
{
"api": "RCC",
"src": string,
"mt": "CallDel",
"call": unsigned,
}
Indicates the call was deleted from the PBX
{
"api": "RCC",
"src": string,
"mt": "CallUpdate",
"call": unsigned,
"msg": string,
"local": endpoint,
"remote": endpoint
}
- msg
-
A message indicating the change of state
- local
-
The local peer inside the PBX with number adjusted
-
The remote endpoint connected to the user object with normalized number
Common data objects used by the different messages
- hw:string
-
The hardware id identifying the registered device
- hw:string
-
The hardware id identifying the device
- text:string
-
Text which is display in the user interface whenever the device has to be identified
to the user
Common data object used for information to the endpoint of a connection
- type
-
Type of the connector
- cn
-
The Long Name of the object/user
- dn
-
The display name of the endpoint
- h323
-
H323/SIP id of the endpoint
- e164
-
Number of the endpoint
- norm
-
Normalized number
Information about a monitored mobile endpoint
- e164
-
The configured mobile number
- h323
-
The configured H323/SIP name of mobile endpoint
- off
-
True if mobile endpoint is configured off.
{
"h323": string,
"e164": string
}
The addressing information identifying an endpoint
- h323
-
SIP-URI/H323-ID
- e164
-
The phone number
Additional call information.
- type
-
The info type: cause, uui
- vali
-
Integer value
- vals
-
String value
Example:
{
"info":[
{"type":"cause","vali":1,"vals":"Unallocated (unassigned) number"}
]
}