Info
Welcome to the generated API reference. Get Postman Collection
General
api/v1/dialers/create_sales_drive_task
Example request:
$client = new \GuzzleHttp\Client();
$response = $client->get('https://noname.oki-toki.net/api/v1/dialers/create_sales_drive_task');
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
-G "https://noname.oki-toki.net/api/v1/dialers/create_sales_drive_task"
const url = new URL(
"https://noname.oki-toki.net/api/v1/dialers/create_sales_drive_task"
);
fetch(url, {
method: "GET",
})
.then(response => response.json())
.then(json => console.log(json));
HTTP Request
GET api/v1/dialers/create_sales_drive_task
POST api/v1/dialers/create_sales_drive_task
api/v1/dialers/cancel_sales_drive_task
Example request:
$client = new \GuzzleHttp\Client();
$response = $client->get('https://noname.oki-toki.net/api/v1/dialers/cancel_sales_drive_task');
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
-G "https://noname.oki-toki.net/api/v1/dialers/cancel_sales_drive_task"
const url = new URL(
"https://noname.oki-toki.net/api/v1/dialers/cancel_sales_drive_task"
);
fetch(url, {
method: "GET",
})
.then(response => response.json())
.then(json => console.log(json));
HTTP Request
GET api/v1/dialers/cancel_sales_drive_task
POST api/v1/dialers/cancel_sales_drive_task
Автодозвон
Список автодозвонов
Возвращает автодозвоны компании со списком назначенных на них операторов
Requires authentication
Example request:
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://noname.oki-toki.net/api/v1/dialers/stat',
[
'query' => [
'api_token' => 'molestias',
'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=molestias&dialer_id=1"
const url = new URL(
"https://noname.oki-toki.net/api/v1/dialers/stat"
);
let params = {
"api_token": "molestias",
"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' => 'dolorum',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
-G "https://noname.oki-toki.net/api/v1/dialers/list?api_token=dolorum"
const url = new URL(
"https://noname.oki-toki.net/api/v1/dialers/list"
);
let params = {
"api_token": "dolorum"
};
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' => 'aut',
'dialer_id' => '1',
'phones' => '12345,122344',
'contact_id' => '1',
'bp_id' => '1',
'date' => '21.02.2017 12:00:00',
'import_id' => '1',
'region' => 'Europe/Kiev',
'ttl' => '3600',
'user_id' => '1',
'details' => '{“name”:”John”, “order”:”12”}',
'force_create' => '1',
'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=aut&dialer_id=1&phones=12345%2C122344&contact_id=1&bp_id=1&date=21.02.2017+12%3A00%3A00&import_id=1®ion=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=1&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": "aut",
"dialer_id": "1",
"phones": "12345,122344",
"contact_id": "1",
"bp_id": "1",
"date": "21.02.2017 12:00:00",
"import_id": "1",
"region": "Europe\/Kiev",
"ttl": "3600",
"user_id": "1",
"details": "{\u201cname\u201d:\u201dJohn\u201d, \u201corder\u201d:\u201d12\u201d}",
"force_create": "1",
"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 | Номер импорта. |
region |
optional | Регион в формате временной зоны. |
ttl |
optional | Время жизни задачи, в секундах. |
user_id |
optional | Номер пользователя на которого назначить задачу. Если указано -1, то задача будет назначена на текущего пользователя. |
details |
optional | json Подстрока с дополнительной информацией. |
force_create |
optional | В любом случае создавать задачу и отменять конфликтующие с ней 0 или 1. |
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' => 'et',
'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=et&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": "et",
"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' => 'ut',
'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=ut&dialer_id=1"
const url = new URL(
"https://noname.oki-toki.net/api/v1/dialers/clear_dialer"
);
let params = {
"api_token": "ut",
"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' => 'porro',
'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=porro&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": "porro",
"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' => 'ut',
'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=ut&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": "ut",
"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' => 'voluptas',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
-G "https://noname.oki-toki.net/api/v1/record/111222?api_token=voluptas"
const url = new URL(
"https://noname.oki-toki.net/api/v1/record/111222"
);
let params = {
"api_token": "voluptas"
};
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' => 'vel',
'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=vel&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": "vel",
"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' => 'labore',
'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=labore&session_id=123456"
const url = new URL(
"https://noname.oki-toki.net/api/v1/call/get_data"
);
let params = {
"api_token": "labore",
"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' => 'aut',
'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=aut&session_id=111222"
const url = new URL(
"https://noname.oki-toki.net/api/v1/record-transcript/get"
);
let params = {
"api_token": "aut",
"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": [
{
"channel": 1,
"text": "Алло",
"start_time": 3.81,
"end_time": 5.01
},
{
"channel": 2,
"text": "здравствуйте я из компании оки-токи",
"start_time": 10.68,
"end_time": 19.65
}
]
}
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' => 'animi',
'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=animi&session_id=111222"
const url = new URL(
"https://noname.oki-toki.net/api/v1/record-transcript/create"
);
let params = {
"api_token": "animi",
"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": [
{
"channel": 1,
"text": "Алло",
"start_time": 3.81,
"end_time": 5.01
},
{
"channel": 2,
"text": "здравствуйте я из компании оки-токи",
"start_time": 10.68,
"end_time": 19.65
}
]
}
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' => 'libero',
'phone' => '380501111111',
'queue_id' => '1',
'user_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=libero&phone=380501111111&queue_id=1&user_id=1&skip_anketa=1"
const url = new URL(
"https://noname.oki-toki.net/api/operator/make_call"
);
let params = {
"api_token": "libero",
"phone": "380501111111",
"queue_id": "1",
"user_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 | Номер очереди. |
user_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' => 'sit',
'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=sit&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": "sit",
"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' => 'iure',
'contact_id' => 1,
'fields' => '{“Имя”:”Иван”, “МТ”:”380501111111”}',
'strict' => false,
'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":"iure","contact_id":1,"fields":"{\u201c\u0418\u043c\u044f\u201d:\u201d\u0418\u0432\u0430\u043d\u201d, \u201c\u041c\u0422\u201d:\u201d380501111111\u201d}","strict":false,"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": "iure",
"contact_id": 1,
"fields": "{\u201c\u0418\u043c\u044f\u201d:\u201d\u0418\u0432\u0430\u043d\u201d, \u201c\u041c\u0422\u201d:\u201d380501111111\u201d}",
"strict": false,
"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' => 'vitae',
'Имя' => 'Иван',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
-G "https://noname.oki-toki.net/api/v1/contacts?api_token=vitae&%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": "vitae",
"\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' => 'veniam',
],
]
);
$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=veniam"
const url = new URL(
"https://noname.oki-toki.net/api/v1/shop/order/1"
);
let params = {
"api_token": "veniam"
};
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' => 'praesentium',
'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=praesentium&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": "praesentium",
"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' => 'quia',
'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=quia&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": "quia",
"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' => 'est',
'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',
'add_answers' => '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=est&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&add_answers=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": "est",
"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",
"add_answers": "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. |
add_answers |
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' => 'omnis',
'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=omnis&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": "omnis",
"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 | Интервалы ожидания, сек. |
Call tracking
Отображает статистику уникальных входящих номеров, попыток дозвона, длительности ожидания и разговора в разрезе номеров для входящих звонков (входящих авторизаций).
Requires authentication
Example request:
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://noname.oki-toki.net/api/v1/reports/acd/calls-tracking',
[
'query' => [
'api_token' => 'voluptate',
'date_range' => 'today',
'queue' => [
'3',
],
'group' => 'day',
'simple_view' => 'on',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
curl -X GET \
-G "https://noname.oki-toki.net/api/v1/reports/acd/calls-tracking?api_token=voluptate&date_range=today&queue%5B0%5D=3&group=day&simple_view=on"
const url = new URL(
"https://noname.oki-toki.net/api/v1/reports/acd/calls-tracking"
);
let params = {
"api_token": "voluptate",
"date_range": "today",
"queue": [
"3"
],
"group": "day",
"simple_view": "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": {
"19.01.2020": {
"Очередь": {
"Авторизация": {
"success_calls": 3,
"failed_calls": 12,
"unique_numbers": 4,
"wait_time": "01:01:16",
"connect_time": "04:30:00",
"redirections": 3,
"total_calls": 15,
"auth_name": "Имя авторизации"
}
}
}
}
}
HTTP Request
GET api/v1/reports/acd/calls-tracking
Query Parameters
Parameter | Status | Description |
---|---|---|
api_token |
required | Апи токен пользователя |
date_range |
optional | период, за который вернуть данные. Значения: last_hour, today, yesterday, this_week, prev_week, this_month, prev_month. |
queue.* |
optional | Номера очередей. |
group |
optional | Группировка. Значения: hour, day, month, none. |
simple_view |
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/status-log',
[
'query' => [
'api_token' => 'voluptate',
'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=voluptate&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": "voluptate",
"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' => 'facilis',
'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=facilis&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": "facilis",
"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' => 'sint',
'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',
],
]
);
$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=sint&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": "sint",
"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' => 'consequatur',
'date_range' => 'today',
'date' => '02.01.2020',
'group' => 'day',
'intervals' => 'on',
'simple' => 'on',
'call_time' => '>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=consequatur&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": "consequatur",
"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' => 'dicta',
'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',
],
]
);
$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=dicta&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": "dicta",
"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' => 'quia',
'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=quia&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": "quia",
"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' => 'ratione',
'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=ratione&list_id=1&value=12345"
const url = new URL(
"https://noname.oki-toki.net/api/v1/lists/check"
);
let params = {
"api_token": "ratione",
"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' => 'est',
'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=est&list_id=1&values=12345"
const url = new URL(
"https://noname.oki-toki.net/api/v1/lists/add"
);
let params = {
"api_token": "est",
"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' => 'incidunt',
'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=incidunt&list_id=1&values=12345"
const url = new URL(
"https://noname.oki-toki.net/api/v1/lists/delete"
);
let params = {
"api_token": "incidunt",
"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 | Значение или значения через запятую. |