IPbxApi is a task-oriented interface that allows app services to access PBX data and functionality.
    
    CreatePbxApi
    This function creates a IPbxApi object that will be connected to a given IJsonApiConnection, typically an AppWebsocket.
    
        Return value
        The IPbxApi instance. The object is owned by the IJsonApiConnection and is deleted automatically when the connection is closed. So the application should never delete it.
    
    
    Classes
    IPbxApi
    class IPbxApi {
public:
    virtual ~IPbxApi() {};
    virtual class ITask * CreateSetPresence(const char * guid, const char * sip, const char * contact, const char * activity, const char * note) = 0;
    virtual class IPbxApiPresenceSubscription * CreatePresenceSubscription(const char * sip, const char * num, const char * sourceSip = 0) = 0;
    virtual class IPbxApiTaskGetNodeInfo * CreateGetNodeInfo(const char * pbx, const char * domain) = 0;
};
    Overview
    The interface of the PBX API. It provides functions to create several tasks that can be used to communicate with the PBX.
    Public functions
    CreateSetPresence
    
        Creates an ITask that sets the presence for a given contact of a given user.
        Parameters
        
            
                | const char * guid | 
                
                    The GUID of the affected user object. (guid or sip must be specified)
                 | 
            
            
                | const char * sip | 
                
                    The SIP URI of the affected user object. (guid or sip must be specified)
                 | 
            
            
                | const char * contact | 
                
                    The contact string of the presence (e.g. tel:)
                 | 
            
            
                | const char * activity | 
                
                    A SIP activity string (e.g. away, busy, lunch, vacation, dnd, ...). If not set the activity will be displayed as "available".
                 | 
            
            
                | const char * note | 
                
                    A free text describing details about the activity.
                 | 
            
        
        Return value
        An ITask object that implements the presence change.
    
    CreatePresenceSubscription
    
        Creates a presence subscription for a given SIP URI or phone number.
        Parameters
        
            
                | const char * sip | 
                
                    The SIP URI of the monitored user. (sip or num must be specified)
                 | 
            
            
                | const char * number | 
                
                    The phone number of the monitored user. (sip or num must be specified)
                 | 
            
            
                | const char * sourceSip | 
                
                    Can be specified if the monitoring should be done on behalf of a specific user. Otherwise the subscription is done on behalf of the app object of the app instance.
                 | 
            
        
        Return value
        An IPbxApiPresenceSubscription object that implements the presence subscription.
    
	CreateGetNodeInfo
	
		Creates an ITask that retrieves some node configuration info.
		Parameters
		
			
                | const char * pbx | 
				
					The pbx argument as received within a PbxInfo message.
				 | 
			
			
                | const char * domain | 
				
					The domain argument as received within a PbxInfo message.
				 | 
			
		
		Return value
		An IPbxApiTaskGetNodeInfo object.
	
    IPbxApiPresenceSubscription
    class IPbxApiPresenceSubscription : public ITask {
public:
    virtual ~IPbxApiPresenceSubscription() {}
    virtual void Start(class UTask * user) = 0;
    virtual void Stop() = 0;
    virtual bool IsUp() = 0;
    virtual const char * GetSip() = 0;
    virtual const char * GetDn() = 0;
    virtual const char * GetNum() = 0;
    virtual const char * GetEmail() = 0;
    virtual class IPbxApiPresence * GetPresence() = 0;
};
    Overview
    This class implements a presence subscription using the ITask interface. It produces a TaskProgress callback on each update with one of the following values:
    
        - PBX_API_PROGRESS_SUBSCIPTION
 
        - 
            The state of the presence subscription changed. This could be if the presence subscription goes up or down or if the remote endpoint information changed.
        
 
        - PBX_API_PROGRESS_PRESENCE
 
        - 
            The presence information has changed.
        
 
    
    Public functions
    Start
    
        Starts the presence subscription. The specified UTask will get the TaskProgress callback on any changes or TaskFailed on a fatal error.
        Parameters
        
            
                | class UTask * user | 
                
                    The UTask object that shall receive the callbacks.
                 | 
            
        
    
    Stop
    
        Stops the presence subscription. The UTask will get the TaskComplete callback, when the presence subscription has terminated.
    
    IsUp
    
        Tells if the presence monitor is up or down. All the other info is just available, if the presence monitor is up.
        Return value
        true if the presence monitor is up. false if it is down.
    
    GetSip
    
        Return value
        The SIP URI of the monitored endpoint.
    
    GetCn
    
        Return value
        The common name of the monitored endpoint.
    
    GetDn
    
        Return value
        The display name of the monitored endpoint.
    
    GetNum
    
        Return value
        The phone number of the monitored endpoint.
    
    GetEmail
    
        Return value
        The email address of the monitored endpoint.
    
    GetPresence
    
        Return value
        A pointer to an IPbxApiPresence object that contains the list of presence entries, or null if there are none.
    
    IPbxApiPresence
    class IPbxApiPresence {
public:
    virtual const char * GetContact() = 0;
    virtual const char * GetStatus() = 0;
    virtual const char * GetActivity() = 0;
    virtual const char * GetNote() = 0;
    virtual class IPbxApiPresence * GetNext() = 0;
};
    Overview
    The user can have a list of presence entries that consist of a contact ("tel:"), a status ("open" or "closed"), an activity ("away", "busy", etc) and a note.
    The IPbxApiPresence object represents a single entry with a pointer to the next entry in the list.
    Please note that object is volatile. The application should not store any pointers to it but copy the needed information.
    Public functions
    GetContact
    
        Return value
        The contact string of the presence entry (e.g. "tel:") or NULL.
    
    GetStatus
    
        Return value
        The status string of the presence entry ("open", "closed") or NULL.
    
    GetActivity
    
        Return value
        The activity string of the presence entry ("away", "busy", etc) or NULL.
    
    GetNote
    
        Return value
        The note string of the presence entry or NULL.
    
    GetNext
    
        Return value
        The next IPbxApiPresence object in the list or NULL if there is none.
    
	IPbxApiTaskGetNodeInfo
	class IPbxApiTaskGetNodeInfo : public ITask {
public:
	virtual const char * GetName() = 0;
	virtual const char * GetPrefixIntl() = 0;
	virtual const char * GetPrefixNtl() = 0;
	virtual const char * GetPrefixSubs() = 0;
	virtual const char * GetAreaCode() = 0;	
	virtual const char * GetCountryCode() = 0;
};
	Overview
	A PBX node's configuration can be read upon completion.
	Public functions
	GetName
	
		Return value
		The node's name.
	
	GetPrefixIntl
	
		Return value
		The node's prefix for international numbers.
	
	GetPrefixNtl
	
		Return value
		The node's prefix for national numbers.
	
	GetPrefixSubs
	
		Return value
		The node's prefix for subscriber numbers.
	
	GetAreaCode
	
		Return value
		The node's configured area code, e.g. 30 for Berlin.
	
	GetCountryCode
	
		Return value
		The node's configured country code, e.g. 49 for germany.