Click To Call
Schema
Click-to-call allows you to create URLs that can be POSTed to with a phone number or SIP URI and create a phone call from the provided contact information to a destination you have pre-determined.
Key | Description | Type | Default | Required | Support Level |
---|---|---|---|---|---|
auth_required | Determines if this click to call requires valid auth-tokens when invoked | boolean() | true | false | |
bypass_media | Default bypass media mode (The string type is deprecated, please use this as a boolean) | `boolean() | string(‘auto' | 'false' | 'true’)` |
caller_id_number | Explicitly set caller id number | string() | false | ||
custom_application_vars./[a-zA-Z0-9\-_]+/ | string() | false | |||
custom_application_vars | Key-value pairs to set as custom_application_vars on the channel | object() | {} | false | |
custom_sip_headers.in | Custom SIP Headers to be applied to calls inbound to Kazoo from the endpoint | #/definitions/custom_sip_headers | false | ||
custom_sip_headers.out | Custom SIP Headers to be applied to calls outbound from Kazoo to the endpoint | #/definitions/custom_sip_headers | false | ||
custom_sip_headers.^[a-zA-z0-9_\-]+$ | The SIP header to add | `string() | boolean() | integer()` | |
custom_sip_headers | A property list of SIP headers | object() | false | ||
dial_first | Determines what will be dialed first: extension or contact | `string(‘extension' | 'contact’)` | false | |
extension | The extension to connect to when the click to call is invoked | string() | true | ||
media.ignore_early_media | The option to determine if early media from the endpoint should always be ignored | boolean() | false | ||
media | object() | false | |||
music_on_hold.media_id | The ID of a media object that should be used as the music on hold | string(0..2048) | false | ||
music_on_hold.options.[] | `string(‘preserve-position' | 'random-start’)` | false | ||
music_on_hold.options | Options for playing music on hold | `array(string(‘preserve-position' | 'random-start’))` | false | |
music_on_hold | The music on hold parameters used if not a property of the device owner | object() | false | ||
name | A friendly name for the click to call | string(1..128) | true | ||
outbound_callee_id_name | Callee ID Name of the device calling out to the contact number | string() | false | ||
outbound_callee_id_number | Callee ID Number of the device calling out to the contact number | string() | false | ||
presence_id | Static presence ID (used instead of SIP username) | string() | false | supported | |
ringback | Ringback to use | string() | false | ||
throttle | The rate that this click to call can be invoked | integer() | false | ||
timeout | How long, in seconds, to wait for the call to progress | integer() | false | ||
whitelist.[] | string(1..) | false | |||
whitelist | A list of regular expressions that the click to call can dial to | array(string(1..)) | false |
custom_sip_headers
Custom SIP headers applied to an INVITE
Key | Description | Type | Default | Required | Support Level |
---|---|---|---|---|---|
^[a-zA-z0-9_\-]+$ | The SIP header to add | `string() | boolean() | integer()` |
List all clicktocall endpoints
GET /v2/accounts/{ACCOUNT_ID}/clicktocall
curl -v -X GET \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall
{
"auth_token":"{AUTH_TOKEN}",
"data": [
{
"extension": "{EXTENSION}",
"id": "{C2C_ID}",
"name": "{NAME}"
}
],
"node": "{NODE_HASH}",
"page_size": 1,
"request_id": "{REQUEST_ID}",
"revision": "{REVISION}",
"status": "success",
"timestamp": "{TIMESTAMP}",
"version": "4.3.1"
}
Create a clicktocall endpoint
PUT /v2/accounts/{ACCOUNT_ID}/clicktocall
curl -v -X PUT \
-H "Content-Type:application/json" \
-H "X-Auth-Token: {AUTH_TOKEN}" \
-d '{"data":{"name":"{NAME}, "auth_required":false, "extension":"{EXTENSION}"}}'
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall
{
"auth_token":"{AUTH_TOKEN}",
"data": {
"auth_required": false,
"custom_application_vars": {},
"extension": "{EXTENSION}",
"id": "{C2C_ID}",
"name": "{NAME}"
},
"node": "{NODE_HASH}",
"request_id": "{REQUEST_ID}",
"revision": "{REVISION}",
"status": "success",
"timestamp": "{TIMESTAMP}",
"version": "4.3.1"
}
Fetch
GET /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
curl -v -X GET \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
{
"auth_token":"{AUTH_TOKEN}",
"data": {
"auth_required": false,
"custom_application_vars": {},
"extension": "{EXTENSION}",
"id": "{C2C_ID}",
"name": "{NAME}"
},
"node": "{NODE_HASH}",
"request_id": "{REQUEST_ID}",
"revision": "{REVISION}",
"status": "success",
"timestamp": "{TIMESTAMP}",
"version": "4.3.1"
}
Change
POST /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
curl -v -X POST \
-H "Content-Type:application/json" \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
Patch
PATCH /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
curl -v -X PATCH \
-H "Content-Type:application/json" \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
Remove
DELETE /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
curl -v -X DELETE \
-H "Content-Type:application/json" \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}
Fetch
GET /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}/history
curl -v -X GET \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}/history
Execute the clicktocall with a supplied number
GET/POST /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}/connect
Non-blocking version
curl -v -X GET \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}/connect?contact={CONTACT}
Will return immediately with a 202
"data": {
"application_data": {
"route": "{CONTACT}"
},
"application_name": "transfer",
"continue_on_fail": true,
"custom_application_vars": {
"contact": "{CONTACT}"
},
"custom_channel_vars": {
"account_id": "{ACCOUNT_ID}",
"authorizing_id": "{C2C_ID}",
"authorizing_type": "clicktocall",
"auto_answer_loopback": true,
"from_uri": "{EXTENSION}@{ACCOUNT_REALM}",
"inherit_codec": false,
"loopback_request_uri": "{CONTACT}@{ACCOUNT_REALM}",
"request_uri": "{CONTACT}@{ACCOUNT_REALM}",
"retain_cid": true
},
"dial_endpoint_method": "single",
"endpoints": [
{
"invite_format": "loopback",
"route": "{EXTENSION}",
"to_did": "{EXTENSION}",
"to_realm": "{ACCOUNT_REALM}"
}
],
"export_custom_channel_vars": [
"Account-ID",
"Authorizing-ID",
"Authorizing-Type",
"Loopback-Request-URI",
"From-URI",
"Request-URI"
],
"ignore_early_media": true,
"loopback_bowout": "false",
"outbound_call_id": "c2c-{C2C_ID}-{RANDOM}",
"outbound_callee_id_name": "{EXTENSION}",
"outbound_callee_id_number": "{EXTENSION}",
"outbound_caller_id_name": "{C2C NAME}",
"outbound_caller_id_number": "{CONTACT}",
"simplify_loopback": "false",
"start_control_process": "false",
"timeout": 30
},
"node": "{NODE_HASH}",
"request_id": "{REQUEST_ID}",
"revision": "{REVISION}",
"status": "success",
"timestamp": "{TIMESTAMP}",
"version": "4.3.1"
}
Change
POST /v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}/connect
curl -v -X POST \
-H "Content-Type:application/json" \
-H "X-Auth-Token: {AUTH_TOKEN}" \
http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/clicktocall/{C2C_ID}/connect