Skip to content

Call Channels#

About Call Channels#

The Channels API allows queries to find active channels for an account, a user, or a device. Given a call-id for a channel, a limited set of commands are allowed to be executed against that channel (such as hangup, transfer, or play media).

NOTE: Konami is an outdated and unsupported 2600Hz module. If you need support on this module, please ensure you are signed up for Konami Pro.

Fetch active channels system wide.#

Note

For super duper admin only. Be sure to set system_config->crossbar.channels->system_wide_channels_list flag to true

GET /v2/channels

curl -v -X GET \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    http://{SERVER}:8000/v2/channels

Fetch active channels for an account#

GET /v2/accounts/{ACCOUNT_ID}/channels

curl -v -X GET \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/channels
{
    "auth_token": "{AUTH_TOKEN}",
    "data": [
        {
            "answered": true,
            "authorizing_id": "63fbb9ac78e11f3ccb387928a423798a",
            "authorizing_type": "device",
            "destination": "user_zu0bf7",
            "direction": "outbound",
            "other_leg": "d220c187-e18edc42-bab2459d@10.26.0.91",
            "owner_id": "72855158432d790dfb22d03ff64c033e",
            "presence_id": "user_zu0bf7@account.realm.com",
            "timestamp": 63573977746,
            "username": "user_zu0bf7",
            "uuid": "dab25c76-7479-4ed2-ba92-6b725d68e351"
        }
    ],
    "request_id": "{REQUEST_ID}",
    "revision": "{REVISION}",
    "status": "success"
}

Fetch channels for a user or device#

GET /v2/accounts/{ACCOUNT_ID}/users/{USER_ID}/channels

For user with {USER_ID}:

curl -v -X GET \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/users/{USER_ID}/channels

For device with {DEVICE_ID}:

GET /v2/accounts/{ACCOUNT_ID}/devices/{DEVICE_ID}/channels

curl -v -X GET \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/devices/{DEVICE_ID}/channels

Fetch a channel's details#

GET /v2/accounts/{ACCOUNT_ID}/channels/{UUID}

curl -v -X GET \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/channels/{UUID}

Execute an application against a Channel#

Note

This API requires Konami Pro to be running and metaflows to be enabled on the call

POST /v2/accounts/{ACCOUNT_ID}/channels/{UUID}

curl -v -X POST \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -d '{"data": {"action": "transfer", "target": "2600", "takeback_dtmf": "*1", "moh": "media_id" }}' \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/channels/{UUID}

Available action values are transfer, hangup, break, callflow, and intercept.

Transfer#

curl -v -X POST \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -d '{"data":{"module":"transfer","data":{"target":"2600","Transfer-Type":"blind","leg":"bleg"}},"action":"metaflow"}' \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/channels/{UUID}
Key Description Type Default
leg Defines which leg of the call to take action against string('self' | 'bleg') self
target Extension/DID to transfer the {UUID} string()
transfer-type What type of transfer to perform string('attended' | 'blind') blind
moh Music on hold to play while transferring string()

Put a feature (metaflow) on a channel#

Note

This API requires Konami Pro to be running and metaflows to be enabled on the call

PUT /v2/accounts/{ACCOUNT_ID}/channels/{UUID}

curl -v -X PUT \
    -H "Content-Type: application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -d '{"action":"metaflow", "data": {"data": { "module": "hangup" }}}' \
    http://{SERVER}:8000/v2/accounts/{ACCOUNT_ID}/channels/{UUID}

The Metaflow feature is a metaflow object which validates with its corresponding JSON schema.

Reasoning#

The POST action requires that every Metaflow action would have to be coded into the module.

Benefits#

The Metaflow feature allows adding new types of Metaflows without changing the code. It also allows full Metaflows and not only single actions, i.e., the children node is also processed.