This group of APIs enable CTI (Computer Telephony Integration) functionality to be able to control end-user calls. 

The APIs are authenticated using api tickets for Call Control (CALL_CONTROL) and also requires an end-user Cloud CTI API license.


Docs for this API can be found from https://www.setera.com/onecloud/enduser.html#tag/Call-Control


TABLE OF CONTENTS

API features

  • Make a call from device
  • Terminate a call
  • Hold call
  • Send DTMF digits
  • Move call
  • Hold & Resume call
More API features can be found from the API documentation



Enable Cloud CTI API for user

  1. Login to Onecloud enduser portal with your own credentials
  2. Go to admin view and edit users
  3. Select user from the list and enable Cloud CTI API license under "Allowed applications". Call control API is also required.
  4. Save settings


Create Remote Call Control API ticket

  1. Login to Onecloud enduser portal with your own credentials
  2. Choose Home
  3. Choose Tickets
  4. Add Name to the API ticket and choose Call control and User info
  5. Click Create ticket
  6. Copy Token from new granted ticket


Example with Softphone

Fetch available devices for user

Query list of active user devices. This is done via User Device Information API: https://www.setera.com/onecloud/enduser.html#operation/getUserDeviceShortlist


Example request

curl -XGET
'https://onecloud.setera.com/api/device/info/v1/shortlist/setera.com/aki.huolman?t=970.VDplZTEwY2E3ZWE0YzZmZjY4'

Example JSON response

[{
    "deviceId": "0.+35840XXXXXXX",
    "deviceType": "MOBILE",
    "deviceName": "+35840XXXXXXX",
    "deviceIcon": "DEFAULT"
  },
  {
    "deviceId": "2.c688705a-c4e7-4195-8cf6-fd581744c695",
    "deviceType": "SOFTPHONE",
    "deviceName": "Setera OneCloud (Desktop)",
    "deviceIcon": "DEFAULT"
  }
]

Copy deviceId value for deviceType "SOFTPHONE". 
This value is needed in the next step where we initiate the call.


Make a call from Softphone

Check API docs from https://www.setera.com/onecloud/enduser.html#operation/makeCall


Example request

curl -XPOST 'https://onecloud.setera.com/api/call/control/v1/make/setera.com/aki.huolman/2.c688705a-c4e7-4195-8cf6-fd581744c695?t=970.VDplZTEwY2E3ZWE0YzZmZjY4' \
--header 'Content-Type: application/json' \
--data-raw '{
  "destination": "tel:+358201500800",
  "userLine": {
    "type": "OFFICE_FIXED",
    "groupId": 0
  }
}'

Example response

{
    "stateToken": 2132470538953411,
    "callId": "4c8aa092-d969-4e1d-8833-e88ef4dcbee3",
    "userId": "aki.huolman@setera.com",
    "remoteParty": {
        "partyId": "5732.970@fnr",
        "type": "FUNCTION_NUMBER_ID",
        "telUri": "tel:+358201500800",
        "displayName": null,
        "displayNumber": "358201500800"
    },
    "participants": [],
    "conference": false,
    "historyInfo": {
        "subject": null,
        "acdSupport": null,
        "campOn": false,
        "initialParty": null,
        "previousParty": null,
        "previousRetargetReason": null
    },
    "inbound": false,
    "status": "INITIATED",
    "event": null,
    "eventDescription": null,
    "duration": 0,
    "recordable": false,
    "recording": null,
    "recordingDuration": null,
    "externalRecording": null,
    "externalRecordingDuration": null,
    "externalRecordingPaused": null,
    "deviceIds": [
        "2.c688705a-c4e7-4195-8cf6-fd581744c695"
    ],
    "actions": []
}

Screenshot from Softphone GUI