NAV
php bash javascript

Info

Welcome to the generated API reference. Get Postman Collection

Автодозвон

Список автодозвонов

Возвращает автодозвоны компании со списком назначенных на них операторов


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/dialers/stat',
    [
        'query' => [
            'api_token' => 'delectus',
            'dialer_id' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/dialers/stat?api_token=delectus&dialer_id=1" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/dialers/stat"
);

let params = {
    "api_token": "delectus",
    "dialer_id": "1"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "34": {
        "id": 34,
        "name": "робот",
        "status_id": 8,
        "status_ru": "Ожидание задач",
        "status_eng": "no_phones",
        "state": "enabled",
        "operators": [
            {
                "id": 4402,
                "name": "Андрей",
                "status_id": 0,
                "status_ru": "Отключен",
                "status_eng": "offline",
                "skill": 1
            },
            {
                "id": 296,
                "name": "Андрей",
                "status_id": 0,
                "status_ru": "Отключен",
                "status_eng": "offline",
                "skill": 1
            }
        ]
    }
}

HTTP Request

GET api/v1/dialers/stat

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
dialer_id optional Номер автодозвона.

Список автодозвонов (компактный)

Возвращает автодозвоны компании


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/dialers/list',
    [
        'query' => [
            'api_token' => 'voluptatem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/dialers/list?api_token=voluptatem" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/dialers/list"
);

let params = {
    "api_token": "voluptatem"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

[
    {
        "id": 34,
        "name": "робот",
        "status_id": 8,
        "status_ru": "Ожидание задач",
        "status_eng": "no_phones",
        "state": "enabled"
    },
    {
        "id": 7,
        "name": "тестовый автодозвон",
        "status_id": 0,
        "status_ru": "Остановлен",
        "status_eng": "stop",
        "state": "enabled"
    }
]

HTTP Request

GET api/v1/dialers/list

POST api/v1/dialers/list

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя

Добавление задачи(номера) в обзвон

Список временных зон можно посмотреть тут - https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. Столбец - TZ database name


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/dialers/create_task',
    [
        'query' => [
            'api_token' => 'sit',
            'dialer_id' => '1',
            'phones' => '12345,122344',
            'contact_id' => '1',
            'bp_id' => '1',
            'date' => '21.02.2017 12:00:00',
            'import_id' => '1',
            'priority' => '1',
            'region' => 'Europe/Kiev',
            'ttl' => '3600',
            'user_id' => '1',
            'details' => '{“name”:”John”, “order”:”12”}',
            'force_create' => 'false',
            'task_id' => '1234',
            'reset_task_id' => '1234',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/dialers/create_task?api_token=sit&dialer_id=1&phones=12345%2C122344&contact_id=1&bp_id=1&date=21.02.2017+12%3A00%3A00&import_id=1&priority=1&region=Europe%2FKiev&ttl=3600&user_id=1&details=%7B%E2%80%9Cname%E2%80%9D%3A%E2%80%9DJohn%E2%80%9D%2C+%E2%80%9Corder%E2%80%9D%3A%E2%80%9D12%E2%80%9D%7D&force_create=false&task_id=1234&reset_task_id=1234" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/dialers/create_task"
);

let params = {
    "api_token": "sit",
    "dialer_id": "1",
    "phones": "12345,122344",
    "contact_id": "1",
    "bp_id": "1",
    "date": "21.02.2017 12:00:00",
    "import_id": "1",
    "priority": "1",
    "region": "Europe\/Kiev",
    "ttl": "3600",
    "user_id": "1",
    "details": "{\u201cname\u201d:\u201dJohn\u201d, \u201corder\u201d:\u201d12\u201d}",
    "force_create": "false",
    "task_id": "1234",
    "reset_task_id": "1234"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "Task added",
    "status": "success",
    "task_id": 124,
    "valid_phones": "3801111111,38050333333"
}

HTTP Request

GET api/v1/dialers/create_task

POST api/v1/dialers/create_task

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
dialer_id required Номер автодозвона.
phones optional Номера телефонов (максимум 10) через запятую.
contact_id optional Номер контакта из CRM Oki-Toki.
bp_id optional Номер процесса из CRM Oki-Toki.
date optional Время на которое назначаются звонки.
import_id optional Номер импорта.
priority optional Приоритет от 0 до 2.
region optional Регион в формате временной зоны.
ttl optional Время жизни задачи, в секундах.
user_id optional Номер пользователя на которого назначить задачу. Если указано -1, то задача будет назначена на текущего пользователя.
details optional json Подстрока с дополнительной информацией.
force_create optional В любом случае создавать задачу и отменять конфликтующие с ней.
task_id optional Номер задачи в автообзвоне, к которой добавить указанные телефоны.
reset_task_id optional Номер задачи в автообзвоне, которую надо снова поставить в работу.

Удаление задачи(номера) из обзвона

Возможно комбинировать необязательные параметры между собой, тогда будут удалятся разные задачи. Например: можно удалить все задачи с конкретным номером телефона, или с деталями.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/dialers/cancel_task',
    [
        'query' => [
            'api_token' => 'tempore',
            'dialer_id' => '1',
            'task_id' => '1234',
            'phone' => '12345',
            'contact_id' => '1',
            'bp_id' => '1',
            'details' => '{“name”:”John”, “order”:”12”}',
            'cancel_phone' => 'false',
            'cancel_reason' => 'wrong_number',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/dialers/cancel_task?api_token=tempore&dialer_id=1&task_id=1234&phone=12345&contact_id=1&bp_id=1&details=%7B%E2%80%9Cname%E2%80%9D%3A%E2%80%9DJohn%E2%80%9D%2C+%E2%80%9Corder%E2%80%9D%3A%E2%80%9D12%E2%80%9D%7D&cancel_phone=false&cancel_reason=wrong_number" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/dialers/cancel_task"
);

let params = {
    "api_token": "tempore",
    "dialer_id": "1",
    "task_id": "1234",
    "phone": "12345",
    "contact_id": "1",
    "bp_id": "1",
    "details": "{\u201cname\u201d:\u201dJohn\u201d, \u201corder\u201d:\u201d12\u201d}",
    "cancel_phone": "false",
    "cancel_reason": "wrong_number"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "canceled",
    "status": "success",
    "tasks": [
        124,
        1236
    ]
}

HTTP Request

GET api/v1/dialers/cancel_task

POST api/v1/dialers/cancel_task

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
dialer_id required Номер автодозвона.Если 0 - то удаляет со всех автодозвонов.
task_id optional Номер задачи.
phone optional Номер телефона, который есть в задаче.
contact_id optional Номер контакта из CRM Oki-Toki.
bp_id optional Номер процесса из CRM Oki-Toki.
details optional json Подстрока с дополнительной информацией.Отменяются задачи в которых есть заданная дополнительная информация.
cancel_phone optional Если true, то отменяет только указанный номер телефона.
cancel_reason optional Причина отмены.

Полная очистка автодозвона


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/dialers/clear_dialer',
    [
        'query' => [
            'api_token' => 'voluptas',
            'dialer_id' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/dialers/clear_dialer?api_token=voluptas&dialer_id=1" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/dialers/clear_dialer"
);

let params = {
    "api_token": "voluptas",
    "dialer_id": "1"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "Dialer cleared",
    "status": "success"
}

HTTP Request

GET api/v1/dialers/clear_dialer

POST api/v1/dialers/clear_dialer

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
dialer_id required Номер автодозвона.

Массовое добавление задач в автодозвон


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/imports/tasks/add',
    [
        'query' => [
            'api_token' => 'autem',
            'dialer_id' => '1',
            'data' => [
                '38034432345',
            ],
            'import_name' => 'New import',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/imports/tasks/add?api_token=autem&dialer_id=1&data%5B0%5D=38034432345&import_name=New+import" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/imports/tasks/add"
);

let params = {
    "api_token": "autem",
    "dialer_id": "1",
    "data": [
        "38034432345"
    ],
    "import_name": "New import"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "status": "success"
}

HTTP Request

GET api/v1/imports/tasks/add

POST api/v1/imports/tasks/add

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя.
dialer_id required Номер автодозвона.
data.* required Номера телефонов.
import_name optional Имя создаваемого импорта.

Массовое удаление задач из автодозвона


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/imports/tasks/delete',
    [
        'query' => [
            'api_token' => 'architecto',
            'dialer_id' => '1',
            'data' => [
                '38034432345',
            ],
            'import_name' => 'New import',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/imports/tasks/delete?api_token=architecto&dialer_id=1&data%5B0%5D=38034432345&import_name=New+import" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/imports/tasks/delete"
);

let params = {
    "api_token": "architecto",
    "dialer_id": "1",
    "data": [
        "38034432345"
    ],
    "import_name": "New import"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "status": "success"
}

HTTP Request

GET api/v1/imports/tasks/delete

POST api/v1/imports/tasks/delete

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя.
dialer_id required Номер автодозвона.
data.* required Номера телефонов.
import_name optional Имя создаваемого импорта.

Звонки

Получение записи разговора

Отдает запись разговора(файл в бинарном формате)


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/record/111222',
    [
        'query' => [
            'api_token' => 'pariatur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/record/111222?api_token=pariatur" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/record/111222"
);

let params = {
    "api_token": "pariatur"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

HTTP Request

GET api/v1/record/{session_id}

URL Parameters

Parameter Status Description
session_id required Номер звонка.

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя

Добавление данных о звонке

Если данные добавляются повторно, то они добавляются к уже ранее добавленным. Если значение какого то параметра будет пустым, то это параметр удалится из набора данных


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/call/add_data',
    [
        'query' => [
            'api_token' => 'perferendis',
            'session_id' => '123456',
            'some_field' => 'some_data',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/call/add_data?api_token=perferendis&session_id=123456&some_field=some_data" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/call/add_data"
);

let params = {
    "api_token": "perferendis",
    "session_id": "123456",
    "some_field": "some_data"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "Data added",
    "session_id": "123456"
}

HTTP Request

GET api/v1/call/add_data

POST api/v1/call/add_data

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
session_id required Номер звонка.
some_field optional Поле.

Получение данных о звонке


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/call/get_data',
    [
        'query' => [
            'api_token' => 'voluptate',
            'session_id' => '123456',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/call/get_data?api_token=voluptate&session_id=123456" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/call/get_data"
);

let params = {
    "api_token": "voluptate",
    "session_id": "123456"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "Call data",
    "session_id": 123456,
    "data": [],
    "crm_data": []
}

HTTP Request

GET api/v1/call/get_data

POST api/v1/call/get_data

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
session_id required Номер звонка.

Получение стенограммы разговора

Отдает стенограмму разговора, если она была создана


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/record-transcript/get',
    [
        'query' => [
            'api_token' => 'rerum',
            'session_id' => '111222',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/record-transcript/get?api_token=rerum&session_id=111222" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/record-transcript/get"
);

let params = {
    "api_token": "rerum",
    "session_id": "111222"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "done": true,
    "items": [
        {
            "text": "Алло",
            "channel": 1,
            "start_time": 3.81
        }
    ]
}

HTTP Request

GET api/v1/record-transcript/get

POST api/v1/record-transcript/get

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
session_id required Номер звонка.

Создание стенограммы разговора

Запускает создание стенограммы разговора, если она еще не была создана. Иначе - отдает стенограмму разговора


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/record-transcript/create',
    [
        'query' => [
            'api_token' => 'dolorum',
            'session_id' => '111222',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/record-transcript/create?api_token=dolorum&session_id=111222" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/record-transcript/create"
);

let params = {
    "api_token": "dolorum",
    "session_id": "111222"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "done": true,
    "items": [
        {
            "text": "Алло",
            "channel": 1,
            "start_time": 3.81
        }
    ]
}

HTTP Request

GET api/v1/record-transcript/create

POST api/v1/record-transcript/create

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
session_id required Номер звонка.

Совершение звонка

При выполнении данного API-запроса будет автоматически совершен звонок из операторского места на номер указанный в запросе. Необходимым условием является открытое в браузере операторское место. Операторсоке место должно быть подключено и пользоваетель не должен быть занят другим звонком.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://noname.oki-toki.net/api/operator/make_call',
    [
        'query' => [
            'api_token' => 'et',
            'phone' => '380501111111',
            'queue_id' => '1',
            'skip_anketa' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X POST \
    "https://noname.oki-toki.net/api/operator/make_call?api_token=et&phone=380501111111&queue_id=1&skip_anketa=1" 
const url = new URL(
    "https://noname.oki-toki.net/api/operator/make_call"
);

let params = {
    "api_token": "et",
    "phone": "380501111111",
    "queue_id": "1",
    "skip_anketa": "1"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "POST",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "status": "success",
    "session_id": "123456"
}

HTTP Request

POST api/operator/make_call

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
phone required Номер телефона.
queue_id optional Номер очереди.
skip_anketa optional Не выводить на экран сценарий разговора.

Интеграции

Коллбэк для AmoCRM, который при апдейте сделки или контакта выбирает данные этого контакта и создаёт новое событие для интеграций.

Прописывается в AmoCRM, нужно указать api_token и plugin в URL, а остальные параметры запроса Amo подставит само. Пример параметров запроса от Amo - комментарий первой строкой в теле функции.

Для работы необходим плагин в интеграциях с прописанными параметрами авторизации, иначе не получится выбрать номер телефона по id лида.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/amo',
    [
        'query' => [
            'api_token' => 'est',
            'plugin' => '123 (смотреть в ссылке на редактирование плагина)',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/amo?api_token=est&plugin=123+%28%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C+%D0%B2+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5+%D0%BD%D0%B0+%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%B0%29" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/amo"
);

let params = {
    "api_token": "est",
    "plugin": "123 (\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u0441\u0441\u044b\u043b\u043a\u0435 \u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u0430)"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

HTTP Request

GET api/v1/amo

POST api/v1/amo

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
plugin required Id плагина.

Контакты

Удаление контакта из CRM


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://noname.oki-toki.net/api/v1/contacts/delete',
    [
        'headers' => [
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'api_token' => 'magnam',
            'contact_id' => 1,
            'fields' => '{“Имя”:”Иван”, “МТ”:”380501111111”}',
            'strict' => true,
            'final' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X POST \
    "https://noname.oki-toki.net/api/v1/contacts/delete" \
    -H "Content-Type: application/json" \
    -d '{"api_token":"magnam","contact_id":1,"fields":"{\u201c\u0418\u043c\u044f\u201d:\u201d\u0418\u0432\u0430\u043d\u201d, \u201c\u041c\u0422\u201d:\u201d380501111111\u201d}","strict":true,"final":false}'
const url = new URL(
    "https://noname.oki-toki.net/api/v1/contacts/delete"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "api_token": "magnam",
    "contact_id": 1,
    "fields": "{\u201c\u0418\u043c\u044f\u201d:\u201d\u0418\u0432\u0430\u043d\u201d, \u201c\u041c\u0422\u201d:\u201d380501111111\u201d}",
    "strict": true,
    "final": false
}

fetch(url, {
    method: "POST",
    headers: headers,
    body: body
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "contacts deleted",
    "status": "success",
    "contacts": "[58]"
}

HTTP Request

POST api/v1/contacts/delete

Body Parameters

Parameter Type Status Description
api_token required optional Апи токен пользователя
contact_id integer optional Номер контакта.
fields string optional Поля контакта, по которым удалять.
strict boolean optional Параметр, указывающий, проводить поиск по точному совпадению полей контакта или по вхождению
final boolean optional Параметр, указывающий, окончательное удаление без возможности восстановления

Выгрузка контактов из CRM

Фильтр на выборку контактов: поле=значение&поле=значение&поле=значение&поле=значение* ... значение - точное совпадение с заданным значением,

*значение* - поле содержит заданное значение,

*значение - заданное значение стоит в конце поля,

значение* - заданное значение стоит в начале поля,

значение может быть списком в формате списка [значение1,значение2,значение3,значение4]. Тогда будет найден контакт значение указанного поля которого есть в списке. В ответ возвращается json массив, содержащий найденные контакты. Количество контактов ограничено 1000 шт.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/contacts',
    [
        'query' => [
            'api_token' => 'molestiae',
            'Имя' => 'Иван',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/contacts?api_token=molestiae&%D0%98%D0%BC%D1%8F=%D0%98%D0%B2%D0%B0%D0%BD" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/contacts"
);

let params = {
    "api_token": "molestiae",
    "\u0418\u043c\u044f": "\u0418\u0432\u0430\u043d"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "id": 1,
    "Имя": "Иван",
    "МТ": "380222222222"
}

HTTP Request

GET api/v1/contacts

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
Имя optional Поле контакта.

Магазин

Полные данные о заказе(модуль SHOP)


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/shop/order/1',
    [
        'query' => [
            'api_token' => 'mollitia',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/shop/order/1?api_token=mollitia" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/shop/order/1"
);

let params = {
    "api_token": "mollitia"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "id": 12345,
    "order_datetime": "19.04.2012 17:57:28",
    "status_datetime": "19.04.2012 17:58:21",
    "status_id": 7,
    "status_name": "Отправлен",
    "price": "280.00",
    "weight": "3970.000",
    "current_discount": "0.00",
    "total_discount": "14.00",
    "card_discount": 0,
    "contact": [],
    "log": [
        {
            "status_datetime": "19.04.2012 17:57:28",
            "status_id": 1,
            "status_name": "Новый",
            "user_id": 298
        },
        {
            "status_datetime": "19.04.2012 17:58:21",
            "status_id": 7,
            "status_name": "Отправлен",
            "user_id": 298
        }
    ],
    "comments": [],
    "units": [
        {
            "datetime": "19.04.2012 17:57:35",
            "quantity": 1,
            "price": "99.00",
            "weight": "1440.000",
            "name": "Пицца: ",
            "desc": " корж, соус,бекон,лук,сыр,помидор,маслины",
            "artikul": "12345"
        },
        {
            "datetime": "19.04.2012 17:57:41",
            "quantity": 1,
            "price": "110.00",
            "weight": "1560.000",
            "name": "Пицца:",
            "desc": " корж, соус,салями,ветчина,курица,грибы,помидор,маслины",
            "artikul": "М 52443"
        },
        {
            "datetime": "19.04.2012 17:57:54",
            "quantity": 1,
            "price": "71.00",
            "weight": "970.000",
            "name": "Пицца: ",
            "desc": " корж, соус,ветчина,грибы,сыр,помидор,маслины",
            "artikul": "М 34443"
        }
    ]
}

HTTP Request

GET api/v1/shop/order/{id}

URL Parameters

Parameter Status Description
id required Номер заказа.

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя

Отчеты

Сводный отчет по очередям

Отчет, отображающий распределение времени пользователей по очередям в статусах Busy, Pcp, Preview, Waiting. Не позволяет увидеть распределение времени в статусах Away, Ready - для этого смотрите Сводный отчёт по статусам пользователей.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/sec/queue-status-summary',
    [
        'query' => [
            'api_token' => 'molestiae',
            'split_by' => 'none',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'user' => [
                '1',
            ],
            'queue' => [
                '3',
            ],
            'group' => 'none',
            'schedule' => '1',
            'schedule_inverse' => 'on',
            'rated_time' => 'on',
            'time_format' => 'default',
            'extended_status' => 'on',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/sec/queue-status-summary?api_token=molestiae&split_by=none&date_range=today&date=02.01.2020&user%5B0%5D=1&queue%5B0%5D=3&group=none&schedule=1&schedule_inverse=on&rated_time=on&time_format=default&extended_status=on" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/sec/queue-status-summary"
);

let params = {
    "api_token": "molestiae",
    "split_by": "none",
    "date_range": "today",
    "date": "02.01.2020",
    "user": [
        "1"
    ],
    "queue": [
        "3"
    ],
    "group": "none",
    "schedule": "1",
    "schedule_inverse": "on",
    "rated_time": "on",
    "time_format": "default",
    "extended_status": "on"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": {
        "15.01.2020": {
            "Оператор": {
                "Очередь": {
                    "busy_extended": {
                        "sum": "00:01:16",
                        "avg": "00:01:16",
                        "max": "00:01:16",
                        "cnt": 1
                    },
                    "status4": {
                        "sum": "00:00:05",
                        "avg": "00:00:05",
                        "max": "00:00:05",
                        "cnt": 1
                    },
                    "status5": {
                        "sum": "00:00:09",
                        "avg": "00:00:05",
                        "max": "00:00:07",
                        "cnt": 2
                    },
                    "total": 90,
                    "busy_total": 76
                }
            }
        }
    }
}

HTTP Request

GET api/v1/reports/sec/queue-status-summary

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
split_by optional Разбивка по очереди, пользователю или без разбивки. Значения: user, queue.
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
user.* optional Номера пользователей.
queue.* optional Номера очередей.
group optional Группировать. Значения: day, hour, month, none.
schedule optional Номер расписания.
schedule_inverse optional Учитывать только звонки, которые были в рабочее время. Значения: on.
rated_time optional Отображать тарифицированное время. Значения: on.
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
extended_status optional С подробностями. Значения: on.

Сводный отчет по статусам пользователям

Отчет, позволяющий увидеть как использовался рабочий день оператора. В качестве индикаторов жизнедеятельности используются статусы пользователей Busy, Away, Ready, Pcp, Preview, Waiting, Offline, N/A. Строится по данным из Журнала статусов, позволяет видеть начало и конец работы оператора, длительность и кол-во смен статусов.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/sec/user-status-summary',
    [
        'query' => [
            'api_token' => 'est',
            'split_by' => 'on',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'user' => [
                '1',
            ],
            'queue' => [
                '3',
            ],
            'group' => 'none',
            'schedule' => '1',
            'schedule_inverse' => 'on',
            'rated_time' => 'on',
            'time_format' => 'default',
            'extended_status' => 'on',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/sec/user-status-summary?api_token=est&split_by=on&date_range=today&date=02.01.2020&user%5B0%5D=1&queue%5B0%5D=3&group=none&schedule=1&schedule_inverse=on&rated_time=on&time_format=default&extended_status=on" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/sec/user-status-summary"
);

let params = {
    "api_token": "est",
    "split_by": "on",
    "date_range": "today",
    "date": "02.01.2020",
    "user": [
        "1"
    ],
    "queue": [
        "3"
    ],
    "group": "none",
    "schedule": "1",
    "schedule_inverse": "on",
    "rated_time": "on",
    "time_format": "default",
    "extended_status": "on"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": {
        "15.01.2020": {
            "Оператор": {
                "time": {
                    "started": "15.01.2020 14:22:45",
                    "stopped": "15.01.2020 14:23:22",
                    "period_from": "15.01.2020 13:31:31",
                    "period_to": "15.01.2020 14:31:31"
                },
                "status1": {
                    "sum": "00:00:31",
                    "avg": "00:00:15",
                    "max": "00:00:25",
                    "cnt": 2
                },
                "total": 31
            }
        }
    }
}

HTTP Request

GET api/v1/reports/sec/user-status-summary

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
split_by optional Разбивка по пользователям. Значения: on.
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
user.* optional Номера пользователей.
queue.* optional Номера очередей.
group optional Группировать. Значения: day, hour, month, none.
schedule optional Номер расписания.
schedule_inverse optional Учитывать только звонки, которые были в рабочее время. Значения: on.
rated_time optional Отображать тарифицированное время. Значения: on.
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
extended_status optional С подробностями. Значения: on.

Журнал звонков

Отображает детализацию звонков за выбранный период, кто позвонил, на какой номер и очередь, кто принял звонок, какие функции участвовали при звонке, время ожидания, время разговора, итог звонка и конечно же запись разговора. Используя фильтр, можно найти интересующие нас звонки с заданными параметрами.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/acd/calls-log',
    [
        'query' => [
            'api_token' => 'deleniti',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'search' => 'call',
            'dialer' => [
                '3',
            ],
            'queue' => [
                '3',
            ],
            'call_type' => [
                '3',
            ],
            'fname' => [
                'callback',
            ],
            'tag' => [
                'tag',
            ],
            'status' => '2',
            'ended' => '2',
            'result' => '200',
            'schedule' => '1',
            'schedule_inverse' => 'on',
            'ctime_from' => '20',
            'ctime_to' => '100',
            'atime_from' => '20',
            'atime_to' => '100',
            'anis' => '1234567,345345345',
            'import_ids' => '123,124',
            'add_contact' => 'on',
            'time_format' => 'default',
            'user' => [
                '1',
            ],
            'user_group' => [
                '1',
            ],
            'call_script' => '4',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/acd/calls-log?api_token=deleniti&date_range=today&date=02.01.2020&search=call&dialer%5B0%5D=3&queue%5B0%5D=3&call_type%5B0%5D=3&fname%5B0%5D=callback&tag%5B0%5D=tag&status=2&ended=2&result=200&schedule=1&schedule_inverse=on&ctime_from=20&ctime_to=100&atime_from=20&atime_to=100&anis=1234567%2C345345345&import_ids=123%2C124&add_contact=on&time_format=default&user%5B0%5D=1&user_group%5B0%5D=1&call_script=4" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/acd/calls-log"
);

let params = {
    "api_token": "deleniti",
    "date_range": "today",
    "date": "02.01.2020",
    "search": "call",
    "dialer": [
        "3"
    ],
    "queue": [
        "3"
    ],
    "call_type": [
        "3"
    ],
    "fname": [
        "callback"
    ],
    "tag": [
        "tag"
    ],
    "status": "2",
    "ended": "2",
    "result": "200",
    "schedule": "1",
    "schedule_inverse": "on",
    "ctime_from": "20",
    "ctime_to": "100",
    "atime_from": "20",
    "atime_to": "100",
    "anis": "1234567,345345345",
    "import_ids": "123,124",
    "add_contact": "on",
    "time_format": "default",
    "user": [
        "1"
    ],
    "user_group": [
        "1"
    ],
    "call_script": "4"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "329370145": {
        "0": {
            "contact_id": "71017",
            "call_type": "ВХ",
            "ani_phone": "380111111111",
            "dnis_phone": "22962",
            "dialer_id": "0",
            "task_id": null,
            "author": "",
            "queue": "104",
            "user_from": "0",
            "user_to": "22962",
            "ani": "380111111111",
            "dside": 2,
            "via": "",
            "dnis": "оператор",
            "auth": "",
            "fname": "Оператор",
            "fn": "operator",
            "status_class": "success",
            "ffstime": "15.01.2020 11:55:50.718788 GMT",
            "stime": "15.01.2020 13:55:50",
            "atime": "00:00:04",
            "ctime": "00:00:21",
            "reason_tip": "",
            "add_data": "",
            "answer_title": "(Успех)",
            "disconnect_reason": "200",
            "st": "15.01.2020 11:55:50"
        },
        "total": {
            "atime": "00:00:09",
            "ctime": "00:00:21",
            "str": "Общее время: 00:00:30, Время ожидания: 00:00:09, Время разговора: 00:00:21",
            "dside": "0",
            "all": "00:00:30"
        }
    }
}

HTTP Request

GET api/v1/reports/acd/calls-log

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
search optional Поиск по звонкам или функциям. Значения: call, func.
dialer.* optional Номера автодозвонов.
queue.* optional Номера очередей.
call_type.* optional Типы звонка. Значения: I(входящие), O(исходящие), C(колбек), P(предиктивные).
fname.* optional Функции. Значения: queue, operator .... .
tag.* optional Теги.
status optional Статус. Значения: 0(Успех), 1(Неудача), 3(В процессе), 2(Все).
ended optional Завершил звонок. Значения: 1(Оператор), 2(Клиент).
result optional Результат. Код завершения звонка
schedule optional Номер расписания.
schedule_inverse optional Учитывать только звонки, которые были в рабочее время. Значения: on.
ctime_from optional Длительность разговора больше чем, сек.
ctime_to optional Длительность разговора меньше чем, сек.
atime_from optional Длительность ожидания больше чем, сек.
atime_to optional Длительность ожидания меньше чем, сек.
anis optional Номер телефона или ID звонка.
import_ids optional Номер импорта.
add_contact optional Присоединить контакт. Значения: on.
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
user.* optional Номера пользователей.
user_group.* optional Номера групп пользователя.
call_script optional Номер сценария звонка.

Сводный отчет по звонкам

Статистический отчет по длительности ожидания и разговора с группировкой по типу звонков (ВХ, ИСХ, ПД, КБ и Мини-АТС), пользователям, очередям, результатам и другим параметрам. Необходимый инструмент для оценки качества работы операторов по параметрам совершенных, пропущенных звонков, средней длительности разговоров и т.п. Отчет имеет два вида: по функциям и по звонкам.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/acd/calls-summary',
    [
        'query' => [
            'api_token' => 'iure',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'type' => 'calls',
            'group' => 'day',
            'dialer' => [
                '3',
            ],
            'queue' => [
                '3',
            ],
            'fname' => [
                'callback',
            ],
            'tag' => [
                'tag',
            ],
            'ctime_from' => '20',
            'ctime_to' => '100',
            'atime_from' => '20',
            'atime_to' => '100',
            'import_ids' => '1234,1235',
            'schedule' => '1',
            'schedule_inverse' => 'on',
            'user' => [
                '1',
            ],
            'user_group' => [
                '1',
            ],
            'group_by_func' => 'on',
            'group_by_element_result' => 'on',
            'group_by_author' => 'on',
            'group_by_user' => 'on',
            'group_by_queue' => 'on',
            'group_by_code' => 'on',
            'split_by_hours' => 'on',
            'time_format' => 'default',
            'wint' => '15,60',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/acd/calls-summary?api_token=iure&date_range=today&date=02.01.2020&type=calls&group=day&dialer%5B0%5D=3&queue%5B0%5D=3&fname%5B0%5D=callback&tag%5B0%5D=tag&ctime_from=20&ctime_to=100&atime_from=20&atime_to=100&import_ids=1234%2C1235&schedule=1&schedule_inverse=on&user%5B0%5D=1&user_group%5B0%5D=1&group_by_func=on&group_by_element_result=on&group_by_author=on&group_by_user=on&group_by_queue=on&group_by_code=on&split_by_hours=on&time_format=default&wint=15%2C60" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/acd/calls-summary"
);

let params = {
    "api_token": "iure",
    "date_range": "today",
    "date": "02.01.2020",
    "type": "calls",
    "group": "day",
    "dialer": [
        "3"
    ],
    "queue": [
        "3"
    ],
    "fname": [
        "callback"
    ],
    "tag": [
        "tag"
    ],
    "ctime_from": "20",
    "ctime_to": "100",
    "atime_from": "20",
    "atime_to": "100",
    "import_ids": "1234,1235",
    "schedule": "1",
    "schedule_inverse": "on",
    "user": [
        "1"
    ],
    "user_group": [
        "1"
    ],
    "group_by_func": "on",
    "group_by_element_result": "on",
    "group_by_author": "on",
    "group_by_user": "on",
    "group_by_queue": "on",
    "group_by_code": "on",
    "split_by_hours": "on",
    "time_format": "default",
    "wint": "15,60"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": {
        "Входящие звонки": {
            "15.01.2020": {
                "1.Начало||Начало": {
                    "Клиент": {
                        "Старт": {
                            "lost": 0,
                            "good": 15,
                            "atime": "00:01:16",
                            "ctime": "00:00:00",
                            "max_atime": "00:00:06",
                            "max_ctime": "00:00:00",
                            "stime": "15.01.2020 14:01:10",
                            "etime": "15.01.2020 15:01:10",
                            "<15": 15,
                            "all_cnt": 15,
                            "av_ctime": "00:00:00",
                            "av_atime": "00:00:05"
                        }
                    }
                }
            }
        }
    }
}

HTTP Request

GET api/v1/reports/acd/calls-summary

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
type optional Тип отчета по звонкам или функциям. Значения: calls, funs.
group optional Группировка. Значения: day, month, none.
dialer.* optional Номера автодозвонов.
queue.* optional Номера очередей.
fname.* optional Функции. Значения: queue, operator .... .
tag.* optional Теги.
ctime_from optional Длительность разговора больше чем, сек.
ctime_to optional Длительность разговора меньше чем, сек.
atime_from optional Длительность ожидания больше чем, сек.
atime_to optional Длительность ожидания меньше чем, сек.
import_ids optional Номер импорта.
schedule optional Номер расписания.
schedule_inverse optional Учитывать только звонки, которые были в рабочее время. Значения: on.
user.* optional Номера пользователей.
user_group.* optional Номера групп пользователей.
group_by_func optional Группировать по функциям. Значения: on.
group_by_element_result optional Группировать по результату функции. Значения: on.
group_by_author optional Группировать по автору. Значения: on.
group_by_user optional Группировать по пользователям. Значения: on.
group_by_queue optional Группировать по очередям. Значения: on.
group_by_code optional Группировать по SIP результату звонка. Значения: on.
split_by_hours optional Группировать по часам. Значения: on.
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
wint optional Интервалы ожидания, сек.

Журнал статусов

Позволяет увидеть историю статусов пользователей колл-центра в операторском месте или последовательность смены статусов одного пользователя. Кроме статусов Busy, Away, Ready, Pcp, Preview, Waiting, Offline, N/A, отображает имена очередей, номера событий, бизнес-процессов и контактов с которыми работал оператор.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/sec/status-log',
    [
        'query' => [
            'api_token' => 'vel',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'schedule' => '1',
            'schedule_inverse' => 'on',
            'status' => '2',
            'time_format' => 'default',
            'user' => [
                '1',
            ],
            'queue' => [
                '3',
            ],
            'away_status' => '1',
            'rated_time' => 'on',
            'sid' => '123',
            'phone' => '12345',
            'pid' => '123',
            'comment' => 'Комментарий',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/sec/status-log?api_token=vel&date_range=today&date=02.01.2020&schedule=1&schedule_inverse=on&status=2&time_format=default&user%5B0%5D=1&queue%5B0%5D=3&away_status=1&rated_time=on&sid=123&phone=12345&pid=123&comment=%D0%9A%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D0%B9" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/sec/status-log"
);

let params = {
    "api_token": "vel",
    "date_range": "today",
    "date": "02.01.2020",
    "schedule": "1",
    "schedule_inverse": "on",
    "status": "2",
    "time_format": "default",
    "user": [
        "1"
    ],
    "queue": [
        "3"
    ],
    "away_status": "1",
    "rated_time": "on",
    "sid": "123",
    "phone": "12345",
    "pid": "123",
    "comment": "\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": [
        {
            "id": 544880330,
            "status_comment": null,
            "session_id": "",
            "bp_id": "",
            "duration": "00:02:50",
            "filtered": "",
            "user_name": "Иванов Иван",
            "user_id": 123,
            "start_time": "23.01.2020 10:00:00",
            "end_time": "23.01.2020 10:02:50",
            "status": "Отошел",
            "queue_name": ""
        }
    ],
    "total": {
        "duration": "00:24:01",
        "rated_time": "00:00:00"
    }
}

HTTP Request

GET api/v1/reports/sec/status-log

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
schedule optional Номер расписания.
schedule_inverse optional Учитывать только звонки, которые были в рабочее время. Значения: on.
status optional Статус. Значения: 0(Успех), 1(Неудача), 3(В процессе), 2(Все).
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
user.* optional Номера пользователей.
queue.* optional Номера очередей.
away_status optional Номер дополнительного статуса.
rated_time optional Отображать тарифицированное время. Значения: on.
sid optional ID звонка.
phone optional Номер телефона, который есть в задаче.
pid optional ID процесса.
comment optional Комментарий.

Список задач

Это список задач


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/dialer/tasks-result',
    [
        'query' => [
            'api_token' => 'minima',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'date_range2' => 'today',
            'date2' => '02.01.2020',
            'date_range_done' => 'today',
            'date_done' => '02.01.2020',
            'add_contact' => 'on',
            'add_data' => 'on',
            'dialer' => [
                '3',
            ],
            'split_by_dialer' => 'on',
            'user' => [
                '1',
            ],
            'results' => [
                '1',
            ],
            'src' => [
                '1',
            ],
            'num_results' => [
                '1',
            ],
            'task_id' => '3,5,6',
            'import_id' => '3345',
            'phone' => '1212312,12312345',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/dialer/tasks-result?api_token=minima&date_range=today&date=02.01.2020&date_range2=today&date2=02.01.2020&date_range_done=today&date_done=02.01.2020&add_contact=on&add_data=on&dialer%5B0%5D=3&split_by_dialer=on&user%5B0%5D=1&results%5B0%5D=1&src%5B0%5D=1&num_results%5B0%5D=1&task_id=3%2C5%2C6&import_id=3345&phone=1212312%2C12312345" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/dialer/tasks-result"
);

let params = {
    "api_token": "minima",
    "date_range": "today",
    "date": "02.01.2020",
    "date_range2": "today",
    "date2": "02.01.2020",
    "date_range_done": "today",
    "date_done": "02.01.2020",
    "add_contact": "on",
    "add_data": "on",
    "dialer": [
        "3"
    ],
    "split_by_dialer": "on",
    "user": [
        "1"
    ],
    "results": [
        "1"
    ],
    "src": [
        "1"
    ],
    "num_results": [
        "1"
    ],
    "task_id": "3,5,6",
    "import_id": "3345",
    "phone": "1212312,12312345"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "id": "96925",
    "src": "IP-АТС",
    "stime": "15.01.2020 13:33:51",
    "dtime": "15.01.2020 14:32:29",
    "last_phone_status": "Превышено число попыток",
    "last_phone_dtime": "15.01.2020 14:32:29",
    "task_status": "3",
    "phones": "380333333333",
    "tries": "1",
    "session_id": "331730926",
    "queue_id": "679",
    "detailes": "null",
    "region": "Europe\/Kiev",
    "contact_id": "0",
    "task_log": "{\"tz\": \"manual\", \"end_src\": \"1\", \"create_src\": 2, \"end_user_id\": \"24518\", \"end_session_id\": \"331730926\", \"create_session_id\": \"331729246\"}",
    "dlr_id": "1",
    "did": "1",
    "dialer": "Автодозвон",
    "descr": {
        "time_client": {
            "hint": "По API"
        }
    },
    "time_client": "Europe\/Kiev",
    "first_stime": "15.01.2020 11:33:51.447909 GMT",
    "first_status_dtime": "15.01.2020 12:32:29.869311 GMT",
    "add_data": false
}

HTTP Request

GET api/v1/reports/dialer/tasks-result

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, по времени планирования. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, время планирования.
date_range2 optional период, по время добавления. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date2 optional - дата, по времени добавления.
date_range_done optional период, по время обработки. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date_done optional - дата, по времени обработки.
add_contact optional Присоединить контакт. Значения: on.
add_data optional Присоединить данные. Значения: on.
dialer.* optional Номера автодозвонов.
split_by_dialer optional Разбить по автодозвонам. Значения: on.
user.* optional Номера пользователей.
results.* optional Статусы задачи.
src.* optional Источники. Значения 1(IP-АТС), 2(API), 3(Оператор), 4(Импорт).
num_results.* optional Результаты последней попытки.
task_id optional Номера задач.
import_id optional Номер импорта.
phone optional Номера телефонов.

Журнал SIP звонков

Детализация телефонных звонков, отображающая номера звонков, их направление, поставщиков и стоимость и длительность звонков. Используется для сверок с поставщиками и контроля правильности маршрутизации звонков.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/routing/calls-log-result',
    [
        'query' => [
            'api_token' => 'porro',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'ani' => '380991111111',
            'dnis' => '380991111111',
            'anis' => '122342,22345,6787865',
            'queue' => [
                '3',
            ],
            'call_type' => '3',
            'call_time' => '&gt;30',
            'time_format' => 'default',
            'internal' => 'on',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/routing/calls-log-result?api_token=porro&date_range=today&date=02.01.2020&ani=380991111111&dnis=380991111111&anis=122342%2C22345%2C6787865&queue%5B0%5D=3&call_type=3&call_time=%3E30&time_format=default&internal=on" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/routing/calls-log-result"
);

let params = {
    "api_token": "porro",
    "date_range": "today",
    "date": "02.01.2020",
    "ani": "380991111111",
    "dnis": "380991111111",
    "anis": "122342,22345,6787865",
    "queue": [
        "3"
    ],
    "call_type": "3",
    "call_time": ">30",
    "time_format": "default",
    "internal": "on"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": [
        {
            "id": 149871,
            "stime": "15.01.2020 14:46:37",
            "atime": null,
            "ctime": null,
            "etime": "15.01.2020 12:49:23.192 GMT",
            "session_id": 145767348,
            "orig_session_id": null,
            "queue_id": 104,
            "sip_code": 0,
            "route_id": 0,
            "post_id": 0,
            "call_time": "00:02:44",
            "price": "0.000",
            "call_type": "ВХ",
            "call_id": "b43bb00816471851ad091f5e19930399",
            "ip_from": "89.19.99.133",
            "ip_to": null,
            "node": "46.4.36.194",
            "ani": "380111111111",
            "dnis": "380222222222",
            "dest": "",
            "sid": 329370174,
            "pid": 20760,
            "cl_id1": 104,
            "client_name": "Очередь",
            "post_id1": null,
            "post_name": null,
            "comp_id1": null,
            "alert_time": "00:00:00",
            "filtered": "",
            "client": "Очередь",
            "post": "Нет данных",
            "post_summ": "0.00",
            "post_price": "0.000",
            "client_price": "0.000",
            "client_summ": "0.00"
        }
    ]
}

HTTP Request

GET api/v1/reports/routing/calls-log-result

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
ani optional А-номер.
dnis optional Б-номер.
anis optional ID звонка.
queue.* optional Номера очередей.
call_type optional Тип звонка. Значения: I(входящие), O(исходящие), C(колбек), P(предиктивные).
call_time optional Длительность разговора. В секундах. Например: =30, <60, >300
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
internal optional Показать internal. Значения: on.

Затраты на связь по поставщикам

Отчет, показывающий затраты на исходящую связь по поставщикам в произвольный период времени. Отображает поставщика и список очередей, которые послали на него трафик в сопровождении направлений, длительности, стоимости и параметров CTR, ASR, ACD.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/routing/suppliers-summary-result',
    [
        'query' => [
            'api_token' => 'velit',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'group' => 'day',
            'intervals' => 'on',
            'simple' => 'on',
            'call_time' => '&gt;30',
            'time_format' => 'default',
            'internal' => 'on',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/routing/suppliers-summary-result?api_token=velit&date_range=today&date=02.01.2020&group=day&intervals=on&simple=on&call_time=%3E30&time_format=default&internal=on" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/routing/suppliers-summary-result"
);

let params = {
    "api_token": "velit",
    "date_range": "today",
    "date": "02.01.2020",
    "group": "day",
    "intervals": "on",
    "simple": "on",
    "call_time": ">30",
    "time_format": "default",
    "internal": "on"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": {
        "Маршрут(Шлюз)": {
            "15.01.2020": {
                "Очередь": {
                    "380445": {
                        "0.050": {
                            "call_time": "00:02:26",
                            "post_summ": 0.12,
                            "ctr": 1,
                            "acd": 146,
                            "good_calls": 1,
                            "ctime": 146,
                            "asr": 100
                        }
                    }
                }
            }
        }
    }
}

HTTP Request

GET api/v1/reports/routing/suppliers-summary-result

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
group optional Группировка. Значения: day, month.
intervals optional Учитывать правила тарификации. Значения: on.
simple optional Без подробностей. Значения: on.
call_time optional Длительность разговора. В секундах. Например: =30, <60, >300
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
internal optional Показать internal. Значения: on.

Затраты на связь по очередям

Предоставляет данные о затратах на связь по очередям. Отображает поставщика, направление, длительность, стоимость, CTR, ASR, ACD для каждой очереди. Отличный инструмент контроля затрат для аутсорсинга.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/reports/routing/queues-summary-result',
    [
        'query' => [
            'api_token' => 'debitis',
            'date_range' => 'today',
            'date' => '02.01.2020',
            'group' => 'day',
            'intervals' => 'on',
            'client_id' => [
                '1',
            ],
            'simple' => 'on',
            'call_time' => '&gt;30',
            'time_format' => 'default',
            'internal' => 'on',
            'split' => 'on',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/reports/routing/queues-summary-result?api_token=debitis&date_range=today&date=02.01.2020&group=day&intervals=on&client_id%5B0%5D=1&simple=on&call_time=%3E30&time_format=default&internal=on&split=on" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/reports/routing/queues-summary-result"
);

let params = {
    "api_token": "debitis",
    "date_range": "today",
    "date": "02.01.2020",
    "group": "day",
    "intervals": "on",
    "client_id": [
        "1"
    ],
    "simple": "on",
    "call_time": ">30",
    "time_format": "default",
    "internal": "on",
    "split": "on"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "data": {
        "Очередь": {
            "15.01.2020": {
                "Маршрут(Шлюз)": {
                    "380445": {
                        "0.050": {
                            "call_time": "00:02:26",
                            "post_summ": 0.12,
                            "ctr": 1,
                            "acd": 146,
                            "good_calls": 1,
                            "ctime": 146,
                            "asr": 100
                        }
                    }
                }
            }
        }
    }
}

HTTP Request

GET api/v1/reports/routing/queues-summary-result

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
date_range optional период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month.
date optional - дата, за которую вернуть звонки.
group optional Группировка. Значения: day, month.
intervals optional Учитывать правила тарификации. Значения: on.
client_id.* optional Номера очередей.
simple optional Без подробностей. Значения: on.
call_time optional Длительность разговора. В секундах. Например: =30, <60, >300
time_format optional Формат времени. Значения: default(ЧЧ:ММ:СС), no_hours(МММ:СС), seconds(ССССС), minutes(МММ.мм).
internal optional Показать internal. Значения: on.
split optional Группировать по очередям. Значения: on.

Пользователи

Управление статусом пользователя

Номера статусов можно посмотреть тут https://noname.oki-toki.net/company/statuses


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/user/set_status',
    [
        'query' => [
            'api_token' => 'sit',
            'user_id' => '1',
            'status_id' => '1',
            'away_status_id' => '1',
            'status_comment' => 'Обед',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/user/set_status?api_token=sit&user_id=1&status_id=1&away_status_id=1&status_comment=%D0%9E%D0%B1%D0%B5%D0%B4" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/user/set_status"
);

let params = {
    "api_token": "sit",
    "user_id": "1",
    "status_id": "1",
    "away_status_id": "1",
    "status_comment": "\u041e\u0431\u0435\u0434"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "Status set",
    "status": "success"
}

HTTP Request

GET api/v1/user/set_status

POST api/v1/user/set_status

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
user_id required Номер пользователя.
status_id required Номер статуса.
away_status_id optional Номер дополнительного статуса.
status_comment optional Комментарий к статусу.

Списки

Проверка существования значения в списке

В ответ возвращается 1 если в списке. 0 - если нет.


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/lists/check',
    [
        'query' => [
            'api_token' => 'et',
            'list_id' => '1',
            'value' => '12345',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/lists/check?api_token=et&list_id=1&value=12345" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/lists/check"
);

let params = {
    "api_token": "et",
    "list_id": "1",
    "value": "12345"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

1

HTTP Request

GET api/v1/lists/check

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
list_id required Номер списка.
value required значение.

Добавление значения в список


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/lists/add',
    [
        'query' => [
            'api_token' => 'consequatur',
            'list_id' => '1',
            'values' => '12345',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/lists/add?api_token=consequatur&list_id=1&values=12345" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/lists/add"
);

let params = {
    "api_token": "consequatur",
    "list_id": "1",
    "values": "12345"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "values added",
    "status": "success"
}

HTTP Request

GET api/v1/lists/add

POST api/v1/lists/add

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
list_id required Номер списка.
values required значение или значения через запятую. максимум 10 значений.

Удаление значений из списка


Requires authentication

Example request:


$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://noname.oki-toki.net/api/v1/lists/delete',
    [
        'query' => [
            'api_token' => 'dolores',
            'list_id' => '1',
            'values' => '12345',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
    -G "https://noname.oki-toki.net/api/v1/lists/delete?api_token=dolores&list_id=1&values=12345" 
const url = new URL(
    "https://noname.oki-toki.net/api/v1/lists/delete"
);

let params = {
    "api_token": "dolores",
    "list_id": "1",
    "values": "12345"
};

Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

fetch(url, {
    method: "GET",
})
    .then(response => response.json())
    .then(json => console.log(json));

Example response (200):

{
    "success": "values deleted",
    "status": "success"
}

HTTP Request

GET api/v1/lists/delete

POST api/v1/lists/delete

Query Parameters

Parameter Status Description
api_token required Апи токен пользователя
list_id required Номер списка.
values required Значение или значения через запятую.