2. Product description
2. Product description
The CTI API is an API designed for server/server communication. It is compatible with any device, e.g. hardphone, softphone or the mobile app. The supported features include call control, call event streams and device management.
The CTI API was developed in order to develop customised integration solutions based on the API. This includes the integration of third-party applications with the following features, for example:
- Contact Pop Up
When an incoming call is received, a CRM system is opened based on the incoming call number. Depending on the customer's requirements, the contact window can be opened when the phone rings, after the call has been answered or by an action (e.g. hotkey). - Contact Preview
When a call comes in, a pop-up appears with the name of the phone number that was read from a CRM system. This information can be enriched with further information from the CRM system, such as the number of open tickets. - Synchronising line status
To display the availability of employees transparently, the line status can be read out and displayed in a customised overview. The NFON Line Status can also be enriched with information from other communication applications (MS Teams, Slack) or calendars (MS Office, Google Calendar). - Start/end call
With CTI API, calls can be started or ended directly. This enables calls to be started and ended from CRM systems.
The following use cases are also possible in principle:
- Action URL
Based on the CTI API, ‘Action URL’ can be developed for incoming calls, answered calls and ended calls. - Customised ringtones
The API can be used to use dedicated ringtones for internal, external or VIP calls. In this case, it makes sense to mute Cloudya or the corresponding device. - Call Analytics
If the streamed events (see ‘Stream call details’) are saved, important information can be read from them. However, it must be noted that the status of the individual extensions is not transmitted when the API is initially connected.
Restriction:
The CTI API was designed for incoming and outgoing calls. For incoming calls, there is the special feature that the CTI API has only been tested and released for incoming calls that arrive directly at an extension. Functions such as group calls, skill-based calls or upstream queues are currently not supported. Call scenarios in which a call is forwarded and conferences with several participants are also not supported. Only one device may be assigned to each extension.
It is planned to change the authentication procedure. This breaking change will be announced in advance and must be implemented within the specified time.
2.1 Overview of functions
The most important functions are listed below:
- Read out extension configuration ‘Get /extension/phone/data’
With this endpoint it is possible to obtain an overview of all configured extensions of a K system. This includes both the number and the name assigned to the extension. - Read out line status ‘Get /extensions/phone/states’
This endpoint allows you to read out the line status for each extension. This allows the respective availability status for each extension to be displayed in third-party applications. When connecting for the first time, the status of all configured extensions is displayed. - Start call ‘Post /extensions/phone/calls’
This endpoint initiates a call for an extension. The call is first made to the A number and after acceptance the call is established to the B number. The user can individually specify which end device rings for the user of the A number. A UUID is returned as the return code for this endpoint, which can be used to end calls. - End call ‘Delete /extensions/phone/calls/{uuid}’
Ends a call initiated via the API using the returned UUID. - Stream call details ‘Get /extensions/phone/calls’
This endpoint enables the streaming of all incoming and outgoing telephone events of a K system in real time. The restrictions must be taken into account in complex environments. When connecting for the first time, unlike the endpoint for reading the line status (see above Read out line status), the current status of all extensions is not displayed.