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"}
    ]
}